Skip to content

Commit

Permalink
Merge pull request #11762 from archesproject/jtw/factor-out-next-tile…
Browse files Browse the repository at this point in the history
…-sort-order

Factor out a helper for calculating next tile sort order
  • Loading branch information
njkim authored Feb 6, 2025
2 parents 6bc7ae5 + 736e407 commit e678323
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
13 changes: 8 additions & 5 deletions arches/app/models/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1623,17 +1623,20 @@ def save(self, **kwargs):
if not str(node.pk) in self.data:
self.data[str(node.pk)] = None

sortorder_max = TileModel.objects.filter(
nodegroup_id=self.nodegroup_id,
resourceinstance_id=self.resourceinstance_id,
).aggregate(Max("sortorder"))["sortorder__max"]
self.sortorder = sortorder_max + 1 if sortorder_max is not None else 0
self.set_next_sort_order()
add_to_update_fields(kwargs, "sortorder")
if not self.tileid:
self.tileid = uuid.uuid4()
add_to_update_fields(kwargs, "tileid")
super(TileModel, self).save(**kwargs) # Call the "real" save() method.

def set_next_sort_order(self):
sortorder_max = self.__class__.objects.filter(
nodegroup_id=self.nodegroup_id,
resourceinstance_id=self.resourceinstance_id,
).aggregate(Max("sortorder"))["sortorder__max"]
self.sortorder = sortorder_max + 1 if sortorder_max is not None else 0

def serialize(self, fields=None, exclude=["nodegroup"], **kwargs):
return JSONSerializer().handle_model(
self, fields=fields, exclude=exclude, **kwargs
Expand Down
7 changes: 3 additions & 4 deletions arches/app/models/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
from django.utils.translation import gettext as _
from django.utils.translation import get_language
from arches.app.models import models
from arches.app.models.models import EditLog
from arches.app.models.models import TileModel
from arches.app.models.models import EditLog, TileModel
from arches.app.models.utils import add_to_update_fields
from arches.app.models.concept import get_preflabel_from_valueid
from arches.app.models.system_settings import settings
from arches.app.search.search_engine_factory import SearchEngineInstance as se
Expand Down Expand Up @@ -281,8 +281,7 @@ def save(self, **kwargs):

if not self.principaluser_id and user:
self.principaluser_id = user.id
# TODO: this is not updating update_fields in kwargs
# Fix when adding user argument to Resource.save().
add_to_update_fields(kwargs, "principaluser_id")

super(Resource, self).save(**kwargs)

Expand Down

0 comments on commit e678323

Please sign in to comment.