display grid cell for POIs
This commit is contained in:
parent
875b18c730
commit
f861fecee5
3 changed files with 20 additions and 4 deletions
|
@ -11,6 +11,7 @@ from django.utils.translation import ugettext_lazy as _
|
||||||
from shapely.geometry import CAP_STYLE, JOIN_STYLE, mapping
|
from shapely.geometry import CAP_STYLE, JOIN_STYLE, mapping
|
||||||
|
|
||||||
from c3nav.mapdata.fields import GeometryField, I18nField, JSONField
|
from c3nav.mapdata.fields import GeometryField, I18nField, JSONField
|
||||||
|
from c3nav.mapdata.grid import grid
|
||||||
from c3nav.mapdata.models import Space
|
from c3nav.mapdata.models import Space
|
||||||
from c3nav.mapdata.models.base import SerializableMixin
|
from c3nav.mapdata.models.base import SerializableMixin
|
||||||
from c3nav.mapdata.models.geometry.base import GeometryMixin
|
from c3nav.mapdata.models.geometry.base import GeometryMixin
|
||||||
|
@ -231,6 +232,10 @@ class POI(SpaceGeometryMixin, SpecificLocation, models.Model):
|
||||||
result['editor_url'] = reverse('editor.pois.edit', kwargs={'space': self.space_id, 'pk': self.pk})
|
result['editor_url'] = reverse('editor.pois.edit', kwargs={'space': self.space_id, 'pk': self.pk})
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@property
|
||||||
|
def grid_cell(self):
|
||||||
|
return grid.get_cell_for_point(self.x, self.y) or ''
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def x(self):
|
def x(self):
|
||||||
return self.geometry.x
|
return self.geometry.x
|
||||||
|
|
|
@ -115,6 +115,10 @@ class Location(LocationSlug, AccessRestrictionMixin, TitledMixin, models.Model):
|
||||||
def subtitle(self):
|
def subtitle(self):
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
@property
|
||||||
|
def grid_cell(self):
|
||||||
|
return None
|
||||||
|
|
||||||
def get_color(self, instance=None):
|
def get_color(self, instance=None):
|
||||||
# dont filter in the query here so prefetch_related works
|
# dont filter in the query here so prefetch_related works
|
||||||
if instance is None:
|
if instance is None:
|
||||||
|
@ -167,7 +171,10 @@ class SpecificLocation(Location, models.Model):
|
||||||
def subtitle(self):
|
def subtitle(self):
|
||||||
groups = tuple(self.groups.all() if 'groups' in getattr(self, '_prefetched_objects_cache', ()) else ())
|
groups = tuple(self.groups.all() if 'groups' in getattr(self, '_prefetched_objects_cache', ()) else ())
|
||||||
groups = tuple(group for group in groups if group.can_describe)
|
groups = tuple(group for group in groups if group.can_describe)
|
||||||
return groups[0].title if groups else self.__class__._meta.verbose_name
|
subtitle = groups[0].title if groups else self.__class__._meta.verbose_name
|
||||||
|
if self.grid_cell:
|
||||||
|
return '%s, %s' % (subtitle, self.grid_cell)
|
||||||
|
return subtitle
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def order(self):
|
def order(self):
|
||||||
|
|
|
@ -366,10 +366,14 @@ class CustomLocation:
|
||||||
def near_poi(self):
|
def near_poi(self):
|
||||||
return self.description.near_poi
|
return self.description.near_poi
|
||||||
|
|
||||||
|
@cached_property
|
||||||
|
def grid_cell(self):
|
||||||
|
return grid.get_cell_for_point(self.x, self.y) or ''
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def title_subtitle(self):
|
def title_subtitle(self):
|
||||||
grid_cell = grid.get_cell_for_point(self.x, self.y)
|
grid_cell = self.grid_cell
|
||||||
level_subtitle = self.level.title if grid_cell is None else ','.join((grid_cell, str(self.level.title)))
|
level_subtitle = self.level.title if not grid_cell else ','.join((grid_cell, str(self.level.title)))
|
||||||
|
|
||||||
title = _('In %(level)s') % {'level': self.level.title}
|
title = _('In %(level)s') % {'level': self.level.title}
|
||||||
if not self.space:
|
if not self.space:
|
||||||
|
@ -392,7 +396,7 @@ class CustomLocation:
|
||||||
return _('In %(space)s') % {'space': self.space.title}, level_subtitle
|
return _('In %(space)s') % {'space': self.space.title}, level_subtitle
|
||||||
|
|
||||||
subtitle_segments = chain((grid_cell, ), subtitle, (self.space.title, self.level.title))
|
subtitle_segments = chain((grid_cell, ), subtitle, (self.space.title, self.level.title))
|
||||||
subtitle = ', '.join(str(title) for title in subtitle_segments if title is not None)
|
subtitle = ', '.join(str(title) for title in subtitle_segments if title)
|
||||||
return title, subtitle
|
return title, subtitle
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue