diff --git a/accounts/models.py b/accounts/models.py index f083854c..5dee4e48 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -140,6 +140,9 @@ class User(AbstractBaseUser, PermissionsMixin): USERNAME_FIELD = 'username' REQUIRED_FIELDS = ['first_name', 'last_name'] + class Meta: + ordering=['-rating'] + def get_full_name(self): """ Returns the first_name plus the last_name, with a space in between. @@ -196,9 +199,9 @@ class User(AbstractBaseUser, PermissionsMixin): def get_permanent_url(self): if self.url: - return '/%s'%self.url + return '/%s/'%self.url #return self.catalog+self.url+'/' - return '/%d'%self.id + return '/%d/'%self.id #return self.catalog+str(self.id)+'/' def get_expos(self): diff --git a/proj/urls.py b/proj/urls.py index 79b1f5b1..60b5784c 100644 --- a/proj/urls.py +++ b/proj/urls.py @@ -37,6 +37,7 @@ urlpatterns = patterns('', url(r'^page/', include('core.simple_urls')), url(r'^theme/', include('theme.urls')), url(r'^places/', include('place_exposition.urls')), + url(r'^translators/', include('translator.urls')), url(r'^', include('accounts.urls')), url(r'^', include('exposition.urls')), url(r'^', include('settings.conference_old_urls')), # conference redirects from old version diff --git a/settings/old_urls.py b/settings/old_urls.py index 668e0e8e..f64a48d1 100644 --- a/settings/old_urls.py +++ b/settings/old_urls.py @@ -13,9 +13,9 @@ urlpatterns = patterns('', url(r'^serv-zaoch-info.php$', old_redirect, {'redirect_url': '/service/remote/'}), url(r'^serv-visit-info.php$', old_redirect, {'redirect_url': '/service/visit/'}), url(r'^serv-bilet-info.php$', old_redirect, {'redirect_url': '/service/tickets/'}), - url(r'^serv-translator-info.php$', old_redirect, {'redirect_url': '/service/translator/'}), - url(r'^content.php/coID/(?P.*)/perevodchiki-(?P.*)/$', old_redirect, {'redirect_url': '/service/translator/'}), - url(r'^content.php/coID/(?P.*)/perevodchiki-(?P.*)$', old_redirect, {'redirect_url': '/service/translator/'}), + url(r'^serv-translator-info.php$', old_redirect, {'redirect_url': '/translators/'}), + url(r'^content.php/coID/(?P.*)/perevodchiki-(?P.*)/$', old_redirect, {'redirect_url': '/translators/{country_or_city}/'}), + url(r'^content.php/coID/(?P.*)/perevodchik-(?P.*)/$', old_redirect, {'redirect_url': '/translators/{country_or_city}/'}), url(r'^(?P.*)/(?P.*)/buildstand.html$', old_redirect, {'redirect_url': '{event_catalog}{event_url}/service/participation/'}), url(r'^(?P.*)/(?P.*)/bilet.html$', old_redirect, {'redirect_url': '{event_catalog}{event_url}/service/tickets/'}), diff --git a/settings/redirect_views.py b/settings/redirect_views.py index 3fbee5d7..74eccd85 100644 --- a/settings/redirect_views.py +++ b/settings/redirect_views.py @@ -106,11 +106,36 @@ class News_p(object): obj = get_object_or_404(Article, old_id=value) return {key: obj.slug} +class Country_or_City(object): + def get_object_url(self,key, value): + try: + obj = Country.objects.get(old_url=value) + except Country.DoesNotExist: + try: + obj = Country.objects.filter(url=value)[0] + except IndexError: + obj = None + if not obj: + try: + obj = City.objects.get(old_url=value) + except City.DoesNotExist: + obj = get_object_or_404(City, url=value) + except City.MultipleObjectsReturned: + obj = City.objects.filter(old_url=value)[0] + if not obj: + raise Http404 + + if isinstance(obj, Country): + result = 'country/%s'%obj.url + elif isinstance(obj, City): + result = 'city/%s'%obj.url + return {key: result} + old_params = {'city': CityRedirect, 'country': CountryRedirect, 'theme': ThemeRedirect, 'tag': TagRedirect, 'event': EventRedirect, 'company': Company, 'article': ArticleRedirect, 'user': UserRedirect, - 'page': PageRedirect, 'news_p': News_p} + 'page': PageRedirect, 'news_p': News_p, 'country_or_city': Country_or_City} def old_redirect(request, *args, **kwargs): diff --git a/templates/client/accounts/translators/translators_list.html b/templates/client/accounts/translators/translators_list.html new file mode 100644 index 00000000..4f8828c6 --- /dev/null +++ b/templates/client/accounts/translators/translators_list.html @@ -0,0 +1,21 @@ +{% extends 'base_catalog.html' %} +{% load i18n %} + +{% block bread_scrumbs %} + +{% endblock %} + +{% block page_title %} +
+

{% if meta %}{{ meta.h1 }}{% else %}{% trans 'Переводчики' %}{% endif %}

+
+{% endblock %} + + +{% block content_list %} + {% include 'client/includes/accounts/translators.html' with object_list=object_list %} +{% endblock %} + +{% block paginator %} + {% include 'includes/catalog_paginator.html' with page_obj=page_obj %} +{% endblock %} \ No newline at end of file diff --git a/templates/client/includes/accounts/translators.html b/templates/client/includes/accounts/translators.html new file mode 100644 index 00000000..a72fa8a6 --- /dev/null +++ b/templates/client/includes/accounts/translators.html @@ -0,0 +1,56 @@ +{% load static %} +{% load i18n %} +{% load template_filters %} + + + diff --git a/translator/urls.py b/translator/urls.py new file mode 100644 index 00000000..ea3a3579 --- /dev/null +++ b/translator/urls.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +from django.conf.urls import patterns, include, url +from translator.views import TranslatorList + + +urlpatterns = patterns('', + url(r'^city/(?P.*)/page/(?P\d+)/$', TranslatorList.as_view(), {'meta_id':88}), + url(r'^city/(?P.*)/$', TranslatorList.as_view(), {'meta_id':88}), + url(r'^country/(?P.*)/page/(?P\d+)/$', TranslatorList.as_view(), {'meta_id':87}), + url(r'^country/(?P.*)/$', TranslatorList.as_view(), {'meta_id':87}), + url(r'^page/(?P\d+)/$', TranslatorList.as_view() , {'meta_id':86}), + url(r'^', TranslatorList.as_view() , {'meta_id':86}), +) \ No newline at end of file diff --git a/translator/views.py b/translator/views.py new file mode 100644 index 00000000..04f6960e --- /dev/null +++ b/translator/views.py @@ -0,0 +1,30 @@ +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