# -*- coding: utf-8 -*- from django.shortcuts import render_to_response from django.http import HttpResponseRedirect, HttpResponse from django.core.context_processors import csrf from django.conf import settings from django.contrib.auth.decorators import login_required from django.views.generic import ListView, FormView #models and forms from models import Service from forms import ServiceForm, ServiceDeleteForm from country.models import Country from city.models import City #custom views from functions.custom_views import objects_list, delete_object def service_all(request): """ return list of all services with pagination """ return objects_list(request, Service, 'service_all.html') def service_delete(request, url): return delete_object(request, Service, ServiceDeleteForm, url, '/admin/service/all') @login_required def service_change(request, url): try: service = Service.objects.get(url=url) service_id = getattr(service, 'id') except: return HttpResponseRedirect('/admin/service/all') if request.POST: form = ServiceForm(request.POST) #form.fields['city'].choices = [(item.id, item.name) for item in City.objects.all()] if form.is_valid(): form.save(service_id) return HttpResponseRedirect('/admin/service/all') else: data = {} try: data['price'] = service.price.split(' ')[0] data['currency'] = service.price.split(' ')[1] except:pass #countries sorted by this service #services_in_countries = Country.objects.filter(services=getattr(Country.services, str(service_id))) #data['europa'] = services_in_countries #data['asia'] = services_in_countries #data['africa'] = services_in_countries #data['america'] = services_in_countries #hidden field data['service_id'] = service_id data['url'] = service.url #data from translated fields for code, name in settings.LANGUAGES: obj = Service._meta.translations_model.objects.get(language_code = code,master__id=service_id) #access to translated fields data['name_%s'%code] = obj.name data['description_%s'%code] = obj.description data['main_title_%s'%code] = obj.main_title data['advantage_%s'%code] = obj.advantage data['title_%s'%code] = obj.title data['keywords_%s'%code] = obj.keywords data['descriptions_%s'%code] = obj.descriptions form = ServiceForm(initial=data) args = {} args.update(csrf(request)) args['form'] = form args['languages'] = settings.LANGUAGES args['service_id'] = service_id return render_to_response('service_add.html', args) @login_required def service_add(request): if request.POST: form = ServiceForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('/admin/service/all') else: form = ServiceForm() args = {} args.update(csrf(request)) args['form'] = form args['languages'] = settings.LANGUAGES return render_to_response('service_add.html', args) """ def get_country(request): if request.GET: #country_region = request.GET['region'] #countries = Country.objects.filter(region=country_region) return render_to_response('checkbox_option.html', {'options': countries}) else: return HttpResponse('error') """ def get_city(request): if request.GET: country_id = request.GET['id'] cities = City.objects.filter(country=country_id) return render_to_response('checkbox_option.html', {'options': cities}) else: return HttpResponse('error') class ServiceControlList(ListView): model = Service template_name = 'admin/service/control_list.html' paginate_by = 20 from django.views.generic.detail import SingleObjectMixin from django.views.generic.edit import FormMixin from django.views.generic import DetailView from service.forms import ServiceControlForm class ServiceControl(FormMixin, DetailView): form_class = ServiceControlForm template_name = 'admin/service/control.html' model = Service def get_form(self, form_class): obj = self.object data = obj.get_current_state() return form_class(data) def get_context_data(self, **kwargs): context = super(ServiceControl, self).get_context_data(**kwargs) context['form'] = self.get_form(self.form_class) return context from .forms import _ServiceForm class ServiceAddView(FormView): form_class = _ServiceForm template_name = 'admin/service/test_add.html' success_url = '/' def get(self, request, *args, **kwargs): data = request.GET form = self.form_class(data) if form.is_valid(): countries = form.cleaned_data['countries'] types = form.cleaned_data['type'] expos = form.cleaned_data['expos'] confs = form.cleaned_data['confs'] is_all_cnt = form.cleaned_data['all_counties'] raise else: pass from django.shortcuts import get_object_or_404 from django.views.generic import UpdateView from django.db.models import F from django.db.models.query import EmptyQuerySet from .forms import LinkedServiceForm from .models import LinkedService from exposition.models import Exposition from conference.models import Conference class ServiceUpdateView(UpdateView): form_class = LinkedServiceForm model = LinkedService template_name = "admin/service/linked_service.html" success_url = "/admin/service/all/" def get_object(self, queryset=None): url = self.kwargs['url'] service = get_object_or_404(Service, url=url) obj = LinkedService.objects.get(service=service) return obj def get_initial(self): initial = { 'expositions':','.join(["%s:%s"%(item.id, item.name) for item in object.expositions.all()]), 'conferences':','.join(["%s:%s"%(item.id, item.name) for item in self.object.conferences.all()]) }