Commit | Line | Data |
---|---|---|
0cc5f772 CR |
1 | # -*- encoding: utf-8 -*- |
2 | from exceptions import Exception | |
3 | import sys, time | |
4 | ||
5 | from auf_savoirs_en_partage.backend_config import RESOURCES | |
6 | from backend.globals import * | |
7 | from backend.sql import Backend | |
8 | ||
9 | ||
10 | class SEP: | |
11 | """ | |
12 | """ | |
13 | backend = None | |
14 | ||
15 | def __init__ (self): | |
16 | self.backend = Backend () | |
17 | ||
18 | def __del__ (self): | |
19 | self.backend.close () | |
20 | ||
21 | ############# | |
22 | # API public | |
23 | def search (self, q = {}): | |
24 | """Effectue une recherche multi-critères, en fonction du dictionnaire | |
25 | `q`. Retourne une list d'`id`s uniquement. Les données pour chaque | |
26 | résultat doivent être chargées ulterieurement. | |
27 | """ | |
28 | return self.backend.search (q) | |
29 | ||
30 | def get (self, id): | |
31 | """Recupérer la structure de métadonnées pour la ressource identifiée | |
32 | par `id`. `id` peut être une liste si on veut les structures de | |
33 | plusieurs ressources. | |
34 | """ | |
35 | if isinstance (id, tuple) or isinstance (id, list): | |
36 | rc = [] | |
37 | for i in id: | |
38 | rc.append (self.backend.get (int(i))) | |
39 | else: | |
40 | rc = self.backend.get (int(id)) | |
41 | return rc | |
42 | ||
43 | def add (self, metadata): | |
44 | """Ajouter la ressource définie par `metadata`. Si on trouve une | |
45 | ressource avec le même `identifier`, on le met a jour. | |
46 | ||
47 | Retourne l'id de la ressource créée ou mise à jour. | |
48 | """ | |
49 | #print metadata | |
50 | exists = self.search (q = {URI: metadata[URI]}) | |
51 | if len (exists) > 0: | |
52 | id = exists[0] | |
53 | return self.update (int(id), metadata) | |
54 | else: | |
55 | return self.backend.add (metadata) | |
56 | ||
57 | def update (self, id, metadata): | |
58 | """Met a jour la ressource identifiée par `id`, avec les données de | |
59 | `metadata`. Une exception est levée si elle n'existe pas. | |
60 | """ | |
61 | if self.get (int(id)) is not None: | |
62 | self.backend.update (int(id), metadata) | |
63 | else: | |
64 | raise Exception ("Objet inexistant") | |
65 | ||
66 | def delete (self, id): | |
67 | """Supprime la ressource identifiée par `id`. | |
68 | """ | |
69 | self.backend.delete (int(id)) | |
70 | ||
71 | def add_log (self, name, count): | |
72 | if hasattr (self.backend, 'add_log'): | |
73 | self.backend.add_log (name, count) | |
74 | ||
75 | def logs (self): | |
76 | rc = {} | |
77 | if hasattr (self.backend, 'logs'): | |
78 | rc = self.backend.logs() | |
79 | return rc | |
80 |