summaryrefslogtreecommitdiff
path: root/chimere/main/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/main/models.py')
-rw-r--r--chimere/main/models.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/chimere/main/models.py b/chimere/main/models.py
index 4197a23..5c4151c 100644
--- a/chimere/main/models.py
+++ b/chimere/main/models.py
@@ -43,6 +43,45 @@ class News(models.Model):
class Meta:
verbose_name = _("News")
+class TinyUrl(models.Model):
+ """Tinyfied version of permalink parameters
+ """
+ parameters = models.CharField(_("Parameters"), max_length=500)
+ def __unicode__(self):
+ return self.parameters
+ class Meta:
+ verbose_name = _("TinyUrl")
+ digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ base = len(digits)
+
+ @classmethod
+ def getParametersByUrn(cls, urn):
+ c_id = 0
+ for idx, char in enumerate(urn):
+ c_id += cls.digits.index(char)*pow(cls.base, idx)
+ try:
+ params = cls.objects.get(id=c_id).parameters
+ except cls.DoesNotExist:
+ return ''
+ return params
+
+ @classmethod
+ def getUrnByParameters(cls, parameters):
+ try:
+ object = cls.objects.get(parameters=parameters)
+ except cls.DoesNotExist:
+ object = cls(parameters=parameters)
+ object.save()
+ n = object.id
+ urn = ''
+ while 1:
+ idx = n % cls.base
+ urn = cls.digits[idx] + urn
+ n = n / cls.base
+ if n == 0:
+ break
+ return urn
+
class ColorTheme(models.Model):
"""Color theme
"""