diff options
| author | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2010-04-05 20:58:03 +0000 |
|---|---|---|
| committer | etienne <etienne@9215b0d5-fb2c-4bbd-8d3e-bd2e9090e864> | 2010-04-05 20:58:03 +0000 |
| commit | f6892bffd29924e1f0628fafbbfb4f8f1d6d362e (patch) | |
| tree | 4a7cfca594354fde14963ee7c86bfb4fbdf962d4 /chimere/main/models.py | |
| parent | 5f6363cbb2a499ef5009efbe26d9a3b6fc6e16b2 (diff) | |
| download | Chimè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.py | 39 |
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 """ |
