Refactored classmethods to use aggregation Max instead order_by.
parent
30c19c257a
commit
7a242dd41c
|
|
@ -24,9 +24,10 @@ class Sortable(models.Model):
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_sortable(cls):
|
def is_sortable(cls):
|
||||||
try:
|
try:
|
||||||
return True if cls.objects.order_by('-order')[:1][0].order > 1 else False
|
max_order = cls.objects.aggregate(models.Max('order'))['order__max']
|
||||||
except IndexError:
|
except TypeError, IndexError:
|
||||||
return False
|
max_order = 0
|
||||||
|
return True if max_order > 1 else False
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def model_type_id(cls):
|
def model_type_id(cls):
|
||||||
|
|
@ -35,9 +36,9 @@ class Sortable(models.Model):
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.id:
|
if not self.id:
|
||||||
try:
|
try:
|
||||||
#increment the order field by adding one to the last value of order
|
max_order = self.__class__.objects.aggregate(models.Max('order'))['order__max'] + 1
|
||||||
self.order = self.__class__.objects.order_by('-order')[:1][0].order + 1
|
except TypeError, IndexError:
|
||||||
except IndexError:
|
max_order = 1
|
||||||
#order defaults to 1
|
self.order = max_order
|
||||||
pass
|
|
||||||
super(Sortable, self).save(*args, **kwargs)
|
super(Sortable, self).save(*args, **kwargs)
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ class SortableTestCase(TestCase):
|
||||||
self.user.save()
|
self.user.save()
|
||||||
|
|
||||||
def create_category(self, title='Category 1'):
|
def create_category(self, title='Category 1'):
|
||||||
category, _ = Category.objects.get_or_create(title=title)
|
category = Category.objects.create(title=title)
|
||||||
return category
|
return category
|
||||||
|
|
||||||
def test_new_user_is_authenticated(self):
|
def test_new_user_is_authenticated(self):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue