summaryrefslogtreecommitdiff
path: root/chimere/main/models.py
diff options
context:
space:
mode:
authoretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2010-04-05 20:58:03 +0000
committeretienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864>2010-04-05 20:58:03 +0000
commitf6892bffd29924e1f0628fafbbfb4f8f1d6d362e (patch)
tree4a7cfca594354fde14963ee7c86bfb4fbdf962d4 /chimere/main/models.py
parent5f6363cbb2a499ef5009efbe26d9a3b6fc6e16b2 (diff)
downloadChimère-f6892bffd29924e1f0628fafbbfb4f8f1d6d362e.tar.bz2
Chimère-f6892bffd29924e1f0628fafbbfb4f8f1d6d362e.zip
Make available tinyfied urls - #93
git-svn-id: http://www.peacefrogs.net/svn/chimere/trunk@77 9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864
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
"""