|
|
@ -11,6 +11,7 @@ from abc import abstractmethod
|
|
|
|
from django.contrib.gis import geos
|
|
|
|
from django.contrib.gis import geos
|
|
|
|
from django.contrib.gis.geos import GEOSGeometry
|
|
|
|
from django.contrib.gis.geos import GEOSGeometry
|
|
|
|
from django.core.paginator import Paginator
|
|
|
|
from django.core.paginator import Paginator
|
|
|
|
|
|
|
|
from django.db.models import Q
|
|
|
|
|
|
|
|
|
|
|
|
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
|
|
|
|
from konova.sub_settings.lanis_settings import DEFAULT_SRID_RLP
|
|
|
|
from konova.utils.message_templates import DATA_UNSHARED
|
|
|
|
from konova.utils.message_templates import DATA_UNSHARED
|
|
|
@ -32,8 +33,8 @@ class AbstractModelAPISerializer:
|
|
|
|
self.lookup = {
|
|
|
|
self.lookup = {
|
|
|
|
"id": None, # must be set
|
|
|
|
"id": None, # must be set
|
|
|
|
"deleted__isnull": True,
|
|
|
|
"deleted__isnull": True,
|
|
|
|
"users__in": [], # must be set
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
self.shared_lookup = Q() # must be set, so user or team based share will be used properly
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
@abstractmethod
|
|
|
|
@abstractmethod
|
|
|
@ -76,7 +77,11 @@ class AbstractModelAPISerializer:
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
# Return certain object
|
|
|
|
# Return certain object
|
|
|
|
self.lookup["id"] = _id
|
|
|
|
self.lookup["id"] = _id
|
|
|
|
self.lookup["users__in"] = [user]
|
|
|
|
|
|
|
|
|
|
|
|
self.shared_lookup = Q(
|
|
|
|
|
|
|
|
Q(users__in=[user]) |
|
|
|
|
|
|
|
|
Q(teams__in=list(user.shared_teams))
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
def fetch_and_serialize(self):
|
|
|
|
def fetch_and_serialize(self):
|
|
|
|
""" Serializes the model entry according to the given lookup data
|
|
|
|
""" Serializes the model entry according to the given lookup data
|
|
|
@ -86,7 +91,13 @@ class AbstractModelAPISerializer:
|
|
|
|
Returns:
|
|
|
|
Returns:
|
|
|
|
serialized_data (dict)
|
|
|
|
serialized_data (dict)
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
entries = self.model.objects.filter(**self.lookup).order_by("id")
|
|
|
|
entries = self.model.objects.filter(
|
|
|
|
|
|
|
|
**self.lookup
|
|
|
|
|
|
|
|
).filter(
|
|
|
|
|
|
|
|
self.shared_lookup
|
|
|
|
|
|
|
|
).order_by(
|
|
|
|
|
|
|
|
"id"
|
|
|
|
|
|
|
|
).distinct()
|
|
|
|
self.paginator = Paginator(entries, self.rpp)
|
|
|
|
self.paginator = Paginator(entries, self.rpp)
|
|
|
|
requested_entries = self.paginator.page(self.page_number)
|
|
|
|
requested_entries = self.paginator.page(self.page_number)
|
|
|
|
|
|
|
|
|
|
|
|