auth.signature not working

78 views
Skip to first unread message

António Ramos

unread,
Feb 12, 2021, 6:57:30 PM2/12/21
to web...@googlegroups.com
hello this is my model
db.define_table(
    'entities',
    Field('uuid'length=64default=lambdastr(uuid.uuid4())),
    Field('entity''string',length=70,required=Truelabel=T("Entity")),
    Field('description'length=100,label=T("Description"), default=""),
    Field('status', db.status),
    Field('type''reference dbentities'label=T("Type")),
    Field('sub_type'"reference subtypes"label=T("Type")),
    Field('event','string',length=10),
    Field('trailevent''list:integer'),
    Field("last_error"default=""),
    Field('extrareaders''list:reference auth_user'),
    Field('extrafield', db.extrafields, requires=IS_EMPTY_OR(
        IS_IN_DB(db, 'extrafields.id''%(extrafield)s'))),
    Field('relatedto''reference entities'requires=IS_EMPTY_OR(
        IS_IN_DB(db, 'entities.id''%(entity)s'))),
    Field('file''upload'label="Ficheiro"),
    Field('valstart''date'label="Válido de",
          default=datetime.datetime.utcnow()),
    Field('valend''date'label="Válido até",
          default=datetime.datetime.utcnow()),
    Field('orderedat''float'),
    Field('question','string'),
    Field('qt','double'),
    Field('units','string',length=5),
    Field('readers''list:string'default=[""]),#friend uuid
    Field('details','json'),
    auth.signature,
    format='%(type)s %(entity)s',
)


I have auth.signature but  this code

@request.restful()
def uploadInvoice():
    import random
    import string
    response.view = 'generic.json'

    def POST(*args**kw):
        try:
            user = auth.login_bare("userxxx""xxxx") # so it has a user
            uploaded_file = kw['file']
            filename = db.entities.file.store(uploaded_file, uploaded_file.filename)
            id = db.entities.insert(
                entity="Invoice",
                type=db.dbentities(entity="Invoice")["id"],
                status=DBTools().setStatus(db,"Draft""Invoice"),
                file=filename,
                created_by=4, # even with this line it saves as None
                modified_by=4# even with this line it saves as None
                description="")
            if id:
                eventid = db.events.insert(
                    event="Invoice"relatedto=id,  type="Document added"receipts={},linktodoc=id
                )
                db.entities[id]=dict(event=eventid)
            return "ok"

        except Exception as e:
            raise Exception('Error on line {}{}{}'.format(
                sys.exc_info()[-1].tb_lineno, str(e), request.vars))
    return locals()

does not fills the created_by and modified_by field. They have None 

Any help ???
Regards

António Ramos

unread,
Feb 13, 2021, 4:33:01 PM2/13/21
to web...@googlegroups.com
Anybody here?

Jim S

unread,
Feb 15, 2021, 10:33:36 AM2/15/21
to web2py-users
Have you tried with an auth decorator?  Maybe auth.requires_login()?

-Jim

António Ramos

unread,
Feb 15, 2021, 10:46:37 AM2/15/21
to web...@googlegroups.com
Hi Jim
Sorry but dont understand your suggestion.
You mean auth.requires_login() on my restful function like this 
@auth.requires_login() ?????
@request.restful()
def uploadInvoice():
Does it make sense? Its going to be called by external script. 
Inside my  uploadInvoice i have 
user = auth.login_bare("myuser""pwd") and i can check that it returns the myuser ID. so before inserting a record it should know who the user is.

I also have this code that i suspect that could get auth.signature in trouble. 
Please comment .
 

db.entities._after_update.append(lambda sf: wfFields().update_readers(db, 'entities', s, f))
db.entities._after_update.append(lambda sf: wfFields().update_authors(db, 'entities', s, f))
db.entities._after_update.append(lambda sf: extrafields_sync(s, f))
db.entities._after_insert.append(lambda fid: extrafields_sync(db(db.entities.id==id), f))

--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to web2py+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/022388a0-7a1a-405a-93e2-86498f18e334n%40googlegroups.com.

António Ramos

unread,
Feb 15, 2021, 11:33:12 AM2/15/21
to web...@googlegroups.com
Thank you Jim but i found the problem.
My fault this time.
Thank you again.

PS. Its just me or this forum is abandoned? Should i go elsewhere for help ?

Jim S

unread,
Feb 15, 2021, 11:59:12 AM2/15/21
to web2py-users
No, this forum has not been abandoned.  I think the issue may be that most of us are now spending a much greater amount of time with py4web.  That, and in my case anyway, I shied away from this question because I haven't used web2py in a restful manner before so wasn't sure I had anything to offer.

-Jim

António Ramos

unread,
Feb 15, 2021, 12:11:25 PM2/15/21
to web...@googlegroups.com
Once again thank you Jim for your patience :)
Regards from Portugal

António

Kevin Keller

unread,
Feb 15, 2021, 1:58:21 PM2/15/21
to web2py-users

António Ramos

unread,
Feb 15, 2021, 4:39:52 PM2/15/21
to web...@googlegroups.com
I didnt because the problem was not in that table. 
I was looking to the wrong table.
Thk u

Reply all
Reply to author
Forward
0 new messages