....select()[i]

....select().first() is same as .select()[0] but returns None if no
record

what you ask below is called 'denormalization' You can do it but your
fields would not be of reference type.



On Mar 21, 2:37 pm, Matthew McNaughton <mamcnaugh...@gmail.com> wrote:
> Ok, thank you for the clarification. Does adding the ".first" extention
> to the command get a specific row? How would I be able to get a single
> row if it wasn't necessarily the first. I know you can do it with a for
> loop, but how would do it otherwise?
>
> I assume that the issue with Release_Date would be the same issue with
> version_id field in the userSoftware table. Is there a way for me to get
> the actual release_date stored in userSoftware instead of the id number,
> as i already have that stored.
>
> On Sun, 2010-03-21 at 11:38 -0700, mdipierro wrote:
> > Two problems:
>
> > 1) userSoftware references the release date by id not by actual date
> > 2) db().select() returns Rows object (like a list) not a single record
>
> > Here is a fix:
>
> >     appVer = db(db.version.fileS ==
> > request.args(0)).select(db.version.id).first()
>
> >     if not (db(queryID).update(Filename=request.args(0))) :
> >         db.userSoftware.insert(user_id
> > =auth.user_id,Filename=request.args(0),Release_Date=appVer.id)
>
> > On Mar 21, 1:12 pm, Matthew McNaughton <mamcnaugh...@gmail.com> wrote:
> > > Thanks for all the help so far! Now that I got the userID and filename
> > > in the table, I'm having problems populating the other fields. I have
> > > been trying to run queries, but i'm not sure I completely understand the
> > > syntax allowed in the controller yet. Eitherway, these are the last two
> > > issues I've been having:
>
> > > Recall the models:
> > > ------------------------------------
> > > db.define_table('version',
> > >     Field('application_id', db.application),
> > >     Field('vers'),
> > >     Field('Release_Date', 'date'),
> > >     Field('opSystem'),
> > >     Field('reqs'),
> > >     Field('changeLog', 'text'),
> > >     Field('fileS', 'upload'))
>
> > > db.define_table('userSoftware',
> > >     Field('user_id', db.auth_user, writable=False),
> > >     Field('application_id', db.application),
> > >     Field('version_id', db.version),
> > >     Field('Release_Date', db.version),
> > >     Field('Filename'))
> > > ------------------------------
>
> > > I tried the following:
> > > ------------------------------
> > >     appVer = db(db.version.fileS ==
> > > request.args(0)).select(db.version.Release_Date)
>
> > >     if not (db(queryID).update(Filename=request.args(0))) :        
> > >         db.userSoftware.insert(user_id =
> > > auth.user_id,Filename=request.args(0), Release_Date=appVer.Release_Date)
> > > -------------------------------
>
> > > I keep getting the follow traceback, which states that no field
> > > 'Release_Date' exists
>
> > > Traceback (most recent call last):
> > >   File "/home/matthewm/Downloads/web2py/gluon/restricted.py", line 173, 
> > > in restricted
> > >     exec ccode in environment
> > >   File 
> > > "/home/matthewm/Downloads/web2py/applications/Amso/controllers/default.py",
> > >  line 147, in <module>
> > >   File "/home/matthewm/Downloads/web2py/gluon/globals.py", line 96, in 
> > > <lambda>
> > >     self._caller = lambda f: f()
> > >   File "/home/matthewm/Downloads/web2py/gluon/tools.py", line 1864, in f
> > >     return action(*a, **b)
> > >   File 
> > > "/home/matthewm/Downloads/web2py/applications/Amso/controllers/default.py",
> > >  line 82, in download
> > >     db.userSoftware.insert(user_id = 
> > > auth.user_id,Filename=request.args(0), Release_Date=appVer.Release_Date)
> > > AttributeError: 'Rows' object has no attribute 'Release_Date'
>
> > > Any idea why that is the case?
>
> > > On Sun, 2010-03-21 at 07:35 -0700, mdipierro wrote:
> > > > The problem is tht db(query).update(field=value) but you seem to have
> > > > query where field=value goes. Try this:
>
> > > > db.define_table('userSoftware',
> > > >       Field('user_id', db.auth_user),
> > > >       Field('filename'))
>
> > > > def donwload():
> > > >     query = db.userSoftware.user_id == auth.user_id
> > > >     if not db(query).update(filename=request.args(0)):
> > > >            db.userSoftware.insert(user_id =
> > > > auth.user_id,filename=request.args(0))
> > > >     return response.download(request,db)
>
> > > > there is only request.args(0) in your case not request.args(1), etc.
>
> > > > On Mar 21, 2:53 am, Matthew McNaughton <mamcnaugh...@gmail.com> wrote:
> > > > > Ok, so I'm trying to create a Download function that keeps track of 
> > > > > the
> > > > > files that the user downloads and updates a database table.
>
> > > > > The database model is:
> > > > > ------------------------------------------------
> > > > > db.define_table('userSoftware',
> > > > >     Field('user_id', db.auth_user),
> > > > >     Field('application_id', db.application),
> > > > >     Field('version_id', db.version),
> > > > >     Field('Release_Date', db.version))
> > > > > -----------------------------------------------
>
> > > > > I'm trying to write a Download function that will update the above 
> > > > > table
> > > > > with the a new row if it is a new file that the user is downloading. 
> > > > > My
> > > > > current download function is below:
> > > > > -------------------------------
> > > > > def downloadApp():
> > > > >     if((db(db.userSoftware.user_id == auth.id).count())==0) :
> > > > >         db().update(db.userSoftware.user_id = auth.user_id)
> > > > >     else:
> > > > > #        db().update(db.userSoftware.user_id = auth.user_id)
>
> > > > >     return response.download(request,db)
> > > > > -------------------------------
>
> > > > > The reason I haven't been able to get much farther than this is 
> > > > > because
> > > > > I get the following traceback error:
> > > > > -------------------------------
> > > > > Traceback (most recent call last):
> > > > >   File "/home/matthewm/Downloads/web2py/gluon/restricted.py", line 
> > > > > 171, in restricted
> > > > >     ccode = compile(code.replace('\r\n', '\n'), layer, 'exec')
> > > > >   File 
> > > > > "/home/matthewm/Downloads/web2py/applications/Amso/controllers/default.py",
> > > > >  line 43
> > > > >     db().update(db.userSoftware.user_id = auth.user_id)
> > > > > SyntaxError: keyword can't be an expression
>
> > > > > I'm not really what the syntax error is complaining about.
> > > > > Also what are the different arguments that are request.args? Massimo 
> > > > > mentioned
> > > > > that request.args[0] was the filename. What are the others?
>
> > > > > Thank you again for all the assistance.
>
> > > > > On Sat, 2010-03-20 at 10:42 -0700, mdipierro wrote:
> > > > > > You can put them in db.py after auth=..., or in a registration
> > > > > > controller or simply in the user() action. As long as they are
> > > > > > executed before the registration form runs.
>
> > > > > > Massimo
>
> > > > > > On Mar 20, 12:30 pm, Matthew McNaughton <mamcnaugh...@gmail.com>
> > > > > > wrote:
> > > > > > > DO the commands in 1) go into the db.py after 
> > > > > > > auth=Auth(globals(),db) or
> > > > > > > in a new controller that is created for user registration?
>
> > > > > > > On Sat, 2010-03-20 at 08:03 -0700, mdipierro wrote:
> > > > > > > > Good questions:
>
> > > > > > > > 1)
>
> > > > > > > > if not db(db.auth_group.role=='users').count():
> > > > > > > >      db.auth_group.insert(role='users')
> > > > > > > > auth.settings.register_onaccept=lambda form:
> > > > > > > > auth.add_membership(auth.id_group('users'),form.vars.id)
>
> > > > > > > > 2)
> > > > > > > > Not sure what you mean by file renaming. Can you explain more?
> > > > > > > > To keep track of downloads create your own download function
>
> > > > > > > > def download():
> > > > > > > >     ### log the download, filename is in request.args(0) and 
> > > > > > > > user in
> > > > > > > > auth.user_id
> > > > > > > >     return response.download(request,db)
>
> > > > > > > > On Mar 20, 2:11 am, Matthew McNaughton <mamcnaugh...@gmail.com> 
> > > > > > > > wrote:
> > > > > > > > > Greetings all,
> > > > > > > > > I've read the access control section in book a couple times 
> > > > > > > > > over, and I
> > > > > > > > > still can't completely figure out authorization. I want to do 
> > > > > > > > > the
> > > > > > > > > following:
> > > > > > > > > I want to add all newly registered users to a specific group 
> > > > > > > > > called
> > > > > > > > > "users", which I have already created in auth_groups
>
> > > > > > > > > I have another group called "admin" which can add records to 
> > > > > > > > > the various
> > > > > > > > > databases. The only way to begin this user is use the web2py
> > > > > > > > > administrator login. Where do I put the access privileges for 
> > > > > > > > > this
> > > > > > > > > group?
>
> > > > > > > > > A related question. If I have certain files that the user can 
> > > > > > > > > upload and
> > > > > > > > > download. How do i manage the file renaming in the mysql db? 
> > > > > > > > > Also, how
> > > > > > > > > do I keep track of the files that a user download from the 
> > > > > > > > > server.
>
> > > > > > > > > I apologize for the newb questions. Thank you again for all 
> > > > > > > > > the help so
> > > > > > > > > far.

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to