diff --git a/src/c3nav/editor/api/geometries.py b/src/c3nav/editor/api/geometries.py index 3bf35b4f..79b7faf5 100644 --- a/src/c3nav/editor/api/geometries.py +++ b/src/c3nav/editor/api/geometries.py @@ -105,7 +105,7 @@ def conditional_geojson(obj, update_cache_key_match): if update_cache_key_match and not obj._affected_by_changeset: return obj.get_geojson_key() - result = obj.to_geojson(instance=obj) + result = obj.to_geojson() result['properties']['changed'] = obj._affected_by_changeset return result diff --git a/src/c3nav/mapdata/models/geometry/base.py b/src/c3nav/mapdata/models/geometry/base.py index 084c1b1f..2d717ea8 100644 --- a/src/c3nav/mapdata/models/geometry/base.py +++ b/src/c3nav/mapdata/models/geometry/base.py @@ -58,10 +58,10 @@ class GeometryMixin(SerializableMixin): def get_geojson_key(self): return (self.__class__.__name__.lower(), self.id) - def to_geojson(self, instance=None) -> dict: + def to_geojson(self) -> dict: result = { 'type': 'Feature', - 'properties': self.get_geojson_properties(instance=instance), + 'properties': self.get_geojson_properties(), 'geometry': format_geojson(smart_mapping(self.geometry), rounded=False), } original_geometry = getattr(self, 'original_geometry', None) diff --git a/src/c3nav/mapdata/models/geometry/level.py b/src/c3nav/mapdata/models/geometry/level.py index 4f1ae7d8..3b52a5e7 100644 --- a/src/c3nav/mapdata/models/geometry/level.py +++ b/src/c3nav/mapdata/models/geometry/level.py @@ -40,12 +40,12 @@ class LevelGeometryMixin(GeometryMixin): class Meta: abstract = True - def get_geojson_properties(self, *args, instance=None, **kwargs) -> dict: + def get_geojson_properties(self, *args, **kwargs) -> dict: result = super().get_geojson_properties(*args, **kwargs) result['level'] = self.level_id if hasattr(self, 'get_color'): from c3nav.mapdata.render.theme import ColorManager - color = self.get_color(ColorManager.for_theme(None), instance=instance) + color = self.get_color(ColorManager.for_theme(None)) if color: result['color'] = color if hasattr(self, 'opacity'): diff --git a/src/c3nav/mapdata/models/geometry/space.py b/src/c3nav/mapdata/models/geometry/space.py index cb6828c8..e2747cbb 100644 --- a/src/c3nav/mapdata/models/geometry/space.py +++ b/src/c3nav/mapdata/models/geometry/space.py @@ -39,11 +39,11 @@ class SpaceGeometryMixin(GeometryMixin): except ObjectDoesNotExist: return None - def get_geojson_properties(self, *args, instance=None, **kwargs) -> dict: + def get_geojson_properties(self, *args, **kwargs) -> dict: result = super().get_geojson_properties(*args, **kwargs) if hasattr(self, 'get_color'): from c3nav.mapdata.render.theme import ColorManager - color = self.get_color(ColorManager.for_theme(None), instance=instance) + color = self.get_color(ColorManager.for_theme(None)) if color: result['color'] = color if hasattr(self, 'opacity'): @@ -226,10 +226,10 @@ class Obstacle(SpaceGeometryMixin, models.Model): default_related_name = 'obstacles' ordering = ('altitude', 'height') - def get_geojson_properties(self, *args, instance=None, **kwargs) -> dict: + def get_geojson_properties(self, *args, **kwargs) -> dict: result = super().get_geojson_properties(*args, **kwargs) from c3nav.mapdata.render.theme import ColorManager - color = self.get_color(ColorManager.for_theme(None), instance=instance) + color = self.get_color(ColorManager.for_theme(None)) if color: result['color'] = color return result @@ -242,12 +242,10 @@ class Obstacle(SpaceGeometryMixin, models.Model): result['color'] = self.get_color(ColorManager.for_theme(None)) return result - def get_color(self, color_manager: 'ThemeColorManager', instance=None): - if instance is None: - instance = self + def get_color(self, color_manager: 'ThemeColorManager'): return ( - color_manager.obstaclegroup_fill_color(instance.group) - if instance.group is not None + color_manager.obstaclegroup_fill_color(self.group) + if self.group is not None else color_manager.obstacles_default_fill ) @@ -270,10 +268,10 @@ class LineObstacle(SpaceGeometryMixin, models.Model): default_related_name = 'lineobstacles' ordering = ('altitude', 'height') - def get_geojson_properties(self, *args, instance=None, **kwargs) -> dict: + def get_geojson_properties(self, *args, **kwargs) -> dict: result = super().get_geojson_properties(*args, **kwargs) from c3nav.mapdata.render.theme import ColorManager - color = self.get_color(ColorManager.for_theme(None), instance=instance) + color = self.get_color(ColorManager.for_theme(None)) if color: result['color'] = color return result @@ -289,13 +287,11 @@ class LineObstacle(SpaceGeometryMixin, models.Model): result['buffered_geometry'] = format_geojson(mapping(self.buffered_geometry)) return result - def get_color(self, color_manager: 'ThemeColorManager', instance=None): - if instance is None: - instance = self + def get_color(self, color_manager: 'ThemeColorManager'): # TODO: should line obstacles use border color? return ( - color_manager.obstaclegroup_fill_color(instance.group) - if instance.group is not None + color_manager.obstaclegroup_fill_color(self.group) + if self.group is not None else color_manager.obstacles_default_fill ) diff --git a/src/c3nav/mapdata/models/graph.py b/src/c3nav/mapdata/models/graph.py index 834fd991..edde9e5a 100644 --- a/src/c3nav/mapdata/models/graph.py +++ b/src/c3nav/mapdata/models/graph.py @@ -73,7 +73,7 @@ class GraphEdge(AccessRestrictionMixin, models.Model): default_related_name = 'graphedges' unique_together = (('from_node', 'to_node'), ) - def to_geojson(self, instance=None) -> dict: + def to_geojson(self) -> dict: result = { 'type': 'Feature', 'properties': { diff --git a/src/c3nav/mapdata/models/locations.py b/src/c3nav/mapdata/models/locations.py index d1bebfbb..29dbea94 100644 --- a/src/c3nav/mapdata/models/locations.py +++ b/src/c3nav/mapdata/models/locations.py @@ -75,10 +75,10 @@ class LocationSlug(SerializableMixin, models.Model): objects = LocationSlugManager() - def get_child(self, instance=None): + def get_child(self): for model in get_submodels(Location)+[LocationRedirect]: with suppress(AttributeError): - return getattr(instance or self, model._meta.default_related_name) + return getattr(self, model._meta.default_related_name) return None def get_slug(self): @@ -159,16 +159,14 @@ class Location(LocationSlug, AccessRestrictionMixin, TitledMixin, models.Model): def grid_square(self): return None - def get_color(self, color_manager: 'ThemeColorManager', instance=None) -> str | None: + def get_color(self, color_manager: 'ThemeColorManager') -> str | None: # don't filter in the query here so prefetch_related works - result = self.get_color_sorted(color_manager, instance) + result = self.get_color_sorted(color_manager) return None if result is None else result[1] - def get_color_sorted(self, color_manager: 'ThemeColorManager', instance=None) -> tuple[tuple, str] | None: + def get_color_sorted(self, color_manager: 'ThemeColorManager') -> tuple[tuple, str] | None: # don't filter in the query here so prefetch_related works - if instance is None: - instance = self - for group in instance.groups.all(): + for group in self.groups.all(): color = color_manager.locationgroup_fill_color(group) if color and getattr(group.category, 'allow_'+self.__class__._meta.default_related_name): return (0, group.category.priority, group.hierarchy, group.priority), color