Changeset 2043
- Timestamp:
- 06/18/09 08:26:39 (9 months ago)
- Location:
- branches/0.9/pylucid_project
- Files:
-
- 5 modified
-
pylucid_plugins/page_admin/views.py (modified) (1 diff)
-
settings.py (modified) (1 diff)
-
tests/test_Design.py (modified) (2 diffs)
-
tests/test_PluginEditPage.py (modified) (4 diffs)
-
tests/test_tools/test_runner.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/0.9/pylucid_project/pylucid_plugins/page_admin/views.py
r2040 r2043 16 16 17 17 EDIT_PERMISSIONS = ( 18 "pylucid.can_edit_page",19 "pylucid.can_edit_pagemeta",18 u'pylucid.change_pagecontent', 19 u'pylucid.change_pagemeta' 20 20 ) 21 21 22 22 23 23 def check_permissions(request, permissions): 24 """ 25 TODO: Add a log entry, if user has not all permissions. 26 """ 27 assert isinstance(permissions, (list, tuple)) 24 28 user = request.user 25 if user.has_perms(permissions):26 return27 29 28 if settings.DEBUG: # Usefull?? 29 for permission in permissions: 30 if not user.has_perm(permission): 31 warnings.warn("User %r has not the permission: %r" % (user, permission)) 30 if not user.is_authenticated(): 31 if settings.DEBUG: # Usefull?? 32 warnings.warn("Anonymous can't edit page.") 33 raise PermissionDenied 34 35 if not user.has_perms(permissions): 36 if settings.DEBUG: # Usefull?? 37 msg = "User %r has not all permissions: %r (existing permissions: %r)" % ( 38 user, permissions, user.get_all_permissions() 39 ) 40 warnings.warn(msg) 41 raise PermissionDenied() 32 42 33 raise PermissionDenied34 43 35 44 -
branches/0.9/pylucid_project/settings.py
r2038 r2043 77 77 78 78 MIDDLEWARE_CLASSES = ( 79 # From http://code.google.com/p/django-tools/ 79 80 'django_tools.middlewares.ThreadLocal.ThreadLocalMiddleware', 80 81 -
branches/0.9/pylucid_project/tests/test_Design.py
r2026 r2043 25 25 self.test_css = EditableHtmlHeadFile.objects.get(filepath=pylucid_test_data.TEST_CSS_FILEPATH) 26 26 self.test_js = EditableHtmlHeadFile.objects.get(filepath=pylucid_test_data.TEST_JS_FILEPATH) 27 28 # fake django HttpRequest object, needed in UpdateInfoBaseModel save() method29 self.fake_request = pylucid_test_data.get_fake_request(usertype="superuser")30 27 31 28 def _assert_headfiles(self, test_css_url, test_js_url): … … 59 56 if not os.path.isfile(cachepath): 60 57 os.makedirs(os.path.dirname(cachepath)) # Cache dir doesn't exist? 61 headfile.save( self.fake_request) # The save method should create the cache file58 headfile.save() # The save method should create the cache file 62 59 # Check if file exist 63 60 self.failUnless(os.path.isfile(cachepath), "Can't create cache file???") -
branches/0.9/pylucid_project/tests/test_PluginEditPage.py
r2041 r2043 8 8 from django.conf import settings 9 9 from django.contrib.sites.models import Site 10 from django.contrib.auth.models import Permission 11 from django.contrib.contenttypes.models import ContentType 10 12 11 13 from django_tools.unittest import unittest_base … … 13 15 from pylucid_project.tests.test_tools import pylucid_test_data 14 16 from pylucid_project.tests.test_tools import basetest 15 from pylucid.models import EditableHtmlHeadFile 16 17 from pylucid.models import EditableHtmlHeadFile, PageMeta, PageContent 17 18 18 19 EDIT_PAGE_URL = "/?page_admin=inline_edit" … … 53 54 54 55 def test_permissions_normal(self): 55 """ 56 A normal user must have explicit permissions to edit a page. 56 """ A normal user must have explicit permissions to edit a page. """ 57 57 58 FIXME: Why can't i add permissions here??? They allways empty?!?! 59 """ 60 user = self.login(usertype="normal") 61 response = self.client.get(EDIT_PAGE_URL) 62 self.assertCanNotEdit(response) 58 def check_permissions(permissions, assertion): 59 user = self.login(usertype="normal") 60 user.user_permissions.clear() # Delete all existing permissions 61 for permission, model in permissions: 62 # Give the test user the permissions: 63 content_type=ContentType.objects.get_for_model(model) 64 perm = Permission.objects.get(content_type=content_type, codename=permission) 65 user.user_permissions.add(perm) 66 67 user = self.login(usertype="normal") # "reloading" user to purge user._perm_cache 68 69 # low level check permissions: 70 codenames = [u"pylucid.%s" % permission for permission,model in permissions] 71 self.failUnless(user.has_perms(codenames), 72 "Low level error, user has not permissions: %r, he has: %r" % ( 73 codenames, user.get_all_permissions() 74 ) 75 ) 76 # Check if he can now edit the page: 77 response = self.client.get(EDIT_PAGE_URL) 78 assertion(response) 63 79 64 # Give the test user the permissions: 65 from django.contrib.auth.models import Permission 66 for i in Permission.objects.all(): 67 print i.pk, i 80 # normal user has no permissions 81 check_permissions(permissions=[], assertion=self.assertCanNotEdit) 68 82 69 print user70 print user.get_all_permissions()71 print user._perm_cache72 user.user_permissions.add("pylucid.can_edit_pagecontent")73 user.user_permissions.add("pylucid.can_edit_pagemeta")74 user.save()75 user = self.login(usertype="normal")76 print user.get_all_permissions()77 print user._perm_cache83 # normal user has only one permission 84 check_permissions( 85 permissions=[("change_pagecontent", PageContent)], 86 assertion=self.assertCanNotEdit 87 ) 88 check_permissions( 89 permissions=[("change_pagemeta", PageMeta)], 90 assertion=self.assertCanNotEdit 91 ) 78 92 79 self.failUnless(user.has_perms(["pylucid.can_edit_page", "pylucid.can_edit_pagemeta"]), "FIXME!!!")80 81 settings.DEBUG = True82 # Check if he can now edit the page:83 response = self.client.get(EDIT_PAGE_URL)84 self.assertCanEdit(response) 93 # normal user has all permission -> he can edit the page 94 check_permissions( 95 permissions=[("change_pagecontent", PageContent), ("change_pagemeta", PageMeta)], 96 assertion=self.assertCanEdit 97 ) 98 85 99 86 100 … … 88 102 if __name__ == "__main__": 89 103 # Run this unitest directly 104 # from django_tools.utils import info_print; info_print.redirect_stdout() 90 105 unittest_base.direct_run(__file__) -
branches/0.9/pylucid_project/tests/test_tools/test_runner.py
r2042 r2043 61 61 except TypeError: 62 62 raise TypeError("Test label '%s' wrong!" % module_name) 63 63 64 64 65 def get_all_tests(verbosity=False): … … 96 97 return test_suite 97 98 99 98 100 def get_tests(test_labels, verbosity=False): 99 101 """ … … 118 120 return get_all_tests(verbosity) 119 121 122 120 123 def setup_unittest_plugin(verbosity): 121 124 if verbosity: … … 133 136 # Add unittest template dir 134 137 settings.TEMPLATE_DIRS += (os.path.join(UNITTEST_PLUGIN_DST_PATH, "templates"),) 135 138 139 136 140 def teardown_unittest_plugin(verbosity): 137 141 if verbosity: 138 142 print "remove unittest plugin symlink" 139 143 os.remove(UNITTEST_PLUGIN_DST_PATH) 140 144 145 141 146 def run_tests(test_labels, verbosity=1, interactive=True, extra_tests=[]): 142 147 """ … … 189 194 return len(result.failures) + len(result.errors) 190 195 196 191 197 if __name__ == "__main__": 192 198 # Run all unitest directly