sort locations
This commit is contained in:
parent
d1534a27e8
commit
517e194c44
3 changed files with 33 additions and 12 deletions
|
@ -167,14 +167,15 @@ class LocationViewSet(ViewSet):
|
||||||
lookup_field = 'name'
|
lookup_field = 'name'
|
||||||
include_package_access = True
|
include_package_access = True
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _filter(queryset):
|
||||||
|
return queryset.filter(can_search=True).order_by('name')
|
||||||
|
|
||||||
def list(self, request, **kwargs):
|
def list(self, request, **kwargs):
|
||||||
locations = []
|
locations = []
|
||||||
locations += list(filter_queryset_by_access(request, LocationGroup.objects.filter(can_search=True,
|
locations += list(filter_queryset_by_access(request, self._filter(LocationGroup.objects.all())))
|
||||||
compiled_room=True)))
|
locations += sorted(filter_arealocations_by_access(request, self._filter(AreaLocation.objects.all())),
|
||||||
locations += sorted(filter_arealocations_by_access(request, AreaLocation.objects.filter(can_search=True)),
|
|
||||||
key=AreaLocation.get_sort_key, reverse=True)
|
key=AreaLocation.get_sort_key, reverse=True)
|
||||||
locations += list(filter_queryset_by_access(request, LocationGroup.objects.filter(can_search=True,
|
|
||||||
compiled_room=False)))
|
|
||||||
return Response([location.to_location_json() for location in locations])
|
return Response([location.to_location_json() for location in locations])
|
||||||
|
|
||||||
def retrieve(self, request, name=None, **kwargs):
|
def retrieve(self, request, name=None, **kwargs):
|
||||||
|
|
25
src/c3nav/mapdata/migrations/0033_auto_20161224_1803.py
Normal file
25
src/c3nav/mapdata/migrations/0033_auto_20161224_1803.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.4 on 2016-12-24 18:03
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mapdata', '0032_auto_20161223_2225'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='locationgroup',
|
||||||
|
name='can_describe',
|
||||||
|
field=models.BooleanField(default=True, verbose_name='can be used to describe a position'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='locationgroup',
|
||||||
|
name='compiled_room',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='is a compiled room'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -38,20 +38,15 @@ def search_location(request, search):
|
||||||
|
|
||||||
words = search.split(' ')[:10]
|
words = search.split(' ')[:10]
|
||||||
|
|
||||||
queryset = LocationGroup.objects.filter(can_seach=True, compiled_room=True)
|
queryset = LocationGroup.objects.filter(can_seach=True).order_by('name')
|
||||||
if isinstance(location, LocationGroup):
|
if isinstance(location, LocationGroup):
|
||||||
queryset.exclude(name='g:' + location.name)
|
queryset.exclude(name='g:' + location.name)
|
||||||
results += list(filter_words(filter_queryset_by_access(request, queryset), words)[:10])
|
results += list(filter_words(filter_queryset_by_access(request, queryset), words)[:10])
|
||||||
|
|
||||||
queryset = AreaLocation.objects.filter(can_seach=True)
|
queryset = AreaLocation.objects.filter(can_seach=True).order_by('name')
|
||||||
if isinstance(location, AreaLocation):
|
if isinstance(location, AreaLocation):
|
||||||
queryset.exclude(name=location.name)
|
queryset.exclude(name=location.name)
|
||||||
results += sorted(filter_words(filter_arealocations_by_access(request, queryset), words),
|
results += sorted(filter_words(filter_arealocations_by_access(request, queryset), words),
|
||||||
key=AreaLocation.get_sort_key, reverse=True)
|
key=AreaLocation.get_sort_key, reverse=True)
|
||||||
|
|
||||||
queryset = LocationGroup.objects.filter(can_seach=True, compiled_room=False)
|
|
||||||
if isinstance(location, LocationGroup):
|
|
||||||
queryset.exclude(name='g:'+location.name)
|
|
||||||
results += list(filter_words(filter_queryset_by_access(request, queryset), words)[:10])
|
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue