fix bugs. refactor
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 5 Feb 2014 00:50:31 +0000 (19:50 -0500)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 5 Feb 2014 00:50:31 +0000 (19:50 -0500)
planetstack/core/models/site.py
planetstack/core/models/slice.py

index 9b9aba9..edd9373 100644 (file)
@@ -28,11 +28,13 @@ class Site(PlCoreBase):
     def __unicode__(self):  return u'%s' % (self.name)
 
     def can_update(self, user):
+        if user.is_readonly:
+            return False
         if user.is_admin:
             return True
         site_privs = SitePrivilege.objects.filter(user=user, site=self)
         for site_priv in site_privs:
-            if site_priv.role.role_type == 'pi':
+            if site_priv.role.role == 'pi':
                 return True
         return False 
 
@@ -69,13 +71,7 @@ class SitePrivilege(PlCoreBase):
         super(SitePrivilege, self).delete(*args, **kwds)
 
     def can_update(self, user):
-        if user.is_admin:
-            return True
-        site_privs = SitePrivilege.objects.filter(user=user, site=self)
-        for site_priv in site_privs:
-            if site_priv.role.role_type == 'pi':
-                return True
-        return False 
+        return self.site.can_update(user)
 
     @staticmethod
     def select_by_user(user):
@@ -115,7 +111,7 @@ class DeploymentPrivilege(PlCoreBase):
             return True
         dprivs = DeploymentPrivilege.objects.filter(user=user)
         for dpriv in dprivs:
-            if dpriv.role.role_type == 'admin':
+            if dpriv.role.role == 'admin':
                 return True
         return False
 
index 823b1d1..c39d09b 100644 (file)
@@ -49,7 +49,7 @@ class Slice(PlCoreBase):
             return True
         slice_privs = SlicePrivilege.objects.filter(user=user, slice=self)
         for slice_priv in slice_privs:
-            if slice_priv.role.role_type == 'admin':
+            if slice_priv.role.role == 'admin':
                 return True
         return False
 
@@ -77,13 +77,7 @@ class SlicePrivilege(PlCoreBase):
     def __unicode__(self):  return u'%s %s %s' % (self.slice, self.user, self.role)
 
     def can_update(self, user):
-        if user.is_admin:
-            return True
-        slice_privs = SlicePrivilege.objects.filter(user=user, slice=self)
-        for slice_priv in slice_privs:
-            if slice_priv.role.role_type == 'admin':
-                return True
-        return False
+        return self.slice.can_update(user)
 
     @staticmethod
     def select_by_user(user):