1 # -*- encoding: utf-8 -*-
2 from exceptions
import Exception
5 from auf_savoirs_en_partage
.backend_config
import RESOURCES
6 from savoirs
.globals import *
7 from backend
import Backend
16 self
.backend
= Backend ()
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.
28 return self
.backend
.search (q
)
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
35 if isinstance (id, tuple) or isinstance (id, list):
38 rc
.append (self
.backend
.get (int(i
[0])))
40 rc
= self
.backend
.get (int(id))
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.
47 Retourne l'id de la ressource créée ou mise à jour.
49 exists
= self
.search (q
= {URI
: metadata
[URI
]})
52 return self
.update (int(id), metadata
)
54 return self
.backend
.add (metadata
)
56 def update (self
, id, metadata
):
57 """Met a jour la ressource identifiée par `id`, avec les données de
58 `metadata`. Une exception est levée si elle n'existe pas.
60 if self
.get (int(id)) is not None:
61 self
.backend
.update (int(id), metadata
)
63 raise Exception ("Objet inexistant")
65 def delete (self
, id):
66 """Supprime la ressource identifiée par `id`.
68 self
.backend
.delete (int(id))
70 def add_log (self
, name
, count
):
71 if hasattr (self
.backend
, 'add_log'):
72 self
.backend
.add_log (name
, count
)
76 if hasattr (self
.backend
, 'logs'):
77 rc
= self
.backend
.logs()