--- /dev/null
+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