cubicweb/web/test/data/cubicweb_tag/views.py
changeset 12519 aff5d3498f68
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/web/test/data/cubicweb_tag/views.py	Tue Mar 19 13:17:47 2019 +0100
@@ -0,0 +1,28 @@
+from cubicweb.web import component
+from cubicweb.web.views import ajaxcontroller
+
+
+@ajaxcontroller.ajaxfunc
+def tag_entity(self, eid, taglist):
+    execute = self._cw.execute
+    # get list of tag for this entity
+    tagged_by = set(tagname for (tagname,) in
+                    execute('Any N WHERE T name N, T tags X, X eid %(x)s',
+                            {'x': eid}))
+    for tagname in taglist:
+        tagname = tagname.strip()
+        if not tagname or tagname in tagged_by:
+            continue
+        tagrset = execute('Tag T WHERE T name %(name)s', {'name': tagname})
+        if tagrset:
+            rql = 'SET T tags X WHERE T eid %(t)s, X eid %(x)s'
+            execute(rql, {'t': tagrset[0][0], 'x': eid})
+        else:
+            rql = 'INSERT Tag T: T name %(name)s, T tags X WHERE X eid %(x)s'
+            execute(rql, {'name': tagname, 'x': eid})
+
+
+class TagsBox(component.AjaxEditRelationCtxComponent):
+    __regid__ = 'tags_box'
+    rtype = 'tags'
+    role = 'object'