]> git.sommitrealweird.co.uk Git - sommitrealweird.git/blobdiff - sommitrealweird/bpcms/models.py
rename 'content' to 'bpcms'
[sommitrealweird.git] / sommitrealweird / bpcms / models.py
diff --git a/sommitrealweird/bpcms/models.py b/sommitrealweird/bpcms/models.py
new file mode 100644 (file)
index 0000000..f538421
--- /dev/null
@@ -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