bw compat for selection for creation forms tls-sprint
authorsylvain.thenault@logilab.fr
Wed, 18 Feb 2009 21:31:34 +0100
branchtls-sprint
changeset 833 8c6bfd9158fb
parent 832 8e06873d80d3
child 834 50d5ca1180b1
bw compat for selection for creation forms
selectors.py
web/views/baseforms.py
--- a/selectors.py	Wed Feb 18 20:32:16 2009 +0100
+++ b/selectors.py	Wed Feb 18 21:31:34 2009 +0100
@@ -708,6 +708,7 @@
             return any(x for x, in rset.description if x == self.target_etype)
         return bool(rset)
 
+
 class abstract_has_related_entities(AbstractSelectorMixIn, has_related_entities):
     def __init__(self, once_is_enough=False):
         super(abstract_has_related_entities, self).__init__(None, None,
@@ -1007,13 +1008,24 @@
     def plug_selector(cls, vreg):
         cls = registered(cls, vreg)
         if getattr(cls, 'accepts', None):
-            warn('use "match_user_groups(group1, group2)" instead of using require_groups',
+            warn('use "implements("EntityType", IFace)" instead of using accepts',
                  DeprecationWarning)
             cls.__select__ &= implements(*cls.accepts)
         return cls
     return plug_selector
 
 @unbind_method
+def accepts_etype_compat(registered):
+    def plug_selector(cls, vreg):
+        cls = registered(cls, vreg)
+        if getattr(cls, 'accepts', None):
+            warn('use "specified_etype_implements("EntityType", IFace)" instead of using accepts',
+                 DeprecationWarning)
+            cls.__select__ &= specified_etype_implements(*cls.accepts)
+        return cls
+    return plug_selector
+
+@unbind_method
 def condition_compat(registered):
     def plug_selector(cls, vreg):
         cls = registered(cls, vreg)
--- a/web/views/baseforms.py	Wed Feb 18 20:32:16 2009 +0100
+++ b/web/views/baseforms.py	Wed Feb 18 21:31:34 2009 +0100
@@ -17,9 +17,9 @@
 from cubicweb.interfaces import IWorkflowable
 from cubicweb.selectors import (specified_etype_implements, implements,
                                 match_kwargs, match_form_params, one_line_rset,
-                                non_final_entity)
+                                non_final_entity, accepts_etype_compat)
 from cubicweb.utils import make_uid
-from cubicweb.view import EntityView
+from cubicweb.view import View, EntityView
 from cubicweb.common.uilib import cut
 from cubicweb.web import INTERNAL_FIELD_VALUE, stdmsgs, eid_param
 from cubicweb.web.controller import NAV_FORM_PARAMETERS
@@ -524,6 +524,9 @@
     
 class CreationForm(EditionForm):
     __select__ = specified_etype_implements('Any')
+    # XXX bw compat, use View.registered since we don't want accept_compat
+    #    wrapper set in EntityView
+    registered = accepts_etype_compat(View.registered)
     id = 'creation'
     title = _('creation')