blob: d46453278f7ab85244458f28c8e863fe9a8fdc25 [file] [log] [blame]
Siobhan Tully4bc09f22013-04-10 21:15:21 -04001import os
2from django.db import models
Siobhan Tully30fd4292013-05-10 08:59:56 -04003from core.models import PlCoreBase
Tony Mackd84b1ff2015-03-09 13:03:56 -04004from core.models.plcorebase import StrippedCharField
Tony Mackd893dfb2015-02-05 06:13:04 -05005from core.models import Site, SiteDeployment, SitePrivilege
Siobhan Tullyde5450d2013-06-21 11:35:33 -04006from core.models import Tag
7from django.contrib.contenttypes import generic
Siobhan Tully4bc09f22013-04-10 21:15:21 -04008
9# Create your models here.
10
11class Node(PlCoreBase):
Tony Mackd84b1ff2015-03-09 13:03:56 -040012 name = StrippedCharField(max_length=200, unique=True, help_text="Name of the Node")
Tony Macka7dbd422015-01-05 22:48:11 -050013 site_deployment = models.ForeignKey(SiteDeployment, related_name='nodes')
Tony Mack82df1d02015-01-14 20:58:38 -050014 site = models.ForeignKey(Site, null=True, blank=True, related_name='nodes')
Siobhan Tullyde5450d2013-06-21 11:35:33 -040015 tags = generic.GenericRelation(Tag)
Siobhan Tully4bc09f22013-04-10 21:15:21 -040016
17 def __unicode__(self): return u'%s' % (self.name)
Sapan Bhatia690f8032014-06-13 12:50:36 -040018
Sapan Bhatiaa28bcf92015-11-03 13:51:04 -050019 def __init__(self, *args, **kwargs):
20 super(Node, self).__init__(*args, **kwargs)
21 self.no_sync=True
22
Tony Mack82df1d02015-01-14 20:58:38 -050023 def save(self, *args, **kwds):
24 if self.site is None and self.site_deployment is not None:
25 self.site = self.site_deployment.site
26
27 super(Node, self).save(*args, **kwds)
Tony Mackd893dfb2015-02-05 06:13:04 -050028
29 def can_update(self, user):
Tony Mack5ff90fc2015-02-08 21:38:41 -050030 return user.can_update_site(self.site, allow=['tech'])
Scott Baker3ad54ff2016-03-04 10:35:32 -080031
32class NodeLabel(PlCoreBase):
33 name = StrippedCharField(max_length=200, help_text="label name", unique=True)
Scott Baker1271a4d2016-04-06 14:34:49 -070034 node = models.ManyToManyField(Node, related_name="nodelabels", blank=True)
Scott Baker3ad54ff2016-03-04 10:35:32 -080035
36 def __unicode__(self): return u'%s' % (self.name)