On 13 April 2012 21:46, Richard Vézina <ml.richard.vez...@gmail.com> wrote:

> This solution look great, because until now web2py was triggering a error
> if postgres return not unique and won't insert the data...
>
>
This problem has bitten me again.  My previous test was in the console.
Now in a controller I did the following:

def koppel_skrywer_artikel():
    response.view = 'default/edit_journal.html'
    opskrif = CENTER(H2(T('Add link between author and article')))
    form=SQLFORM.factory(db.akb_authors_article_link)
    if form.process().accepted:
        try:
            db.akb_authors_article_link.insert(**form.vars)
            response.flash = T('Link inserted in database')
            db.commit()
        else:
            response.flash = T('Link already in table')

    return locals()


Which resulted in the following ticket (which shows that the 'try.. except'
was practically ignored.


 File "/home/js/web2py/applications/init/controllers/default.py"
<http://localhost:8000/admin/default/edit/init/controllers/default.py>,
line 1206, in koppel_skrywer_artikel
    form = crud.create(db.akb_authors_article_link)
  File "/home/js/web2py/gluon/tools.py", line 3285, in create
    formname=formname,
  File "/home/js/web2py/gluon/tools.py", line 3228, in update
    detect_record_change = self.settings.detect_record_change):
  File "/home/js/web2py/gluon/sqlhtml.py", line 1296, in accepts
    self.vars.id = self.table.insert(**fields)
  File "/home/js/web2py/gluon/dal.py", line 7221, in insert
    ret =  self._db._adapter.insert(self,self._listify(fields))
  File "/home/js/web2py/gluon/dal.py", line 991, in insert
    raise e
IntegrityError: duplicate key value violates unique constraint "art_auth"
DETAIL:  Key (author, article)=(ebff17aa-3d19-4580-bf4e-9580e99b6e0d,
6e9cc285-543c-4a59-aa52-f3bfbeb939ee) already exists.


Is there any chance that we can get DAL to play with this code?

Regards
Johann
-- 
Because experiencing your loyal love is better than life itself,
my lips will praise you.  (Psalm 63:3)

Reply via email to