from django.db import models
from core.models import PlCoreBase
from core.models import Site
+from core.models.site import SitePrivilege
from core.models import User
from core.models import Role
from core.models import Deployment
description=models.TextField(blank=True,help_text="High level description of the slice and expected activities", max_length=1024)
slice_url = models.URLField(blank=True, max_length=512)
site = models.ForeignKey(Site, related_name='slices', help_text="The Site this Slice belongs to")
- imagePreference = models.CharField(default="abc",null=True, blank=True, max_length=256)
+ max_slivers = models.IntegerField(default=10)
+ imagePreference = models.CharField(default="Ubuntu 12.04 LTS", null=True, blank=True, max_length=256)
service = models.ForeignKey(Service, related_name='service', null=True, blank=True)
-
+ network = models.CharField(default="Private Only",null=True, blank=True, max_length=256)
+ mountDataSets = models.CharField(default="GenBank",null=True, blank=True, max_length=256)
tags = generic.GenericRelation(Tag)
serviceClass = models.ForeignKey(ServiceClass, related_name = "slices", null=True, default=ServiceClass.get_default)
def __unicode__(self): return u'%s' % (self.name)
+ @property
+ def slicename(self):
+ return "%s_%s" % (self.site.login_base, self.name)
+
def save(self, *args, **kwds):
if self.serviceClass is None:
# We allowed None=True for serviceClass because Django evolution
return False
if user.is_admin:
return True
+ # slice admins can update
slice_privs = SlicePrivilege.objects.filter(user=user, slice=self)
for slice_priv in slice_privs:
if slice_priv.role.role == 'admin':
return True
+ # site pis can update
+ site_privs = SitePrivilege.objects.filter(user=user, site=self.site)
+ for site_priv in site_privs:
+ if site_priv.role.role == 'pi':
+ return True
+
return False
@staticmethod