src/p4l/management/commands/import_record.py
changeset 6 ff4d2d4f1fb0
parent 0 81e7900b06a7
child 7 02008d61c3c8
equal deleted inserted replaced
5:62e97cd13730 6:ff4d2d4f1fb0
     1 # -*- coding: utf-8 -*-
     1 # -*- coding: utf-8 -*-
     2 
     2 
       
     3 from django.core.management import BaseCommand
       
     4 from django.db import reset_queries, transaction
       
     5 from optparse import make_option
       
     6 from p4l.models import Record, Language
     3 from p4l.utils import show_progress, get_code_from_language_uri
     7 from p4l.utils import show_progress, get_code_from_language_uri
     4 from p4l.models import Record, Language
       
     5 from rdflib import Graph, Namespace, BNode, URIRef
     8 from rdflib import Graph, Namespace, BNode, URIRef
     6 from rdflib.plugins.sparql import prepareQuery
     9 from rdflib.plugins.sparql import prepareQuery
     7 from django.core.management import BaseCommand
    10 import logging
     8 from optparse import make_option
       
     9 import xml.etree.cElementTree as ET
    11 import xml.etree.cElementTree as ET
    10 from django.db import reset_queries, transaction
       
    11 import traceback
       
    12 import logging
       
    13 import sys
       
    14 
    12 
    15 logger = logging.getLogger(__name__)
    13 logger = logging.getLogger(__name__)
    16 
    14 
    17 
    15 
    18 RDF = Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#")
    16 RDF = Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#")
   295 
   293 
   296         self.add_to_related_collection(
   294         self.add_to_related_collection(
   297             record.volumeIssues,
   295             record.volumeIssues,
   298             graph,
   296             graph,
   299             ['volume', 'number', 'lang'],
   297             ['volume', 'number', 'lang'],
   300             "SELECT ?v ?n (lang(COALESCE(?v, ?n)) as ?lang) WHERE { [ iiep:volumeIssue ?bnode ]. OPTIONAL { ?bnode iiep:volume ?v }. OPTIONAL { ?bnode iiep:number ?v }}",
   298             "SELECT ?v ?n (lang(COALESCE(?v, ?n)) as ?lang) WHERE { [ iiep:volumeIssue ?bnode ]. OPTIONAL { ?bnode iiep:volume ?v }. OPTIONAL { ?bnode iiep:number ?n }}",
   301             convert={'lang':lambda l: self.convert_lang(l, default_language_code)}
   299             convert={'lang':lambda l: self.convert_lang(l, default_language_code)}
   302         )
   300         )
   303 
   301 
   304         self.add_to_related_collection(
   302         self.add_to_related_collection(
   305             record.urls,
   303             record.urls,
   333         writer = None
   331         writer = None
   334         errors=[]
   332         errors=[]
   335 
   333 
   336         context = ET.iterparse(records_url, events=("end",))
   334         context = ET.iterparse(records_url, events=("end",))
   337         i = 0
   335         i = 0
   338         for event,elem in context:
   336         for _,elem in context:
   339             if elem.tag == "{%s}Record" % IIEP:
   337             if elem.tag == "{%s}Record" % IIEP:
   340                 i += 1
   338                 i += 1
   341                 writer = show_progress(i, total_records, "Processing record nb %d " % i, 50, writer=writer)
   339                 writer = show_progress(i, total_records, "Processing record nb %d " % i, 50, writer=writer)
   342                 try:
   340                 try:
   343                     record_graph = self.get_empty_graph()
   341                     record_graph = self.get_empty_graph()