X-Git-Url: https://git.sommitrealweird.co.uk/sommitrealweird.git/blobdiff_plain/a2883504e45a556b06e76f023395e879e01ae03c..56b2cdf3569443cf4504fe085de9db0466dcd09f:/sommitrealweird/bpcms/models.py diff --git a/sommitrealweird/bpcms/models.py b/sommitrealweird/bpcms/models.py new file mode 100644 index 0000000..f538421 --- /dev/null +++ b/sommitrealweird/bpcms/models.py @@ -0,0 +1,78 @@ +from django.db import models +from bpcms.content_val import is_unique_name + +FORMAT_CHOICES = ( + ('rst', 'reStructuredText'), + ('html', 'HTML'), + ) + +class Document(models.Model): + title = models.CharField(maxlength=150) + islive = models.BooleanField() + folder = models.ForeignKey('Folder', null=True, blank=True) + format = models.CharField(maxlength=10, choices=FORMAT_CHOICES) + slug = models.SlugField(prepopulate_from=("title",), validator_list=[is_unique_name,]) + content = models.TextField() + + def __str__(self): + return self.__unicode__() + + def __unicode__(self): + return u'%s (%s)' %(self.title, self.slug) + + def save(self): + super(Document, self).save() + # now check if we just set our selves to be live + if self.islive: + if self.folder: + otherdocs = Document.objects.filter(slug__exact=self.slug, islive__exact=True, folder__exact=self.folder).exclude(pk=self.id) + else: + otherdocs = Document.objects.filter(slug__exact=self.slug, islive__exact=True, folder__isnull=True).exclude(pk=self.id) + for doc in otherdocs: + doc.islive = False + doc.save() + + def get_basic_url(self): + folders = [] + curfolder = self.folder + while curfolder != None: + folders.append(curfolder.slug) + curfolder = curfolder.parent + + folders.reverse() + folderstring = "/".join(folders) + if folderstring != u'': + folderstring = "%s/" %(folderstring,) + + return "%s%s/" %(folderstring, self.slug) + + class Admin: + pass + +class Folder(models.Model): + title = models.CharField(maxlength=150) + slug = models.SlugField(prepopulate_from=("title",)) + parent = models.ForeignKey('self', null=True, blank=True) + + def __str__(self): + return self.__unicode__() + + def __unicode__(self): + return u'%s' %(self.title) + + def get_basic_url(self): + folders = [] + curfolder = self + while curfolder != None: + folders.append(curfolder.slug) + curfolder = curfolder.parent + + folders.reverse() + folderstring = "/".join(folders) + if folderstring != u'': + folderstring = "%s/" %(folderstring,) + + return "%s" %(folderstring) + + class Admin: + pass