added rbac for viewing objects
[plstackapi.git] / planetstack / core / models / slicetag.py
1 import os
2 from django.db import models
3 from core.models import PlCoreBase
4 from core.models import Slice
5
6 class SliceTag(PlCoreBase):
7     slice = models.ForeignKey(Slice, related_name='slicetags')
8
9     NAME_CHOICES = (('privatekey', 'Private Key'), ('publickey', 'Public Key'))
10     name = models.CharField(help_text="The name of this tag", max_length=30, choices=NAME_CHOICES)
11     value = models.CharField(help_text="The value of this tag", max_length=1024)
12
13     def can_update(self, user):
14         return self.slice.can_update(user)
15
16     def save_by_user(self, user, *args, **kwds):
17         if self.can_update(user):
18             super(SliceTag, self).save(*args, **kwds)
19
20     @staticmethod
21     def select_by_user(user):
22         if user.is_admin:
23             qs = SliceTag.objects.all()
24         else:
25             st_ids = [st.id for st in SliceTag.objects.filter(user=user)]
26             qs = SliceTag.objects.filter(id__in=st_ids)
27         return qs