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 c3nav.mapdata.fields import GeometryField, I18nField, JSONField
|
||||
from c3nav.mapdata.grid import grid
|
||||
from c3nav.mapdata.models import Space
|
||||
from c3nav.mapdata.models.base import SerializableMixin
|
||||
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})
|
||||
return result
|
||||
|
||||
@property
|
||||
def grid_cell(self):
|
||||
return grid.get_cell_for_point(self.x, self.y) or ''
|
||||
|
||||
@property
|
||||
def x(self):
|
||||
return self.geometry.x
|
||||
|
|
|
@ -115,6 +115,10 @@ class Location(LocationSlug, AccessRestrictionMixin, TitledMixin, models.Model):
|
|||
def subtitle(self):
|
||||
return ''
|
||||
|
||||
@property
|
||||
def grid_cell(self):
|
||||
return None
|
||||
|
||||
def get_color(self, instance=None):
|
||||
# dont filter in the query here so prefetch_related works
|
||||
if instance is None:
|
||||
|
@ -167,7 +171,10 @@ class SpecificLocation(Location, models.Model):
|
|||
def subtitle(self):
|
||||
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)
|
||||
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
|
||||
def order(self):
|
||||
|
|
|
@ -366,10 +366,14 @@ class CustomLocation:
|
|||
def near_poi(self):
|
||||
return self.description.near_poi
|
||||
|
||||
@cached_property
|
||||
def grid_cell(self):
|
||||
return grid.get_cell_for_point(self.x, self.y) or ''
|
||||
|
||||
@cached_property
|
||||
def title_subtitle(self):
|
||||
grid_cell = grid.get_cell_for_point(self.x, self.y)
|
||||
level_subtitle = self.level.title if grid_cell is None else ','.join((grid_cell, str(self.level.title)))
|
||||
grid_cell = self.grid_cell
|
||||
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}
|
||||
if not self.space:
|
||||
|
@ -392,7 +396,7 @@ class CustomLocation:
|
|||
return _('In %(space)s') % {'space': self.space.title}, level_subtitle
|
||||
|
||||
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
|
||||
|
||||
@cached_property
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue