[web2py] Re: Default SQLFORM.grid / auth restrictions?

2013-02-19 Thread Matt House
Thanks Jim. Although off topic, appreciate the input on the table. Each 
portfolio might have multiple rows (i.e., portfolio value at Date 1, 
portfolio value at Date 2, etc.), so I'm using the portfolio_id field to 
identify all of the rows associated with a given portfolio. There may be 
more elegant ways to do this, so appreciate any input on that. 

I was just skimming the default db.py and came across the following lines:

## create all tables needed by auth if not custom tables
auth.define_tables(username=False, signature=False)

I've noticed that when I try to access the view, web2py redirects to a URL 
similar to 

/default/edit?_signature=9dc2b567e059212a557cbfb4788dfc00c86a02fa


I've looked through the documentation and I don't see much on signature. 
What does that do? Should I set it to true by default? Or do I have 
something set incorrectly in my controller that is creating the redirect 
when I access the view?





On Monday, February 18, 2013 4:09:48 PM UTC-6, Jim S wrote:

 From what I see you shouldn't have to have any groups setup.  You will 
 need a user which you can use the register function (from the generated 
 login box on your main page) to create.

 Also, it appears as though you have your table setup incorrectly.  If you 
 want portfolio_id to be the keyfield of you table, you should do it like 
 this:

 db.define_table('portfolio_data',
   Field('portfolio_id', 'id'),
 Field('close_date', 'date'),
 Field('index_value'),
 Field('portfolio_value'),
 Field('cash_change'))

 I don't think that would have any effect on the Not Authorized error, but 
 might get you down the road.  Just to confirm, you are logged in and all 
 when you test this, right?  Sorry to ask such a trivial question, but just 
 want to make sure all the bases are covered.

 -Jim


 On Saturday, February 16, 2013 4:56:49 PM UTC-6, Matt House wrote:

 Hello-
 I am new to Web2Py and I think I have a simple question, but I've banged 
 my head on the desk for two hours and searched this forum to no avail. 

 I have setup a basic database and want to give the user the ability to 
 edit a series of fields using SQLFORM.grid. I also want users to be logged 
 in before they can edit the fields (I'd actually prefer they can only edit 
 fields they inserted, but I will come back to that later...). 

 Here is my model:

 db.define_table('portfolio_data',
 Field('portfolio_id'),
 Field('close_date', 'date'),
 Field('index_value'),
 Field('portfolio_value'),
 Field('cash_change'))

 portfolio_id is simply a sequential number (1, 2, 3) generated when the 
 user creates the new portfolio. 

 I created a controller called edit, which takes an argument equal to the 
 portfolio_id (so edit/1 edits rows for portfolio 1, edit/2 rows for 
 portfolio 2, etc.)

 @auth.requires_login()
 def edit():
 # get portfolio ID from URL string
 passed_id = request.args(0)

 query = (db.portfolio_data.portfolio_id == passed_id)
 form = SQLFORM.grid(query=query)
 
 return dict(form=form)

 When I try to access /default/edit/1, I get a Not Authorized error. If 
 I set user_signature=False in the SQLFORM.grid call, then I'm able to 
 view and edit the table rows without a problem. 

 My diagnosis is that I have something set incorrectly in the 
 authentication tables. I added a group users and gave them permission to 
 read, update and select from the table db.portfolio_data, but still no 
 luck. I'm also confused why I would need to do that at all, since all I'm 
 asking for in the controller is a login and nothing more (i.e., I'm not 
 restricting table access anywhere). (And lest anyone ask, I am definitely 
 logged in.) 

 Are there default table edit restrictions somewhere that I missed in the 
 documentation? Or is there something else I need to do to get SQLFORM and 
 auth to play together nicely? I'm working from the default web2py scaffold, 
 so I'm surprised no one else has run into this issue. The only similar 
 issue I found was 
 thishttps://groups.google.com/forum/?fromgroups=#!topic/web2py/t3a6KkK41zo-
  I can't even reproduce the issue Kevin highlights in his question. 





-- 

--- 
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/groups/opt_out.




[web2py] Default SQLFORM.grid / auth restrictions?

2013-02-16 Thread Matt House
Hello-
I am new to Web2Py and I think I have a simple question, but I've banged my 
head on the desk for two hours and searched this forum to no avail. 

I have setup a basic database and want to give the user the ability to edit 
a series of fields using SQLFORM.grid. I also want users to be logged in 
before they can edit the fields (I'd actually prefer they can only edit 
fields they inserted, but I will come back to that later...). 

Here is my model:

db.define_table('portfolio_data',
Field('portfolio_id'),
Field('close_date', 'date'),
Field('index_value'),
Field('portfolio_value'),
Field('cash_change'))

portfolio_id is simply a sequential number (1, 2, 3) generated when the 
user creates the new portfolio. 

I created a controller called edit, which takes an argument equal to the 
portfolio_id (so edit/1 edits rows for portfolio 1, edit/2 rows for 
portfolio 2, etc.)

@auth.requires_login()
def edit():
# get portfolio ID from URL string
passed_id = request.args(0)

query = (db.portfolio_data.portfolio_id == passed_id)
form = SQLFORM.grid(query=query)

return dict(form=form)

When I try to access /default/edit/1, I get a Not Authorized error. If I 
set user_signature=False in the SQLFORM.grid call, then I'm able to view 
and edit the table rows without a problem. 

My diagnosis is that I have something set incorrectly in the authentication 
tables. I added a group users and gave them permission to read, update and 
select from the table db.portfolio_data, but still no luck. I'm also 
confused why I would need to do that at all, since all I'm asking for in 
the controller is a login and nothing more (i.e., I'm not restricting table 
access anywhere). (And lest anyone ask, I am definitely logged in.) 

Are there default table edit restrictions somewhere that I missed in the 
documentation? Or is there something else I need to do to get SQLFORM and 
auth to play together nicely? I'm working from the default web2py scaffold, 
so I'm surprised no one else has run into this issue. The only similar 
issue I found was 
thishttps://groups.google.com/forum/?fromgroups=#!topic/web2py/t3a6KkK41zo- I 
can't even reproduce the issue Kevin highlights in his question. 



-- 

--- 
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/groups/opt_out.