merge tls-sprint
authorAdrien Di Mascio <Adrien.DiMascio@logilab.fr>
Wed, 18 Feb 2009 20:26:07 +0100
branchtls-sprint
changeset 830 26fad1506df5
parent 829 ea092805d8f8 (diff)
parent 825 037be200ff47 (current diff)
child 831 83c7e0c467c9
merge
--- a/devtools/testlib.py	Wed Feb 18 20:11:19 2009 +0100
+++ b/devtools/testlib.py	Wed Feb 18 20:26:07 2009 +0100
@@ -197,24 +197,16 @@
             self.set_description("testing %s, mod=%s (%s)" % (vid, view.__module__, rset.printable_rql()))
         else:
             self.set_description("testing %s, mod=%s (no rset)" % (vid, view.__module__))
-        viewfunc = lambda **k: self.vreg.main_template(req, template, **kwargs)
         if template is None: # raw view testing, no template
             viewfunc = view.dispatch
-        elif template == 'main-template':
-            _select_view_and_rset = TheMainTemplate._select_view_and_rset
-            # patch TheMainTemplate.process_rql to avoid recomputing resultset
-            def __select_view_and_rset(self, view=view, rset=rset):
-                self.rset = rset
-                return view, rset
-            TheMainTemplate._select_view_and_rset = __select_view_and_rset
-        try:
-            return self._test_view(viewfunc, view, template, **kwargs)
-        finally:
-            if template == 'main-template':
-                TheMainTemplate._select_view_and_rset = _select_view_and_rset
+        else:
+            templateview = self.vreg.select_view(template, req, rset, view=view, **kwargs)
+            kwargs['view'] = view
+            viewfunc = lambda **k: self.vreg.main_template(req, template, **kwargs)
+        return self._test_view(viewfunc, view, template, kwargs)
 
 
-    def _test_view(self, viewfunc, view, template='main-template', **kwargs):
+    def _test_view(self, viewfunc, view, template='main-template', kwargs={}):
         """this method does the actual call to the view
 
         If no error occured while rendering the view, the HTML is analyzed
--- a/selectors.py	Wed Feb 18 20:11:19 2009 +0100
+++ b/selectors.py	Wed Feb 18 20:26:07 2009 +0100
@@ -346,17 +346,14 @@
 
 @objectify_selector
 @lltrace
-def anonymous_user(cls, req, *args, **kwargs):
+def authenticated_user(cls, req, *args, **kwargs):
     """accept if user is anonymous"""
     if req.cnx.anonymous_connection:
-        return 1
-    return 0
+        return 0
+    return 1
 
-@objectify_selector
-@lltrace
-def authenticated_user(cls, req, *args, **kwargs):
-    """accept if user is authenticated"""
-    return not anonymous_user()(cls, req, *args, **kwargs)
+def anonymous_user():
+    return ~ authenticated_user()
 
 @objectify_selector
 @lltrace
--- a/vregistry.py	Wed Feb 18 20:11:19 2009 +0100
+++ b/vregistry.py	Wed Feb 18 20:26:07 2009 +0100
@@ -592,6 +592,9 @@
         return OrSelector(self, other)
     def __ror__(self, other):
         return OrSelector(other, self)
+
+    def __invert__(self):
+        return NotSelector(self)
     
     # XXX (function | function) or (function & function) not managed yet
 
@@ -685,6 +688,17 @@
                 return partscore
         return 0
 
+class NotSelector(Selector):
+    """negation selector"""
+    def __init__(self, selector):
+        self.selector = selector
+
+    def __call__(self, cls, *args, **kwargs):
+        score = self.selector(cls, *args, **kwargs)
+        return not score
+
+    def __str__(self):
+        return 'NOT(%s)' % super(NotSelector, self).__str__()
 
 # advanced selector building functions ########################################
 
--- a/web/views/basetemplates.py	Wed Feb 18 20:11:19 2009 +0100
+++ b/web/views/basetemplates.py	Wed Feb 18 20:26:07 2009 +0100
@@ -75,15 +75,11 @@
         return 0
     return view.templatable
 
-@objectify_selector
-def non_templatable_view(cls, req, rset, *args, **kwargs):
-    return not templatable_view()(cls, req, rset, *args, **kwargs)
-
 
 class NonTemplatableViewTemplate(MainTemplate):
     """main template for any non templatable views (xml, binaries, etc.)"""
     id = 'main-template'
-    __select__ = non_templatable_view()
+    __select__ = ~ templatable_view()
     
     def call(self, view):
         view.set_request_content_type()
@@ -421,7 +417,7 @@
 
 class LogFormTemplate(View):
     id = 'logform'
-    __select__ = match_kwargs('id', 'title')
+    __select__ = match_kwargs('id', 'klass')
     
     title = 'log in'