Django

Code

Changeset 5751

Show
Ignore:
Timestamp:
07/23/07 03:47:40 (1 year ago)
Author:
jdunck
Message:

gis: Added KML sitemap support.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/gis/django/contrib/gis/db/models/manager.py

    r4884 r5751  
    77    def get_query_set(self): 
    88        return GeoQuerySet(model=self.model) 
     9 
     10    def kml(self, field_name): 
     11        return self.get_query_set().kml(field_name) 
  • django/branches/gis/django/contrib/gis/db/models/query.py

    r5008 r5751  
    11from django.db.models.query import Q, QuerySet 
     2from django.db import backend 
     3from django.contrib.gis.db.models.fields import GeometryField 
    24from django.contrib.gis.db.models.postgis import parse_lookup 
     5from django.db.models.fields import FieldDoesNotExist 
    36import operator 
    47 
     
    3437            clone._filters = clone._filters & reduce(operator.and_, map(mapper, args)) 
    3538        return clone 
     39 
     40    def kml(self, field_name): 
     41        field = self.model._meta.get_field(field_name) 
     42 
     43        field_col = "%s.%s" % (backend.quote_name(self.model._meta.db_table), 
     44                            backend.quote_name(field.column)) 
     45         
     46        return self.extra(select={'kml':'AsKML(%s,6)' % field_col}) 
  • django/branches/gis/django/contrib/sitemaps/__init__.py

    r5492 r5751  
    8989            return getattr(item, self.date_field) 
    9090        return None 
     91 
     92 
     93class KMLSitemap(Sitemap): 
     94    """ 
     95    A minimal hook to  
     96    """ 
     97    def __init__(self, locations=None): 
     98        if locations is None: 
     99            self.locations = [] 
     100        else: 
     101            self.locations = locations 
     102 
     103    def items(self): 
     104        return self.locations 
     105 
     106    def location(self, obj): 
     107        urlresolvers.reverse('django.contrib.gis.sitemaps.kml', 
     108                             kwargs={'label':obj[0], 
     109                                     'field':obj[1]}) 
     110         
     111