stocke dans le record sa provenance
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / savoirs / lib / harvest.py
CommitLineData
0cc5f772
CR
1# -*- encoding: utf-8 -*-
2import sys, os, time, traceback
0cc5f772
CR
3from auf_savoirs_en_partage.backend_config import RESOURCES
4from sep import SEP
5
0cc5f772
CR
6def import_all ():
7 """Cette méthode effectue l'importation des données pour toutes les
8 sources définies dans `conf.py`, et les ajoute dans le système de stockage
9 en passant par SEP (:doc:`../sep/index`)
10 """
11 sep = SEP ()
12
8b95ddc9
CR
13 resources = RESOURCES
14 if len(sys.argv) == 2:
15 name = sys.argv[1]
16 if RESOURCES.get(name) is not None:
17 resources = {name: RESOURCES.get(name)}
18 else:
19 print "Ressource %s non existante" % name
20 sys.exit(-1)
21
22 for name in resources.keys ():
0cc5f772
CR
23 print "Import:", name
24 options = RESOURCES[name]
25 module = 'harvesters.%s.%s' \
26 % (options['type'], options['acces'])
27 __import__ (module)
28 harvester = sys.modules[module]
29 try:
30 nodes = harvester.harvest (options)
31 except:
32 print "Exception:"
33 print '-'*60
34 traceback.print_exc(file=sys.stdout)
35 print '-'*60
36 nodes = []
37 print "Ajout de", len(nodes), "references"
38 print "S:", time.time ()
39 for node in nodes:
77427924 40 node['server'] = name
0cc5f772
CR
41 sep.add (node)
42 sep.add_log (name, len(nodes))
43 print "F:", time.time ()
44
45 del (sep)
46
47if __name__ == '__main__':
48 import_all()