I'm assuming you have a company_id added to your auth_user table to 
identify which company a user belongs to.

If that is correct, then I'd add the following ahead of the 
SQLFORM.smartgrid call

db.offer.user_id.requires = IS_IN_DB(db(db.auth_user.company_id == auth.user
.company_id), db.auth_user, '%(first_name)s %(last_name)s', zero='Select 
User...')

...or something like that.  I didn't test the solution.  Read more about it 
here 
http://web2py.com/books/default/chapter/29/07/forms-and-validators#Database-validators


Another option would be to add a common filter, possibly in your db.py file 
to apply this rule to the entire site.

http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer?search=common+filter#Common-filters



On Monday, January 1, 2018 at 4:51:33 PM UTC-6, Paul Ellis wrote:
>
> I want to start using a smartgrid to browse a couple of tables as an admin 
> tool.
> There are a couple of companies using the same database.
> When an admin edits an 'Offer' I want them to be able to change the 
> user_id. Effectively assigning the offer to a different staff member in the 
> event of staff changes or holidays etc.
>
> The problem is the drop down menu shows all users in the database, not 
> just the users which belong to the company in question.
>
> db.define_table(
>     'offer',
>     Field('offer_number', 'integer', unique=True, label = T('Offer Number'
> )),
>     Field('user_id','reference auth_user', label = T('Created By'), 
> ondelete = 'SET NULL'),
>     Field('customer_id','reference customer', requires=IS_NOT_EMPTY(), 
> label = T('Customer Name')),
>     Field('reseller_id','reference reseller', requires=IS_NOT_EMPTY(), 
> label = T('Business Name')),
>     Field('created_on', 'datetime', default=request.now, writable=False, 
> label=T('Created On')),
>     Field('updated_on', 'datetime', default=request.now, writable=False, 
> label=T('Updated On')),
>     singular = T('Offer'),
>     plural = T('Offers'),
>     )
>
> db.define_table(
>     'remarks',
>     Field('offer_id', 'reference offer', requires=IS_NOT_EMPTY()),
>     Field('remorder', 'integer', label=T('Postion')),
>     Field('remark', 'text', label=T('Remarks')),
>     singluar = T('Remark'),
>     plural = T('Remarks'),
>     )
>
>
> and the grid:
> @auth.requires_membership('business leader')
> def offers():
>     pagetitle = 'offers'
>     buttongroup = []
>     
>     
>     db.offer.offer_number.writable = False
>     db.offer.reseller_id.writable = False
>     db.offer.reseller_id.readable = False
>     # db.offer.user_id.writable = False
>     
>     pagecontent = SQLFORM.smartgrid(
>         db.offer,
>         details = False,
>         constraints = {
>             'offer' : db.offer.reseller_id == session.auth.user.
> reseller_id,
>             },
>         linked_tables = [
>             'offer',
>             'remarks',
>             ],
>         fields = {
>             'offer' : [
>                 db.offer.offer_number,
>                 db.offer.user_id,
>                 db.offer.customer_id,
>                 db.offer.created_on,
>                 db.offer.updated_on,
>                 ],
>             },
>         )
>         
>     response.view = 'tooladmin_core.html'
>     return dict(
>         pagetitle = pagetitle,
>         buttongroup = buttongroup,
>         pagecontent = pagecontent,
>         )
>
>
>
>
>

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

Reply via email to