示例#1
0
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)
示例#2
0
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)
示例#4
0
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)