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