Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
limbra
limbra
Commits
c385482f
Commit
c385482f
authored
Sep 23, 2015
by
LE GAC Renaud
Browse files
Catch exception inserting the record in the database.
parent
ce7d9f72
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
70 additions
and
27 deletions
+70
-27
modules/harvest_tools/articles.py
modules/harvest_tools/articles.py
+34
-26
modules/harvest_tools/automaton.py
modules/harvest_tools/automaton.py
+36
-1
No files found.
modules/harvest_tools/articles.py
View file @
c385482f
...
...
@@ -8,6 +8,7 @@ import traceback
from
automaton
import
Automaton
from
base
import
(
family_name_fr
,
format_author_fr
,
learn_my_authors
,
MSG_CRASH
,
MSG_FIX_ORIGIN
,
MSG_IN_DB
,
...
...
@@ -285,29 +286,36 @@ class Articles(Automaton):
# try to improve the rescue list for CPPM authors
if
not
self
.
dry_run
:
db
.
publications
.
insert
(
authors
=
record
.
authors
(),
authors_institute
=
my_authors
,
first_author
=
first_author
,
id_categories
=
self
.
id_category
,
id_collaborations
=
id_collaboration
,
id_projects
=
self
.
id_project
,
id_publishers
=
id_publisher
,
id_status
=
UNDEF_ID
,
id_teams
=
self
.
id_team
,
origin
=
oai_url
,
pages
=
pages
,
preprint
=
preprint_number
,
publication_url
=
publication_url
,
submitted
=
submitted
,
title
=
title
,
volume
=
volume
,
year
=
year
)
learn_my_authors
(
db
,
authors
=
record
.
my_authors
,
id_project
=
self
.
id_project
,
id_team
=
self
.
id_team
,
year
=
year
)
self
.
logs
[
-
1
].
load
(
MSG_LOAD
,
year
)
return
1
ret
=
self
.
_insert_in_db
(
log_year
=
year
,
authors
=
record
.
authors
(),
authors_institute
=
my_authors
,
first_author
=
first_author
,
id_categories
=
self
.
id_category
,
id_collaborations
=
id_collaboration
,
id_projects
=
self
.
id_project
,
id_publishers
=
id_publisher
,
id_status
=
UNDEF_ID
,
id_teams
=
self
.
id_team
,
origin
=
oai_url
,
pages
=
pages
,
preprint
=
preprint_number
,
publication_url
=
publication_url
,
submitted
=
submitted
,
title
=
title
,
volume
=
volume
,
year
=
year
)
if
ret
==
1
:
learn_my_authors
(
db
,
authors
=
record
.
my_authors
,
id_project
=
self
.
id_project
,
id_team
=
self
.
id_team
,
year
=
year
)
self
.
logs
[
-
1
].
load
(
MSG_LOAD
,
year
)
else
:
ret
=
1
self
.
logs
[
-
1
].
load
(
MSG_LOAD
,
year
)
return
ret
modules/harvest_tools/automaton.py
View file @
c385482f
...
...
@@ -15,13 +15,14 @@ from invenio_tools import (CheckAndFix,
REG_OAI
)
from
msg
import
Msg
from
msgcollection
import
MsgCollection
from
plugin_dbui
import
get_create_id
,
get_id
,
UNDEF_ID
from
plugin_dbui
import
CALLBACK_ERRORS
,
get_create_id
,
get_id
,
UNDEF_ID
MSG_NO_CAT
=
'Select a "category" !!!'
MSG_NO_PROJECT
=
'Select a "project" !!!'
MSG_NO_TEAM
=
'Select a "team" !!!'
MSG_NSERT_FAIL
=
"Fail to insert the new record in the database."
MSG_NO_OAI
=
"Reject no OAI identifier"
MSG_WELL_FORM_OAI
=
"Reject OAI is not well formed"
...
...
@@ -114,6 +115,40 @@ class Automaton(object):
controller
=
self
.
controller
,
id_categories
=
self
.
id_category
)
def
_insert_in_db
(
self
,
log_year
=
""
,
**
fields
):
"""Insert the record in the database, handling database exception.
@type log_year: unicode
@param log_year: year of the record for the log
@type **fields: dict
@param **fields:
@rtype: int
@return: one when the record is inserted / updated in the database
zero otherwise.
"""
db
=
self
.
db
try
:
rec_id
=
db
.
publications
.
insert
(
**
fields
)
return
1
# operation can be rejected by the database
except
Exception
as
dbe
:
self
.
logs
[
-
1
].
reject
(
dbe
.
message
,
year
)
# operation can be reject by callbacks table._before_insert
if
not
rec_id
:
msg
=
MSG_NSERT_FAIL
if
CALLBACK_ERRORS
in
db
.
publications
:
msg
=
db
.
publications
.
_callback_errors
self
.
logs
[
-
1
].
reject
(
msg
,
year
)
return
0
def
_is_record_in_db
(
self
,
rec_id
,
title
):
"""Return C{True} if the record is already in the database.
The search is based on the origin field.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment