4 | | Simplified: |
5 | | {{{ |
6 | | db.define_table('cr_shelter', |
7 | | SQLField('modified_on','datetime',default=now), |
8 | | SQLField('uuid',length=64,default=uuid.uuid4()), |
9 | | SQLField('name')) |
10 | | db.cr_shelter.represent=lambda table:shn_list_item(table,resource='shelter',action='display') |
11 | | }}} |
12 | | |
13 | | == Controller == |
14 | | {{{ |
15 | | # RESTful controller function |
16 | | # Anonymous users can Read |
17 | | # Authentication required for Create/Update/Delete |
18 | | def shelter(): |
19 | | resource='shelter' |
| 4 | {{{ |
| 5 | def shn_crud_strings_lookup(resource): |
| 6 | "Look up CRUD strings for a given resource." |
| 7 | if resource=='shelter': |
| 8 | return Storage(title_create=T('Add Shelter'), |
| 9 | title_display=T('Organisation Details'), |
| 10 | title_list=T('List Shelters'), |
| 11 | title_update=T('Edit Shelter'), |
| 12 | subtitle_list=T('Shelters'), |
| 13 | subtitle_create=T('Add New Shelter'), |
| 14 | label_list_button=T('List Shelters'), |
| 15 | label_create_button=T('Add Shelter'), |
| 16 | msg_record_created=T('Shelter added'), |
| 17 | msg_record_modified=T('Shelter updated'), |
| 18 | msg_record_deleted=T('Shelter deleted'), |
| 19 | msg_list_empty=T('No Shelters currently registered')) |
| 20 | else: |
| 21 | # Undefined Resource! |
| 22 | return |
| 23 | |
| 24 | def shn_rest_controller(module,resource): |
| 25 | """ |
| 26 | RESTful controller function. |
| 27 | |
| 28 | Anonymous users can Read. |
| 29 | Authentication required for Create/Update/Delete. |
| 30 | |
| 31 | ToDo: |
| 32 | Alternate Representations |
| 33 | Search method |
| 34 | Customisable Security Policy |
| 35 | """ |
| 36 | |
21 | | if request.args: |
| 38 | |
| 39 | crud_strings=shn_crud_strings_lookup(resource) |
| 40 | |
| 41 | if len(request.args)==0: |
| 42 | # No arguments => default to list (or list_create if logged_in) |
| 43 | list=t2.itemize(table) |
| 44 | if list=="No data": |
| 45 | list=crud_strings.msg_list_empty |
| 46 | title=crud_strings.title_list |
| 47 | subtitle=crud_strings.subtitle_list |
| 48 | if t2.logged_in: |
| 49 | form=t2.create(table) |
| 50 | response.view='list_create.html' |
| 51 | addtitle=crud_strings.subtitle_create |
| 52 | return dict(module_name=module_name,modules=modules,options=options,list=list,form=form,title=title,subtitle=subtitle,addtitle=addtitle) |
| 53 | else: |
| 54 | add_btn=A(crud_strings.label_create_button,_href=t2.action(resource,'create')) |
| 55 | response.view='list.html' |
| 56 | return dict(module_name=module_name,modules=modules,options=options,list=list,title=title,subtitle=subtitle,add_btn=add_btn) |
| 57 | |
| 58 | else: |
63 | | # Invalid! |
64 | | return |
65 | | else: |
66 | | # No arguments => default to list |
67 | | list=t2.itemize(table) |
68 | | if list=="No data": |
69 | | list="No Shelters currently registered." |
70 | | title=T('List Shelters') |
71 | | subtitle=T('Shelters') |
72 | | if t2.logged_in: |
73 | | form=t2.create(table) |
74 | | response.view='list_create.html' |
75 | | addtitle=T('Add New Shelter') |
76 | | return dict(module_name=module_name,modules=modules,options=options,list=list,form=form,title=title,subtitle=subtitle,addtitle=addtitle) |
77 | | else: |
78 | | add_btn=A(T("Add Shelter"),_href=t2.action(resource,'create')) |
79 | | response.view='list.html' |
80 | | return dict(module_name=module_name,modules=modules,options=options,list=list,title=title,subtitle=subtitle,add_btn=add_btn) |
| 100 | # Unsupported method! |
| 101 | t2.redirect(resource) |
| 102 | }}} |
| 103 | |
| 104 | Simplified module table: |
| 105 | {{{ |
| 106 | db.define_table('cr_shelter', |
| 107 | SQLField('modified_on','datetime',default=now), |
| 108 | SQLField('uuid',length=64,default=uuid.uuid4()), |
| 109 | SQLField('name')) |
| 110 | db.cr_shelter.represent=lambda table:shn_list_item(table,resource='shelter',action='display') |
| 111 | }}} |
| 112 | |
| 113 | == Controller == |
| 114 | {{{ |
| 115 | def shelter(): |
| 116 | "RESTful CRUD controller" |
| 117 | return shn_rest_controller(module,'shelter') |