View difference between Paste ID: yADpZykJ and zr2L2jCf
SHOW: | | - or go back to the newest paste.
1
class Coordinates(object):
2
3
    def __init__(self, lng, lat):
4
        super(Coordinates, self).__init__()
5
        self.lng = float(lng)
6
        self.lat = float(lat)
7
8
    def to_sql(self):
9
        return "GeomFromText('POINT(%s %s)')" % (self.lng, self.lat)
10
11
    def __unicode__(self):
12
        return 'Coordinates(lat=%s, lng=%s)' % (self.lat, self.lng)
13
14
    @staticmethod
15
    def to_python(value):
16-
        return Coordinates(0, 0)# value
16+
        return value
17-
        lat = None
17+
        # write the rest when i know what to do
18-
        lng = None
18+
        return Coordinates(0, 0)
19
20-
        if isinstance(value, (list, tuple)):
20+
21-
            lat, lng = value
21+
22-
            return Coordinates(lat, lng)
22+
23
    __metaclass__ = models.SubfieldBase
24-
        if isinstance(value, (str, unicode)):
24+
25-
            lat, lng = value.split(' ')
25+
26-
            return Coordinates(lat, lng)
26+
27
        super(GeometryField, self).__init__(*args, **kwargs)
28
        self.spatial = True
29
30
    def db_type(self, connection):
31
        return 'GEOMETRY'
32
33
    def to_python(self, value):
34
        if isinstance(value, Coordinates):
35
            return value
36
37
        return Coordinates.to_python(value)
38
39
    def get_prep_value(self, value):
40
        return self.to_python(value)
41
42
    def get_db_prep_save(self, value, connection):
43
        return self.to_python(value).to_sql()
44
45
    def value_to_string(self, obj):
46
        value = self._get_val_from_obj(obj)
47
        return self.get_db_prep_value(value)