About putting values into database

51 views
Skip to first unread message

Andrea Fae'

unread,
Aug 21, 2020, 10:33:54 AM8/21/20
to web2py-users
Hello, I'm about 1 year that i don't program in web2py and I don't remember nothing!

So, easy question

I have this table (I created esplicitally the field is_active, created_on, created_by, do not ask me why...it's another question...)

db.define_table('ticket',
                Field('asset', 'reference asset'),
                Field('fisso', 'boolean'),
                Field('anomalia', type='string', requires=[IS_NOT_EMPTY(),IS_LENGTH(200)], widget=SQLFORM.widgets.text.widget),
                Field('chiuso', 'boolean'),
                Field('risoluzione', type='string', requires=[IS_LENGTH(100)], widget=SQLFORM.widgets.text.widget, default='In attesa'),
                Field('is_active', 'boolean', default=True),
                Field('created_on', 'datetime', default=request.now),
                Field('created_by', 'integer', default=auth.user_id),
                Field('modified_on', 'datetime', update=request.now),
                Field('modified_by', 'integer', update=auth.user_id),
                singular="Ticket", plural="Ticket",migrate='ticket.table',
                format='%(asset)s')


And I have this function

# crea il ticket per l'asset specificato
@auth.requires_login()
def ticket():
    import datetime
    # recupero l'asset di cui fare il ticket
    asset = db.asset(request.args(0)) or redirect(URL('sedi'))

    #verifico se l'asset è già oggetto di un ticket aperto - se lo è impedisco l'apertura del ticket
    query = (db.ticket.asset == asset) & (db.ticket.chiuso == False)
    row = db(query).select().first()
    if (row != None):
        session.flash = 'Esiste un ticket aperto per questo asset: non è possibile aprire un ulteriore ticket'
        redirect(URL('index'))

    db.ticket.created_by.readable=db.ticket.created_by.writable=True
    db.ticket.created_on.readable=db.ticket.created_on.writable=True
    db.ticket.asset.default=asset.id
    db.ticket.asset.writable=db.ticket.asset.readable=False
    db.ticket.fisso.default=True
    db.ticket.chiuso.default=db.ticket.chiuso.readable=db.ticket.chiuso.writable=False
    db.ticket.risoluzione.readable=db.ticket.risoluzione.writable=False
    db.ticket.risoluzione.default="In attesa"
    # db.ticket.is_active.default=True
    # db.ticket.created_on.default=request.now
    # recupero il tipo di asset del ticket
    print request.now, auth.user_id
    db.ticket.created_by.default = auth.user_id
    db.ticket.created_on.default = request.now
    tipo_asset = asset.tipo
    # definisco la landing_page
    landing_page = 'lista_ticket_asset/' + tipo_asset
    # print landing_page
    # se il form va a buon fine allora va a finire nella lista dei ticket aperti di quel tipo asset
    form = crud.create(db.ticket, next=landing_page, onaccept=lambda form,asset=asset:send_email_ticket(form,asset), message='ticket creato')
    # form = crud.create(db.ticket, next='lista_ticket',onaccept=lambda form,asset=asset:send_email_ticket(form,asset))
    #form.add_button("Annulla",URL('sedi'))
    # form[0][-1][1].append(TAG.BUTTON('Annulla', _class='btn btn-default', _type='Cancel',_onclick="document.location='%s';return false" % URL('lista_ticket_asset',args=tipo_asset)))
    form[0][-1][1].append(TAG.BUTTON('Annulla', _class='btn btn-default', _type='Cancel',_onclick="document.location='%s';return false" % URL('index')))
    db.ticket.chiuso.readable=db.ticket.chiuso.writable=True
    db.ticket.risoluzione.readable=db.ticket.risoluzione.writable=True
    
    return dict(form=form, asset=asset)

When I create a "ticket" I'm not able to put into fields created_by and created_on the right information

This is the result

What is wrong? How to correct?
Thank  you

Dave S

unread,
Aug 29, 2020, 4:55:42 AM8/29/20
to web2py-users


On Friday, August 21, 2020 at 7:33:54 AM UTC-7, Andrea Fae' wrote:
 
[...]
What is wrong? How to correct?
Thank  you

 I don't know.  I don't use crud(), which seems to never have been more than experimental and has been deprecated for several years.  I use FORM() and SQLFORM().  I'm not sure there are many here with crud() experience, so I'm not sure who to tell you to turn to.

I take it the line illustrating the wrong results is from appadmin.  Can you fill out a new entry using appadmin's "New" button?  Does that get the created_on and created_by fields correct?  When you display your form, does it show the correct defaults in each field?

/dps

Andrea Fae'

unread,
Aug 31, 2020, 7:03:54 AM8/31/20
to web2py-users
thank you for your suggestions. I will try, and eventually. I will inform.
thanks
Reply all
Reply to author
Forward
0 new messages