Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F91487489
Convert_RecXML_to_RecALEPH.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Nov 11, 14:53
Size
4 KB
Mime Type
text/x-python
Expires
Wed, Nov 13, 14:53 (2 d)
Engine
blob
Format
Raw Data
Handle
22237236
Attached To
R3600 invenio-infoscience
Convert_RecXML_to_RecALEPH.py
View Options
## $Id$
## This file is part of CDS Invenio.
## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 CERN.
##
## CDS Invenio is free software; you can redistribute it and/or
## modify it under the terms of the GNU General Public License as
## published by the Free Software Foundation; either version 2 of the
## License, or (at your option) any later version.
##
## CDS Invenio is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with CDS Invenio; if not, write to the Free Software Foundation, Inc.,
## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
"""This is the Convert_RecXML_to_RecALEPH module. It contains the
Convert_RecXML_to_RecALEPH WebSubmit function.
"""
__revision__
=
"$Id$"
import
os
from
os
import
access
,
R_OK
,
W_OK
from
invenio.config
import
CFG_BINDIR
from
invenio.websubmit_config
import
InvenioWebSubmitFunctionError
def
Convert_RecXML_to_RecALEPH
(
parameters
,
curdir
,
form
,
user_info
=
None
):
"""Function to create an ALEPH 500 MARC record from a MARC XML record.
This function depends upon the following:
* "recmysql" is a file that already exists in the working
submission directory. I.e. "Make_Record" has already been called and
the MARC XML record created.
* "recmysql" must contain an ALEPH 500 SYS in the field "970__a". That
is to say, the function "Allocate_ALEPH_SYS" should have been called
and an ALEPH 500 SYS allocated to this record.
*** NOTE: "xmlmarc2textmarc" is left to check for this in the record
It is run in --aleph-marc=r mode, which creates an ALEPH
"replace" record.
Given the valid "recmysql" in the working submission directory, this
function will use the "xmlmarc2textmarc" tool to convert that record into
the ALEPH MARC record. The record will then be written into the file
"recaleph500" in the current working submission directory.
@parameters: None
@return: (string) - Empty string.
"""
## If recmysql does not exist in the current working submission directory,
## or it is not readable, fail by raising a InvenioWebSubmitFunctionError:
if
not
access
(
"
%s
/recmysql"
%
curdir
,
R_OK
|
W_OK
):
## FAIL - recmysql cannot be accessed:
msg
=
"""No recmysql in submission dir %s - """
\
"""Cannot create recaleph500!"""
%
curdir
raise
InvenioWebSubmitFunctionError
(
msg
)
## Command to perform conversion of recmysql -> recaleph500:
convert_cmd
=
\
"""%(bindir)s/xmlmarc2textmarc --aleph-marc=r %(curdir)s/recmysql > """
\
"""%(curdir)s/recaleph500"""
\
%
{
'bindir'
:
CFG_BINDIR
,
'curdir'
:
curdir
,
}
## Perform the conversion of MARC XML record to ALEPH500 record:
pipe_in
,
pipe_out
,
pipe_err
=
os
.
popen3
(
"
%s
"
%
convert_cmd
)
pipe_in
.
close
()
pipe_out
.
close
()
conversion_errors
=
pipe_err
.
readlines
()
pipe_err
.
close
()
## Check that the conversion was performed without error:
if
conversion_errors
!=
[]:
## It was not possible to successfully create the ALEPH500 record, quit:
msg
=
"""An error was encountered when attempting to """
\
"""convert %s/recmysql into recaleph500 - stopping [%s]"""
%
(
curdir
,
""
.
join
(
conversion_errors
))
raise
InvenioWebSubmitFunctionError
(
msg
)
## Check for presence of recaleph500 in the current
## working submission directory:
if
not
access
(
"
%s
/recaleph500"
%
curdir
,
R_OK
|
W_OK
):
## Either not present, or not readable - ERROR
msg
=
"""An error was encountered when attempting to convert """
\
"""%s/recmysql into recaleph500. After the conversion, """
\
"""recaleph500 could not be accessed."""
%
curdir
raise
InvenioWebSubmitFunctionError
(
msg
)
## Everything went OK:
return
""
Event Timeline
Log In to Comment