1 # -*- encoding: utf-8 -*-
2 import sys
, os
, time
, traceback
3 from auf_savoirs_en_partage
.backend_config
import RESOURCES
4 from savoirs
.models
import HarvestLog
9 libelles
= {'site':50, 'url':50, 'type':10, 'acces':10, 'ref_importees':20, 'date':20, 'obs':10}
11 def dernier_logs_moisson(self
, site
):
12 return HarvestLog
.objects
.filter(name
=site
, context
='moisson').order_by('-date')
15 logs
= self
.dernier_logs_moisson(site
)
17 return str(logs
[0].date
)
21 def ref_importees(self
, site
):
22 logs
= self
.dernier_logs_moisson(site
)
24 return str(logs
[0].processed
)
30 for site
, options
in RESOURCES
.items():
31 options
['site'] = site
32 tableau
.append(options
)
35 libelles_formates
= []
36 for l
, largeur
in self
.libelles
.items():
38 libelles_formates
.append(l
.ljust(largeur
))
39 print "|%s|" % "|".join(libelles_formates
)
44 for l
,largeur
in self
.libelles
.items():
45 method
= getattr(self
, l
, None)
46 if method
is not None:
47 value
= method(ligne
['site'])
48 elif ligne
.has_key(l
):
52 value
= value
.ljust(largeur
)
53 ligne_ordonnee
.append(value
)
54 print "|%s|" % "|".join(ligne_ordonnee
)
57 """Cette méthode effectue l'importation des données pour toutes les
58 sources définies dans `conf.py`, et les ajoute dans le système de stockage
59 en passant par SEP (:doc:`../sep/index`)
64 if len(sys
.argv
) == 2:
68 stats
= HarvestStats()
72 if RESOURCES
.get(name
) is not None:
73 resources
= {name
: RESOURCES
.get(name
)}
75 print "Ressource %s non existante" % name
78 for name
in resources
.keys ():
80 options
= RESOURCES
[name
]
81 options
['server'] = name
83 module
= 'harvesters.%s.%s' \
84 % (options
['type'], options
['acces'])
86 harvester
= sys
.modules
[module
]
88 nodes
= harvester
.harvest (options
)
92 traceback
.print_exc(file=sys
.stdout
)
101 status
= sep
.add (node
)
103 message
.update({'context':'error', 'name':name
, 'processed':0})
104 HarvestLog
.add(message
)
109 if status
['updated']:
112 message
.update({'context':'record', 'name':name
, 'processed':1})
113 HarvestLog
.add(message
)
115 message
= {'context':'moisson', 'name':name
, 'added':added
, 'updated':updated
, 'processed':len(nodes
)}
116 HarvestLog
.add(message
)
120 if __name__
== '__main__':