common.js fix
[snf-cloudcms] / cloudcms / models.py
index 696b268..f9a5bba 100644 (file)
@@ -36,9 +36,11 @@ import datetime
 from django.db import models
 from django.conf import settings
 from django.contrib.sites import models as sites_models
+from django.utils.translation import ugettext_lazy as _, ugettext, ungettext
 from django.core.cache import cache
 from django.utils import simplejson
 
+from feincms import translations
 from feincms.module.medialibrary.fields import MediaFileForeignKey
 from feincms.module.medialibrary.models import MediaFile
 
@@ -53,6 +55,16 @@ class Application(models.Model):
     Enabling cloudcms.context_processors.application in CONTEXT_PROCESSROS setting
     let you can access the application object throughout the html templates.
     """
+
+    MESSAGE_TYPE_CHOICES = (
+        ('NM','No Message'),
+        ('success','Success'),
+        ('error','Error'),
+        ('warning','Warning'),
+        ('info','Info'),
+    )
+
     code = models.CharField('Identifier', max_length=100, null=False, blank=False,
             help_text="Just a codename of the application, to be used in "\
                     "several places where no free text is allowed"\
@@ -78,6 +90,11 @@ class Application(models.Model):
     footer_top = models.TextField(default="", blank=True)
     footer_bottom = models.TextField(default="", blank=True)
 
+    message_type = models.CharField(max_length=20, 
+                                    choices= MESSAGE_TYPE_CHOICES,
+                                    default = 'NM' )
+    custom_message = models.TextField(default="", blank=True)
+
     @classmethod
     def current(cls):
         return cls.objects.get(site__pk=settings.SITE_ID)
@@ -110,6 +127,12 @@ class Client(models.Model):
         return simplejson.dumps(list(self.get_sources().get_latest_versions()),
                 default=dthandler)
 
+    def get_default_os(self):
+        try:
+            return self.clientversionsource_set.filter(default=True)[0].os
+        except IndexError:
+            return self.clientversionsource_set.filter()[0].os
+
     def __unicode__(self):
         return self.name
 
@@ -119,6 +142,8 @@ class ClientVersionSource(models.Model):
     Client version source. source_type choices should map to
     cloudcms.clients.SOURCE_TYPES.
     """
+
+    default = models.BooleanField(default=True)
     source_type = models.CharField(max_length=60,
             choices=(('link','Link'),
                      ('direct','Direct'),
@@ -143,3 +168,63 @@ class ClientVersionSource(models.Model):
 # hook for feincms configuration, is this appropriate place ??? who knows
 from cloudcms.cms import *
 
+class Service(models.Model, translations.TranslatedObjectMixin):
+    """
+    Service.
+    """
+
+    ordering = models.SmallIntegerField(_('ordering'), default=0)
+    image_faq = MediaFileForeignKey(MediaFile, blank=True, null=True, related_name='image_faq')
+    image_userguide = MediaFileForeignKey(MediaFile, blank=True, null=True,related_name='image_userguide')
+    class_name = models.CharField(_('class name'), max_length=100, blank=True)
+    
+    
+    class Meta:
+        verbose_name = _('service')
+        verbose_name_plural = _('services')
+        ordering = ['-ordering',]
+
+    objects = translations.TranslatedObjectManager()
+
+    def get_first_question(self):
+        try:
+            return self.faqs.filter(is_active=True)[0]
+        except:
+            return None
+        
+    def get_first_entry(self):
+        try:
+            return self.userguideentries.filter(is_active=True)[0]
+        except:
+            return None
+        
+    def __unicode__(self):
+        trans = translations.TranslatedObjectMixin.__unicode__(self)
+        return trans or _('Unnamed category')
+
+
+class ServiceTranslation(translations.Translation(Service)):
+    """
+    Service translation
+    """
+    title = models.CharField(_('service title'), max_length=100)
+    slug = models.SlugField(_('slug'), unique=True)
+    description = models.CharField(_('description'), max_length=250, blank=True)
+    cms_page = models.ForeignKey(Page, null=True, blank=True)
+    title_faq = models.CharField(_('service title (faq section)'), max_length=100, blank=True)
+    title_userguide = models.CharField(_('service title (userguide section)'), max_length=100, blank=True)
+    
+    class Meta:
+        verbose_name = _('service translation')
+        verbose_name_plural = _('service translations')
+        ordering = ['title']
+
+    def __unicode__(self):
+        return self.title
+
+    def save(self, *args, **kwargs):
+        if not self.slug:
+            self.slug = slugify(self.title)
+
+        super(ServiceTranslation, self).save(*args, **kwargs)
+