# -*- coding: utf-8 -*- from django.views.generic import CreateView, UpdateView, DeleteView, ListView, FormView, DetailView from django.views.generic.detail import SingleObjectMixin from .forms import * from django.core.urlresolvers import reverse_lazy from django.conf import settings from django.shortcuts import get_object_or_404 from service.order_forms import TranslationForm from django.http import HttpResponseRedirect from django.utils.translation import get_language # =========== ADMIN VIEWS =========== # Specialist views class SpecialistCreateView(CreateView): form_class = SpecialistForm model = Specialist template_name = 'admin/specialist/specialist_new.html' success_url = reverse_lazy("specialist_all") class SpecialistListView(ListView): model = Specialist template_name = 'admin/specialist/specialist_all.html' paginate_by = settings.ADMIN_PAGINATION class SpecialistUpdateView(UpdateView): form_class = SpecialistForm model = Specialist template_name = 'admin/specialist/specialist_new.html' success_url = reverse_lazy("specialist_all") def get_form(self, form_class): form = super(SpecialistUpdateView, self).get_form(form_class) form.fields['city'].widget.attrs['data-init-text'] = self.object.city.name return form class SpecialistDeleteView(DeleteView): model = Specialist template_name = 'admin/specialist/specialist_confirm_delete.html' success_url = reverse_lazy("specialist_all") # Catalog views class CatalogCreateView(CreateView): form_class = SpecialistCatalogForm model = SpecialistCatalog template_name = 'admin/specialist/catalog_new.html' success_url = reverse_lazy("catalog_all") class CatalogListView(ListView): model = SpecialistCatalog template_name = 'admin/specialist/catalog_all.html' paginate_by = settings.ADMIN_PAGINATION class CatalogCityView(ListView): model = SpecialistCatalog template_name = 'admin/specialist/catalog_all.html' paginate_by = settings.ADMIN_PAGINATION def get_queryset(self): qs = super(CatalogCityView, self).get_queryset() return qs.filter(type=2) class CatalogCountryView(ListView): model = SpecialistCatalog template_name = 'admin/specialist/catalog_all.html' paginate_by = settings.ADMIN_PAGINATION def get_queryset(self): qs = super(CatalogCountryView, self).get_queryset() return qs.filter(type=1) class CatalogUpdateView(UpdateView): form_class = SpecialistCatalogForm model = SpecialistCatalog template_name = 'admin/specialist/catalog_new.html' success_url = reverse_lazy("catalog_all") def get_form(self, form_class): form = super(CatalogUpdateView, self).get_form(form_class) if self.object.type is 2: # city form.fields['city'].widget.attrs['data-init-text'] = self.object.city.name return form class CatalogDeleteView(DeleteView): model = SpecialistCatalog template_name = 'admin/specialist/catalog_confirm_delete.html' success_url = reverse_lazy("catalog_all") # Feedback views class FeedbackCreateView(CreateView): form_class = FeedbackForm model = Feedback template_name = 'admin/specialist/feedback_new.html' success_url = reverse_lazy("catalog_all") def get_initial(self): catalog = get_object_or_404(SpecialistCatalog, pk=self.kwargs.get('catalog_pk')) return {'catalog': catalog} class FeedbackUpdateView(UpdateView): form_class = FeedbackForm model = Feedback template_name = 'admin/specialist/feedback_new.html' success_url = reverse_lazy("catalog_all") def get_initial(self): catalog = get_object_or_404(SpecialistCatalog, pk=self.kwargs.get('catalog_pk')) return {'catalog': catalog} class FeedbackDeleteView(DeleteView): model = Feedback template_name = 'admin/specialist/feedback_confirm_delete.html' success_url = reverse_lazy("catalog_all") # ========= CLIENT VIEWS ============ lang = get_language()[:2] class CatalogDetailedView(SingleObjectMixin, FormView): model = SpecialistCatalog form_class = TranslationForm template_name = "client/specialist_catalog/catalog_detailed.html" success_url = reverse_lazy("service_thanks") def get_object(self, queryset=None): if self.kwargs.get('type') is "country": obj = self.model.objects.language(lang).get(country__url=self.kwargs.get('slug')) else: obj = self.model.objects.language(lang).get(city__url=self.kwargs.get('slug')) self.object = obj return obj def get_context_data(self, **kwargs): self.get_object() context = super(CatalogDetailedView, self).get_context_data(**kwargs) context['object'] = self.object return context def form_valid(self, form): order = form.save(commit=False) order.save() return HttpResponseRedirect(self.success_url) def get_initial(self): obj = self.get_object() init = {} init['country'] = obj.country.name if self.kwargs.get('type') is "city": init['city'] = obj.city.name return init