@@ -182,7 +182,7 @@ class Plugin(models.Model):
182182
183183 class Meta :
184184 unique_together = [['meta' , 'version' ], ['meta' , 'dock_image' ]]
185- ordering = ('meta' , '-creation_date ' ,)
185+ ordering = ('meta' , '-version ' ,)
186186
187187 def __str__ (self ):
188188 return self .meta .name
@@ -201,7 +201,7 @@ def get_registered_compute_resources(self):
201201
202202class PluginFilter (FilterSet ):
203203 """
204- Filter class for the Plugin model.
204+ Filter class for the Plugin model with custom sorting .
205205 """
206206 min_creation_date = django_filters .IsoDateTimeFilter (field_name = "creation_date" ,
207207 lookup_expr = 'gte' )
@@ -220,6 +220,7 @@ class PluginFilter(FilterSet):
220220 name_title_category = django_filters .CharFilter (method = 'search_name_title_category' )
221221 compute_resource_id = django_filters .CharFilter (field_name = 'compute_resources__id' ,
222222 lookup_expr = 'exact' )
223+ sort = django_filters .CharFilter (method = 'apply_sort' )
223224
224225 def search_name_title_category (self , queryset , name , value ):
225226 """
@@ -232,11 +233,20 @@ def search_name_title_category(self, queryset, name, value):
232233 lookup = lookup | models .Q (meta__category__icontains = value )
233234 return queryset .filter (lookup )
234235
236+ def apply_sort (self , queryset , name , value ):
237+ """
238+ Custom method to sort by user-specified field, keeping 'meta' as primary ordering.
239+ """
240+ allowed_fields = ('version' , '-version' , 'creation_date' , '-creation_date' )
241+ if value in allowed_fields :
242+ return queryset .order_by ('meta' , value )
243+ return queryset
244+
235245 class Meta :
236246 model = Plugin
237247 fields = ['id' , 'name' , 'name_exact' , 'version' , 'dock_image' , 'type' , 'category' ,
238248 'min_creation_date' , 'max_creation_date' , 'title' , 'public_repo' ,
239- 'description' , 'name_title_category' , 'compute_resource_id' ]
249+ 'description' , 'name_title_category' , 'compute_resource_id' , 'sort' ]
240250
241251
242252class PluginParameter (models .Model ):
0 commit comments