--- a/web/views/schema.py Thu May 20 20:47:13 2010 +0200
+++ b/web/views/schema.py Thu May 20 20:47:55 2010 +0200
@@ -35,7 +35,7 @@
from cubicweb import tags, uilib
from cubicweb.web import action, facet, uicfg, schemaviewer
from cubicweb.web.views import TmpFileViewMixin
-from cubicweb.web.views import primary, baseviews, tabs, tableview, iprogress
+from cubicweb.web.views import primary, baseviews, tabs, tableview, ibreadcrumbs
ALWAYS_SKIP_TYPES = BASE_TYPES | SCHEMA_TYPES
SKIP_TYPES = (ALWAYS_SKIP_TYPES | META_RTYPES | SYSTEM_RTYPES | WORKFLOW_TYPES
@@ -680,6 +680,37 @@
visitor = OneHopRSchemaVisitor(self._cw, rschema)
s2d.schema2dot(outputfile=tmpfile, visitor=visitor)
+# breadcrumbs ##################################################################
+
+class CWRelationIBreadCrumbsAdapter(ibreadcrumbs.IBreadCrumbsAdapter):
+ __select__ = implements('CWRelation')
+ def parent_entity(self):
+ return self.entity.rtype
+
+class CWAttributeIBreadCrumbsAdapter(ibreadcrumbs.IBreadCrumbsAdapter):
+ __select__ = implements('CWAttribute')
+ def parent_entity(self):
+ return self.entity.stype
+
+class CWConstraintIBreadCrumbsAdapter(ibreadcrumbs.IBreadCrumbsAdapter):
+ __select__ = implements('CWConstraint')
+ def parent_entity(self):
+ if self.entity.reverse_constrained_by:
+ return self.entity.reverse_constrained_by[0]
+
+class RQLExpressionIBreadCrumbsAdapter(ibreadcrumbs.IBreadCrumbsAdapter):
+ __select__ = implements('RQLExpression')
+ def parent_entity(self):
+ return self.entity.expression_of
+
+class CWPermissionIBreadCrumbsAdapter(ibreadcrumbs.IBreadCrumbsAdapter):
+ __select__ = implements('CWPermission')
+ def parent_entity(self):
+ # XXX useless with permission propagation
+ permissionof = getattr(self.entity, 'reverse_require_permission', ())
+ if len(permissionof) == 1:
+ return permissionof[0]
+
# misc: facets, actions ########################################################