You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.2 KiB
30 lines
1.2 KiB
from django.views.generic import ListView
|
|
from django.shortcuts import get_object_or_404
|
|
from django.conf import settings
|
|
from functions.cache_mixin import JitterCacheMixin, CacheMixin
|
|
from meta.views import MetadataMixin
|
|
from accounts.models import User
|
|
from country.models import Country
|
|
from city.models import City
|
|
from translator.models import Translator
|
|
|
|
class TranslatorList(JitterCacheMixin, MetadataMixin, ListView):
|
|
model = User
|
|
template_name = 'client/accounts/translators/translators_list.html'
|
|
paginate_by = settings.CLIENT_PAGINATION
|
|
def get_queryset(self):
|
|
# all users with translator profile
|
|
qs = self.model.objects.select_related('profile', 'country', 'city').filter(translator__isnull=False)
|
|
|
|
if self.kwargs.get('city'):
|
|
city_slug = self.kwargs.get('city')
|
|
city = get_object_or_404(City, url=city_slug)
|
|
self.kwargs['city'] = city
|
|
qs = qs.filter(profile__city=city)
|
|
if self.kwargs.get('country'):
|
|
country_slug = self.kwargs.get('country')
|
|
country = get_object_or_404(Country, url=country_slug)
|
|
self.kwargs['country'] = country
|
|
qs = qs.filter(profile__country=country)
|
|
|
|
return qs
|
|
|