def crud(): from gluon.tools import Crud crud = Crud(db) table = request.args(0) operation = request.args(1) record_id = request.args(2) request.vars._formname = table request.vars.id = record_id request.post_vars = request.vars """ For update/delete calls, validate user ownership of the records """ if operation == 'read': if table == 'candidate_rating': #TODO: dont use request vars directly data = db((db.candidate_rating.candidateId == request.vars.candidateId) & ( db.candidate_rating.ratingTagId == request.vars.ratingTagId)).select().first().as_dict() else: data = dict(**crud.read(table, record_id)) return data if operation == 'create': #temporary for testing form = SQLFORM(db[table], fields=form_fields(table, request)) if form.process(session=None, formname=table).accepted: result = {'errors': {}} else: result = {'errors': form.errors} if operation == 'update': if table == 'candidate_rating': #TODO: fix later record = db[table]((db.candidate_rating.candidateId == request.vars.candidateId) & ( db.candidate_rating.ratingTagId == request.vars.ratingTagId)) else: record = db[table](record_id) form = SQLFORM(db[table], record=record, fields=form_fields(table, request)) if form.process(session=None, formname=table).accepted: result = {'errors': {}} else: result = {'errors': form.errors} if operation == 'delete': record = db[table](record_id) deletable = table not in ("candidate", "candidate_rating") # candidate_rating is never deleted, only set to 0 if deletable and record: db(db[table].id == record.id).delete() result = {'errors': {}} else: result = {'errors': {'record': "Can't delete this record."}} return dict(**result)
def messages(): db = current.db auth = current.auth request = current.request crud = Crud(db) crud.settings.formstyle = 'table3cols' crud.settings.keepvalues = True crud.messages.submit_button = '送信' crud.messages.delete_label = '削除する' crud.messages.record_created = 'メッセージを作成しました' crud.messages.record_updated = 'メッセージを更新しました' crud.messages.record_deleted = '削除しました' crud.messages.create_log = 'Message Record %(id)s created' crud.messages.update_log = 'Message Record %(id)s updated' crud.settings.create_next = URL('messages') crud.settings.download_url = URL('download') crud.settings.create_onaccept = give_create_message_permission crud.settings.update_ondelete = remove_message_permission button = A(BUTTON('リストへ戻る'), _href=URL('messages')) db.messages.to_group.represent = show_to_group db.messages.to_group.requires = IS_IN_SET(get_to_group_list(), zero=None) db.messages.created_by.label = '作成者' db.messages.created_by.readable = True if (request.args(0) == 'read'): crud.settings.auth = auth if auth.has_permission('update', db.messages, request.args(1)): button += A(BUTTON('編集する'), _href=URL('messages/update', request.args(1))) return dict(form=crud.read(db.messages, request.args(1)), button=button) if (request.args(0) == 'new'): return dict(form=crud.create(db.messages), button=button) if (request.args(0) == 'update'): crud.settings.auth = auth db.messages.to_group.writable = False return dict(form=crud.update(db.messages, request.args(1), deletable=True), button=button) query = auth.accessible_query('read', db.messages, auth.user.id) db.messages.title.represent = lambda title, row: A( title, _href=URL(args=('read', row.id))) db.messages.id.represent = lambda id, row: '' form = crud.select(db.messages, query=query, fields=['title', 'created_by', 'modified_on', 'id'], orderby=~db.messages.modified_on, headers={ 'messages.title': '件名', 'messages.created_by': db.messages.created_by.label, 'messages.modified_on': '更新時刻', 'messages.id': '' }) return dict(form=form, button=A(BUTTON('新規作成'), _href=URL('messages/new')))
def crudeGeral(): from gluon.tools import Crud crud = Crud(db) form = crud.create(db.client) id=1 form2 = crud.read(db.client, id) form3 = crud.update(db.client, id) form4 = crud.search(db.client) #form5 = SQLFORM(db.client, myrecord).process(onsuccess=auth.archive) #form5 = crud.update(db.mytable, myrecord, onaccept=auth.archive) return dict(form=form,form2=form2,form3=form3,form4=form4)
def crud(): tablename = request.args(0) action = request.args(1) event_id = request.get_vars['eid'] person_id = request.get_vars['pid'] record_id = request.get_vars['id'] if session.crud and session.crud.return_page: return_page = URL(session.crud.return_page) elif tablename == 'request': return_page = URL('requests') else: return_page = URL('table/' + tablename) crud = Crud(shotdb) crud.settings.auth = auth # ensures access control via permissions crud.settings.controller = 'staff' crud.settings.create_next = return_page crud.settings.update_next = return_page crud.settings.update_deletable = True crud.settings.showid = True if session.crud and session.crud.fix_ref_id: for ref_table, ref_id in session.crud.fix_ref_id.iteritems(): if ref_id > 0 and ref_table in shotdb[tablename]: shotdb[tablename][ref_table].default = ref_id shotdb[tablename][ref_table].writable = False # add event filter to drop down selectors if event_id != None and event_id > 0: if tablename == 'help': shotdb.help.shift.requires = IS_IN_DB(shotdb(shotdb.shift.event == event_id), 'shift.id', '%(activity)s, %(day)s, %(time)s') elif tablename == 'bring': shotdb.bring.donation.requires = IS_IN_DB(shotdb(shotdb.donation.event == event_id), 'donation.id', '%(item)s') if tablename == 'person': crud.settings.create_onvalidation = __create_person_onvalidation crud.settings.update_onvalidation = __update_person_onvalidation crud.settings.update_onaccept = __update_person_onaccept crud.settings.update_ondelete = __update_person_ondelete shotdb.person.code.writable = False shotdb.person.verified.writable = False shotdb.person.data_use_agreed.writable = False crud.messages.record_created = None else: # default flash messages crud.messages.record_created = None crud.messages.record_updated = None crud.messages.record_deleted = 'Der Datenbankeintrag wurde gelöscht.' if(action == 'add'): if person_id: shotdb[tablename]['person'].default = person_id shotdb[tablename]['person'].writable = False crud_response = crud.create(tablename) elif(action == 'edit' and record_id != None): crud_response = crud.update(tablename, record_id) elif(action == 'view' and record_id != None): crud.settings.formstyle='divs' crud_response = crud.read(tablename, record_id) else: crud_response = 'Nothing selected!' return dict(crud_response = crud_response, action = action, return_page = return_page)