Merge pull request #29 from ikame/master
Fix neighbors fetching in user storiesremotes/origin/enhancement/email-actions
commit
0585ce3162
|
@ -22,12 +22,14 @@ class NeighborsMixin:
|
||||||
"""
|
"""
|
||||||
if queryset is None:
|
if queryset is None:
|
||||||
queryset = type(self).objects.get_queryset()
|
queryset = type(self).objects.get_queryset()
|
||||||
|
if not self._get_queryset_order_by(queryset):
|
||||||
|
queryset = queryset.order_by(*self._meta.ordering)
|
||||||
queryset = queryset.filter(~Q(id=self.id))
|
queryset = queryset.filter(~Q(id=self.id))
|
||||||
|
|
||||||
return self._get_previous_neighbor(queryset), self._get_next_neighbor(queryset)
|
return self._get_previous_neighbor(queryset), self._get_next_neighbor(queryset)
|
||||||
|
|
||||||
def _get_queryset_order_by(self, queryset):
|
def _get_queryset_order_by(self, queryset):
|
||||||
return queryset.query.order_by or [self._meta.pk.name]
|
return queryset.query.order_by or []
|
||||||
|
|
||||||
def _field(self, field):
|
def _field(self, field):
|
||||||
return getattr(self, field.lstrip("-"))
|
return getattr(self, field.lstrip("-"))
|
||||||
|
@ -57,6 +59,7 @@ class NeighborsMixin:
|
||||||
def _get_next_neighbor(self, queryset):
|
def _get_next_neighbor(self, queryset):
|
||||||
conds = [{"{}__{}".format(*self._filter(field, "gt", "lt")): self._field(field)}
|
conds = [{"{}__{}".format(*self._filter(field, "gt", "lt")): self._field(field)}
|
||||||
for field in self._get_queryset_order_by(queryset)]
|
for field in self._get_queryset_order_by(queryset)]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return queryset.filter(self._or(conds))[0]
|
return queryset.filter(self._or(conds))[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
|
|
|
@ -100,7 +100,7 @@ class UserStory(NeighborsMixin, WatchedMixin, BlockedMixin, models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "user story"
|
verbose_name = "user story"
|
||||||
verbose_name_plural = "user stories"
|
verbose_name_plural = "user stories"
|
||||||
ordering = ["project", "order", "ref"]
|
ordering = ["project", "order"]
|
||||||
unique_together = ("ref", "project")
|
unique_together = ("ref", "project")
|
||||||
permissions = (
|
permissions = (
|
||||||
("view_userstory", "Can view user story"),
|
("view_userstory", "Can view user story"),
|
||||||
|
|
Loading…
Reference in New Issue