Siobhan Tully | 4bc09f2 | 2013-04-10 21:15:21 -0400 | [diff] [blame] | 1 | import os |
| 2 | from django.db import models |
Siobhan Tully | 30fd429 | 2013-05-10 08:59:56 -0400 | [diff] [blame] | 3 | from core.models import PlCoreBase |
Tony Mack | d84b1ff | 2015-03-09 13:03:56 -0400 | [diff] [blame] | 4 | from core.models.plcorebase import StrippedCharField |
Tony Mack | d893dfb | 2015-02-05 06:13:04 -0500 | [diff] [blame] | 5 | from core.models import Site, SiteDeployment, SitePrivilege |
Siobhan Tully | de5450d | 2013-06-21 11:35:33 -0400 | [diff] [blame] | 6 | from core.models import Tag |
| 7 | from django.contrib.contenttypes import generic |
Siobhan Tully | 4bc09f2 | 2013-04-10 21:15:21 -0400 | [diff] [blame] | 8 | |
| 9 | # Create your models here. |
| 10 | |
| 11 | class Node(PlCoreBase): |
Tony Mack | d84b1ff | 2015-03-09 13:03:56 -0400 | [diff] [blame] | 12 | name = StrippedCharField(max_length=200, unique=True, help_text="Name of the Node") |
Tony Mack | a7dbd42 | 2015-01-05 22:48:11 -0500 | [diff] [blame] | 13 | site_deployment = models.ForeignKey(SiteDeployment, related_name='nodes') |
Tony Mack | 82df1d0 | 2015-01-14 20:58:38 -0500 | [diff] [blame] | 14 | site = models.ForeignKey(Site, null=True, blank=True, related_name='nodes') |
Siobhan Tully | de5450d | 2013-06-21 11:35:33 -0400 | [diff] [blame] | 15 | tags = generic.GenericRelation(Tag) |
Siobhan Tully | 4bc09f2 | 2013-04-10 21:15:21 -0400 | [diff] [blame] | 16 | |
| 17 | def __unicode__(self): return u'%s' % (self.name) |
Sapan Bhatia | 690f803 | 2014-06-13 12:50:36 -0400 | [diff] [blame] | 18 | |
Sapan Bhatia | a28bcf9 | 2015-11-03 13:51:04 -0500 | [diff] [blame] | 19 | def __init__(self, *args, **kwargs): |
| 20 | super(Node, self).__init__(*args, **kwargs) |
| 21 | self.no_sync=True |
| 22 | |
Tony Mack | 82df1d0 | 2015-01-14 20:58:38 -0500 | [diff] [blame] | 23 | 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 Mack | d893dfb | 2015-02-05 06:13:04 -0500 | [diff] [blame] | 28 | |
| 29 | def can_update(self, user): |
Tony Mack | 5ff90fc | 2015-02-08 21:38:41 -0500 | [diff] [blame] | 30 | return user.can_update_site(self.site, allow=['tech']) |
Scott Baker | 3ad54ff | 2016-03-04 10:35:32 -0800 | [diff] [blame] | 31 | |
| 32 | class NodeLabel(PlCoreBase): |
| 33 | name = StrippedCharField(max_length=200, help_text="label name", unique=True) |
Scott Baker | 1271a4d | 2016-04-06 14:34:49 -0700 | [diff] [blame] | 34 | node = models.ManyToManyField(Node, related_name="nodelabels", blank=True) |
Scott Baker | 3ad54ff | 2016-03-04 10:35:32 -0800 | [diff] [blame] | 35 | |
| 36 | def __unicode__(self): return u'%s' % (self.name) |