Changes between Version 26 and Version 27 of BluePrintRESTImplementation
- Timestamp:
- 01/10/09 21:25:23 (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
BluePrintRESTImplementation
v26 v27 50 50 JSON 51 51 - read-only for now 52 CSV (useful for synchronization) 53 - read-only for now 52 54 53 55 ToDo: 54 56 Alternate Representations 55 57 JSON create/update 56 SMS,CSV,XML,PDF 58 CSV create/update 59 SMS,XML,PDF 57 60 Search method 58 61 Customisable Security Policy … … 60 63 61 64 table=db['%s_%s' % (module,resource)] 62 crud_strings=shn_crud_strings_lookup(resource) 65 if resource=='setting': 66 crud_strings=shn_crud_strings_lookup(resource) 67 else: 68 crud_strings=shn_crud_strings_lookup(table) 63 69 64 70 # Which representation should output be in? … … 70 76 71 77 if len(request.args)==0: 72 # No arguments => default to list (or list_create if logged_in) 78 # No arguments => default to List (or list_create if logged_in) 79 if session.s3.audit_read: 80 db.s3_audit.insert( 81 person=t2.person_id, 82 operation='list', 83 module=request.controller, 84 resource=resource, 85 old_value='', 86 new_value='' 87 ) 73 88 if representation=="html": 74 89 list=t2.itemize(table) … … 79 94 if t2.logged_in: 80 95 form=t2.create(table) 81 response.view='list_create.html' 96 custom_view='%s_list_create.html' % resource 97 _custom_view=os.path.join(request.folder,'views',module,custom_view) 98 if os.path.exists(_custom_view): 99 response.view=module+'/'+custom_view 100 else: 101 response.view='list_create.html' 82 102 addtitle=crud_strings.subtitle_create 83 103 return dict(module_name=module_name,modules=modules,options=options,list=list,form=form,title=title,subtitle=subtitle,addtitle=addtitle) 84 104 else: 85 add_btn=A(crud_strings.label_create_button,_href=t2.action(resource,'create')) 86 response.view='list.html' 105 add_btn=A(crud_strings.label_create_button,_href=t2.action(resource,'create'),_id='add-btn') 106 custom_view='%s_list.html' % resource 107 _custom_view=os.path.join(request.folder,'views',module,custom_view) 108 if os.path.exists(_custom_view): 109 response.view=module+'/'+custom_view 110 else: 111 response.view='list.html' 87 112 return dict(module_name=module_name,modules=modules,options=options,list=list,title=title,subtitle=subtitle,add_btn=add_btn) 88 113 elif representation=="plain": … … 94 119 response.view='plain.html' 95 120 return dict(item=list) 121 elif representation=="csv": 122 import gluon.contenttype 123 response.headers['Content-Type']=gluon.contenttype.contenttype('.csv') 124 query=db['%s' % table].id>0 125 response.headers['Content-disposition']="attachment; filename=%s_%s_list.csv" % (request.env.server_name,resource) 126 return str(db(query).select()) 96 127 else: 97 128 session.error=T("Unsupported format!") … … 100 131 method=str.lower(request.args[0]) 101 132 if request.args[0].isdigit(): 102 # 1st argument is ID not method => display. 133 # 1st argument is ID not method => Display. 134 if session.s3.audit_read: 135 db.s3_audit.insert( 136 person=t2.person_id, 137 operation='read', 138 representation=representation, 139 module=request.controller, 140 resource=resource, 141 record=t2.id, 142 old_value='', 143 new_value='' 144 ) 103 145 if representation=="html": 104 146 item=t2.display(table) 105 response.view='display.html' 147 custom_view='%s_display.html' % resource 148 _custom_view=os.path.join(request.folder,'views',module,custom_view) 149 if os.path.exists(_custom_view): 150 response.view=module+'/'+custom_view 151 else: 152 response.view='display.html' 106 153 title=crud_strings.title_display 107 edit=A(T("Edit"),_href=t2.action(resource,['update',t2.id]) )108 delete=A(T("Delete"),_href=t2.action(resource,['delete',t2.id]) )109 list_btn=A(crud_strings.label_list_button,_href=t2.action(resource) )154 edit=A(T("Edit"),_href=t2.action(resource,['update',t2.id]),_id='edit-btn') 155 delete=A(T("Delete"),_href=t2.action(resource,['delete',t2.id]),_id='delete-btn') 156 list_btn=A(crud_strings.label_list_button,_href=t2.action(resource),_id='list-btn') 110 157 return dict(module_name=module_name,modules=modules,options=options,item=item,title=title,edit=edit,delete=delete,list_btn=list_btn) 111 158 elif representation=="plain": … … 117 164 response.view='plain.html' 118 165 return dict(item=item) 166 elif representation=="csv": 167 import gluon.contenttype 168 response.headers['Content-Type']=gluon.contenttype.contenttype('.csv') 169 query=db['%s' % table].id==t2.id 170 response.headers['Content-disposition']="attachment; filename=%s_%s_%d.csv" % (request.env.server_name,resource,t2.id) 171 return str(db(query).select()) 172 elif representation=="rss": 173 #if request.args and request.args[0] in settings.rss_procedures: 174 # feed=eval('%s(*request.args[1:],**dict(request.vars))'%request.args[0]) 175 #else: 176 # t2._error() 177 #import gluon.contrib.rss2 as rss2 178 #rss = rss2.RSS2( 179 # title=feed['title'], 180 # link = feed['link'], 181 # description = feed['description'], 182 # lastBuildDate = feed['created_on'], 183 # items = [ 184 # rss2.RSSItem( 185 # title = entry['title'], 186 # link = entry['link'], 187 # description = entry['description'], 188 # pubDate = entry['created_on']) for entry in feed['entries']] 189 # ) 190 #response.headers['Content-Type']='application/rss+xml' 191 #return rss2.dumps(rss) 192 response.view='plain.html' 193 return 119 194 else: 120 195 session.error=T("Unsupported format!") … … 123 198 if method=="create": 124 199 if t2.logged_in: 200 if session.s3.audit_write: 201 audit_id=db.s3_audit.insert( 202 person=t2.person_id, 203 operation='create', 204 representation=representation, 205 module=request.controller, 206 resource=resource, 207 record=t2.id, 208 old_value='', 209 new_value='' 210 ) 125 211 if representation=="html": 126 212 t2.messages.record_created=crud_strings.msg_record_created 127 213 form=t2.create(table) 128 response.view='create.html' 214 custom_view='%s_create.html' % resource 215 _custom_view=os.path.join(request.folder,'views',module,custom_view) 216 if os.path.exists(_custom_view): 217 response.view=module+'/'+custom_view 218 else: 219 response.view='create.html' 129 220 title=crud_strings.title_create 130 list_btn=A(crud_strings.label_list_button,_href=t2.action(resource) )221 list_btn=A(crud_strings.label_list_button,_href=t2.action(resource),_id='list-btn') 131 222 return dict(module_name=module_name,modules=modules,options=options,form=form,title=title,list_btn=list_btn) 132 223 elif representation=="plain": … … 148 239 elif method=="update": 149 240 if t2.logged_in: 241 if session.s3.audit_write: 242 old_value = [] 243 _old_value=db(db['%s' % table].id==t2.id).select()[0] 244 for field in _old_value: 245 old_value.append(field+':'+str(_old_value[field])) 246 audit_id=db.s3_audit.insert( 247 person=t2.person_id, 248 operation='update', 249 representation=representation, 250 module=request.controller, 251 resource=resource, 252 record=t2.id, 253 old_value=old_value, 254 new_value='' 255 ) 150 256 if representation=="html": 151 257 t2.messages.record_modified=crud_strings.msg_record_modified 152 258 form=t2.update(table,deletable=False) 153 response.view='update.html' 259 custom_view='%s_update.html' % resource 260 _custom_view=os.path.join(request.folder,'views',module,custom_view) 261 if os.path.exists(_custom_view): 262 response.view=module+'/'+custom_view 263 else: 264 response.view='update.html' 154 265 title=crud_strings.title_update 155 list_btn=A(crud_strings.label_list_button,_href=t2.action(resource) )266 list_btn=A(crud_strings.label_list_button,_href=t2.action(resource),_id='list-btn') 156 267 return dict(module_name=module_name,modules=modules,options=options,form=form,title=title,list_btn=list_btn) 157 268 elif representation=="plain": … … 171 282 elif method=="delete": 172 283 if t2.logged_in: 284 if session.s3.audit_write: 285 old_value = [] 286 _old_value=db(db['%s' % table].id==t2.id).select()[0] 287 for field in _old_value: 288 old_value.append(field+':'+str(_old_value[field])) 289 db.s3_audit.insert( 290 person=t2.person_id, 291 operation='delete', 292 representation=representation, 293 module=request.controller, 294 resource=resource, 295 record=t2.id, 296 old_value=old_value, 297 new_value='' 298 ) 173 299 t2.messages.record_deleted=crud_strings.msg_record_deleted 174 300 t2.delete(table,next=resource)