web/blinkster/models.py
author ymh <ymh.work@gmail.com>
Fri, 22 Jan 2010 02:39:52 +0100
changeset 7 92ccb522e945
parent 5 10b1f6d8a5d2
child 9 60555e0d17f4
permissions -rw-r--r--
correct dependency loop

import os

from django.db import models
from django.contrib import admin
import uuid
import photologue.models
from django.conf import settings

def build_localized_fieldname(field_name, lang):
    return '%s_%s' % (field_name, lang)

def get_sid():
    return unicode(uuid.uuid1())

class Roi(models.Model):
    
    sid = models.CharField(max_length=36, unique=True, blank=False, null=False, db_index=True, editable=False, default=get_sid)
    title = models.CharField(max_length=1024, unique=True, blank=False, null=False)
    short_title = models.CharField(max_length=512, unique=True, blank=False, null=False)
    description = models.TextField(blank=True, null=True)
    loc = models.CharField(max_length=512, unique=False, blank=True, null=True)
    loc_radius = models.FloatField(null=True)
    photos = models.ForeignKey(photologue.models.Gallery, null=True)
    
    
    def serialize_to_dict(self):
        res = {
            "sid": self.sid,
        }
        
        for fieldname in ["title","short_title","description"]:
            lang_dict = {}
            for l in settings.LANGUAGES:
                lang = l[0]
                lfieldname = build_localized_fieldname(fieldname, lang)
                lang_dict[lang] = self.__dict__[lfieldname]
            res[fieldname] = lang_dict
        
        res["loc"] = {}
        if self.loc:
            loc_array = self.loc.split(",")
            res["loc"] = { "type" : "Point", "coordinates": [float(loc_array[0]),float(loc_array[1])] }
        
        res["loc_radius"] = self.loc_radius
        
        res["photos"] = []
        
        if self.photos:
            for photo in self.photos.photos.all():
                res["photos"].append({"title":photo.title,"url":settings.WEB_URL.strip("/")+photo.image.url})

        return res

admin.site.register(Roi)