Again pretty  much the scaffold code plus the tutorial changes I think.

# -*- coding: utf-8 -*-
# -------------------------------------------------------------------------
# This is a sample controller
# this file is released under public domain and you can use without 
limitations
# -------------------------------------------------------------------------

# ---- example index page ----
def index():
    images = db().select(db.image.ALL, orderby=db.image.title)
    return dict(images=images)

def show():
    image = db.image(request.args(0, cast=int)) or redirect(URL('index'))
    db.post.image_id.default = image.id
    form = SQLFORM(db.post)
    if form.process().accepted:
        response.flash = 'your comment is posted'
    comments = db(db.post.image_id == image.id).select(orderby=db.post.id)
    return dict(image=image, comments=comments, form=form)

def download():
    return response.download(request, db)

def user():
    return dict(form=auth())


# ---- API (example) -----
@auth.requires_login()
def api_get_user_email():
    if not request.env.request_method == 'GET': raise HTTP(403)
    return response.json({'status':'success', 'email':auth.user.email})

# ---- Smart Grid (example) -----
@auth.requires_membership('admin') # can only be accessed by members of 
admin groupd
def grid():
    response.view = 'generic.html' # use a generic view
    tablename = request.args(0)
    if not tablename in db.tables: raise HTTP(403)
    grid = SQLFORM.smartgrid(db[tablename], args=[tablename], 
deletable=False, editable=False)
    return dict(grid=grid)

# ---- Embedded wiki (example) ----
def wiki():
    auth.wikimenu() # add the wiki to the menu
    return auth.wiki() 

# ---- Action for login/register/etc (required for auth) -----
def user():
    """
    exposes:
    http://..../[app]/default/user/login
    http://..../[app]/default/user/logout
    http://..../[app]/default/user/register
    http://..../[app]/default/user/profile
    http://..../[app]/default/user/retrieve_password
    http://..../[app]/default/user/change_password
    http://..../[app]/default/user/bulk_register
    use @auth.requires_login()
        @auth.requires_membership('group name')
        @auth.requires_permission('read','table name',record_id)
    to decorate functions that need access control
    also notice there is http://..../[app]/appadmin/manage/auth to allow 
administrator to manage users
    """
    return dict(form=auth())

# ---- action to server uploaded static content (required) ---
@cache.action()
def download():
    """
    allows downloading of uploaded files
    http://..../[app]/default/download/[filename]
    """
    return response.download(request, db)
On Wednesday, April 22, 2020 at 6:23:54 PM UTC-4, Jim S wrote:
>
> Jon 
>
> What does your controller look like?
> -Jim
>
> On Wed, Apr 22, 2020 at 5:13 PM Jon Paris <jonb...@partner400.com 
> <javascript:>> wrote:
>
>> Yes - I can see that now - but that was in the original scaffolding.
>>
>> I moved stuff around and now have this at the start:
>>
>> from gluon.contrib.appconfig import AppConfig
>> from gluon.tools import Auth
>>
>> db = DAL("sqlite://storage.sqlite")
>>
>> auth = Auth(db)
>> auth.define_tables(username=True)
>>
>> The removed the duplicate entry for db = later in the script.
>>
>> Same problem.  App works but no authentication request.
>>
>> There's still a lot of "extra stuff" in the scaffolded code that I don't 
>> think I need it or not - but no duplication that I can see.
>>
>>
>> On Wednesday, April 22, 2020 at 5:49:45 PM UTC-4, Jim S wrote:
>>>
>>> Jon
>>>
>>> You're redefining db right above your define_table for 'image'.  db is 
>>> already assigned/defined higher up in the db.py file.  We don't want to 
>>> redefine it.
>>>
>>> I've just been looking at the tutorial you're following and see that it 
>>> seems a bit out-dated.
>>>
>>> -Jim
>>>
>>>>
>>>> -- 
>> 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 a topic in the 
>> Google Groups "web2py-users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/web2py/51UaQT4SxbQ/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> web...@googlegroups.com <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/web2py/9efdf98e-a87f-41f3-aeb2-9813ebd9679a%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/web2py/9efdf98e-a87f-41f3-aeb2-9813ebd9679a%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/f998f6a2-a70f-4ecc-a62a-476dedeef390%40googlegroups.com.

Reply via email to