diff --git a/argocd/deployment.yaml b/argocd/deployment.yaml index 09fa7f4..b957bcc 100644 --- a/argocd/deployment.yaml +++ b/argocd/deployment.yaml @@ -27,7 +27,7 @@ spec: mountPath: /data containers: - name: web - image: git.baumann.gr/adebaumann/labhelper:0.064 + image: git.baumann.gr/adebaumann/labhelper:0.065 imagePullPolicy: Always ports: - containerPort: 8000 diff --git a/boxes/admin.py b/boxes/admin.py index a2e017f..73b16c5 100644 --- a/boxes/admin.py +++ b/boxes/admin.py @@ -1,3 +1,4 @@ +from adminsortable2.admin import SortableAdminMixin from django import forms from django.contrib import admin from django.contrib.admin import SimpleListFilter @@ -13,7 +14,7 @@ class BoxFilter(SimpleListFilter): parameter_name = 'box__pk' def lookups(self, request, model_admin): - boxes = Box.objects.select_related('box_type').order_by('id') + boxes = Box.objects.select_related('box_type').order_by('sort_order') return [(box.pk, str(box)) for box in boxes] def queryset(self, request, queryset): @@ -47,7 +48,7 @@ class BoxTypeAdmin(admin.ModelAdmin): @admin.register(Box) -class BoxAdmin(admin.ModelAdmin): +class BoxAdmin(SortableAdminMixin, admin.ModelAdmin): """Admin configuration for Box model.""" list_display = ('id', 'box_type') diff --git a/boxes/models.py b/boxes/models.py index 8763fc1..7115dd8 100644 --- a/boxes/models.py +++ b/boxes/models.py @@ -41,9 +41,15 @@ class Box(models.Model): on_delete=models.PROTECT, related_name='boxes' ) + sort_order = models.PositiveIntegerField( + default=0, + db_index=True, + help_text='Order in which boxes are displayed' + ) class Meta: verbose_name_plural = 'boxes' + ordering = ['sort_order'] def __str__(self): return self.id diff --git a/boxes/views.py b/boxes/views.py index 61d2a02..2acac18 100644 --- a/boxes/views.py +++ b/boxes/views.py @@ -79,7 +79,7 @@ def edit_thing(request, thing_id): pk=thing_id ) - boxes = Box.objects.select_related('box_type').all().order_by('id') + boxes = Box.objects.select_related('box_type').all() facets = Facet.objects.all().prefetch_related('tags') picture_form = ThingPictureForm(instance=thing) file_form = ThingFileForm() @@ -192,7 +192,7 @@ def edit_thing(request, thing_id): @login_required def boxes_list(request): """Boxes list page showing all boxes with contents.""" - boxes = Box.objects.select_related('box_type').prefetch_related('things').all().order_by('id') + boxes = Box.objects.select_related('box_type').prefetch_related('things').all() return render(request, 'boxes/boxes_list.html', { 'boxes': boxes, }) diff --git a/labhelper/settings.py b/labhelper/settings.py index 8ba9855..b48016e 100644 --- a/labhelper/settings.py +++ b/labhelper/settings.py @@ -39,6 +39,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'adminsortable2', 'mptt', 'django_mptt_admin', 'sorl.thumbnail',