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):
41 rc
.append (self
.backend
.get (int(i
)))
43 rc
= self
.backend
.get (int(id))
46 def add (self
, metadata
):
47 """Ajouter la ressource définie par `metadata`. Si on trouve une
48 ressource avec le même `identifier`, on le met a jour.
50 Retourne l'id de la ressource créée ou mise à jour.
52 exists
= self
.search (q
= {URI
: metadata
[URI
]})
55 return self
.update (int(id), metadata
)
57 return self
.backend
.add (metadata
)
59 def update (self
, id, metadata
):
60 """Met a jour la ressource identifiée par `id`, avec les données de
61 `metadata`. Une exception est levée si elle n'existe pas.
63 if self
.get (int(id)) is not None:
64 self
.backend
.update (int(id), metadata
)
66 raise Exception ("Objet inexistant")
68 def delete (self
, id):
69 """Supprime la ressource identifiée par `id`.
71 self
.backend
.delete (int(id))
73 def add_log (self
, name
, count
):
74 if hasattr (self
.backend
, 'add_log'):
75 self
.backend
.add_log (name
, count
)
79 if hasattr (self
.backend
, 'logs'):
80 rc
= self
.backend
.logs()