Thanks a lot for general comments regarding user validation. 

User is not expected to edit professor_id neither institution_id. Anyway 
such information should be stored in classroom table. 

I tried to use SQLFORM(db.classroom), but I don“t want to allow use choose 
both Ids. Is there an alternative way to deal with it?



Em quinta-feira, 12 de maio de 2016 21:04:14 UTC-3, Anthony escreveu:
>
> Not sure what the problem is. How are you determining whether the insert 
> was successful? Do you flash message after submitting the form? What does 
> the view look like?
>
> Also, a few notes on your code:
>
> def new():
>>     if(session.auth is not None and session.auth.user.id is not None):
>>         user_id = session.auth.user.id
>>
>
> No need to refer to session.auth -- just use "auth". In fact, the first 
> line can be reduced to:
>
>     if auth.user_id:
>
> auth.user_id will simply be None if the user is not logged in.
>  
>
>>         professor_id = db(db.professor.id == user_id).select(
>> db.professor.id)[0]['id']
>>
>
> The above query doesn't make sense -- you are querying based on the "id" 
> of the db.professor table, but then extracting only the very "id" that you 
> used in the query. Furthermore, the IDs in the db.professor table will be 
> different from those in the db.auth_user table, so it doesn't make sense to 
> search for the db.professor record that happens to have the same "id" as 
> the currently logged in user (which will be an "id" from the db.auth_user 
> table).
>  
>
>>         professor_inst_id = db(db.professor.id == 
>> professor_id).select(db.professor.institution)[0]['institution']
>>
>
> Same problem above.
>  
>
>>         form=FORM('Nome da turma:', INPUT(_name='name', 
>> requires=IS_NOT_EMPTY()), 
>>                   'Disciplina:',INPUT(_name='subject', 
>> requires=IS_NOT_EMPTY()), 
>>                   T('Professor Id:') ,INPUT(_name='professor_id', 
>> _id='professor_id', value=professor_id), 
>>                   T('Institution Id') ,INPUT(_name='professor_inst_id', 
>> _id='professor_inst_id', value=professor_inst_id), 
>>                   INPUT(_type='submit'))
>>
>
> Do you want the user to be able to change the professor_id and 
> professor_inst_id? Presumably not, as the user would have no idea what IDs 
> are associated with each professor and institution. So, don't bother 
> including those in the form (unless you're going to provide a way for the 
> user to make a selection based on names).
>  
>
>>         if form.accepts(request,session):
>>             
>>             
>> db.classroom.insert(institution=request.vars.professor_inst_id, 
>> professor=request.vars.professor_id, subject=request.vars.subject, name=
>> request.vars.name)
>>             response.flash = T('Nova turma criada')
>>
>
> Finally, why not just use SQLFORM(db.classroom)? It will handle everything 
> for you, including the database insert.
>
> Anthony
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to