from the book:
Remember to call db.commit() at the end of every task if it involves 
inserts/updates to the database. web2py commits by default at the end of a 
successful action but the scheduler tasks are not actions.

On Friday, September 1, 2017 at 8:30:00 AM UTC+3, Ben Lawrence wrote:
>
> Thanks guys for your time. No I do not know what a _before_insert hook is, 
> so I doubt that there is one here.
>
> here is
>
> ################################################################################
>
> def insert_company(valid_name, valid_email):
>     """ Inserts a company record if there is a new domain_tag
>     """
>     c_id = 0 # is the reference to the company record
>     # what is the company domain ?
>     email_tup = valid_email.split(u'@')
>     if len(email_tup) > 1:  # it is an email address
>         c_domain = email_tup[1]
>     elif len(email_tup) == 1:
>         c_domain = valid_email
>     else: # give up
>         c_domain = valid_name.upper()
>     # use this to find the company, 
>     c_rows = db(db.company.domain_tag == c_domain).select()
>     if len(c_rows)==0:  # add the company
>         c_id = db.company.update_or_insert(
>             name = get_company_name(c_domain),
>             e_mail = valid_email,
>             domain_tag = c_domain )
>     else:  # length MUST be one
>         c_id = c_rows.last().id
>     return c_id
>
> ################################################################################
>
> You know what,
> I am running all this on ubuntu 16 in an LXD container with software raid 
> on the metal. I am really starting to wonder if DAL and postgres and lxd 
> and software raid are somehow getting ahead of themselves in timing? 
> Perhaps there is no feedback or not enough feedback of "operation 
> completed"  somewhere?
>
>  
> On Wednesday, August 30, 2017 at 1:59:04 AM UTC-7, Val K wrote:
>>
>> As I see, it's a scheduler task -  show all code of insert_company
>> Is there any _before_insert hook?
>>
>> On Wednesday, August 30, 2017 at 1:22:57 AM UTC+3, Ben Lawrence wrote:
>>>
>>> 2.15.3-stable+timestamp.2017.08.07.07.32.04
>>> (Running on nginx/1.10.3, Python 2.7.12)
>>>
>>>
>>> Hi
>>> I hesitate to ask this because it will betray my stupidity
>>>
>>> I have this:
>>>
>>>     *c_rows = db(db.company.domain_tag == c_domain).select()*
>>>     if *len(c_rows)==0*:  # add the company
>>>         c_id = db.company.insert(
>>>             name = get_company_name(c_domain),
>>>             e_mail = valid_email,
>>>             *domain_tag = c_domain )*
>>>     else:  # length MUST be one
>>>         c_id = c_rows.last().id
>>>
>>> and this the error:
>>>
>>> File "applications/remail/models/scheduler.py", line 120, in 
>>> insert_company
>>>     domain_tag = c_domain )
>>>   File "/home/www-data/web2py/gluon/packages/dal/pydal/objects.py", line 
>>> 734, in insert
>>>     ret = self._db._adapter.insert(self, row.op_values())
>>>   File 
>>> "/home/www-data/web2py/gluon/packages/dal/pydal/adapters/base.py", line 
>>> 486, in insert
>>>     raise e
>>> IntegrityError: duplicate key value violates unique constraint 
>>> "company_domain_tag_key"
>>> DETAIL:  Key (domain_tag)=(platronics.com) already exists.
>>>
>>>
>>> Wha?! if domain_tag is already there would len(c_rows) > 0  and so would 
>>> not try to insert the record?
>>>
>>>
>>>

-- 
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