1 # -*- encoding: utf-8 -*-
2 from exceptions
import Exception
5 from auf_savoirs_en_partage
.backend_config
import RESOURCES
6 from backend
.globals import *
7 from backend
.sql
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
)))
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.
50 exists
= self
.search (q
= {URI
: metadata
[URI
]})
53 return self
.update (int(id), metadata
)
55 return self
.backend
.add (metadata
)
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.
61 if self
.get (int(id)) is not None:
62 self
.backend
.update (int(id), metadata
)
64 raise Exception ("Objet inexistant")
66 def delete (self
, id):
67 """Supprime la ressource identifiée par `id`.
69 self
.backend
.delete (int(id))
71 def add_log (self
, name
, count
):
72 if hasattr (self
.backend
, 'add_log'):
73 self
.backend
.add_log (name
, count
)
77 if hasattr (self
.backend
, 'logs'):
78 rc
= self
.backend
.logs()