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.
177 lines
5.6 KiB
177 lines
5.6 KiB
# -*- 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')
|
|
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
from django.views.generic import UpdateView, ListView, DeleteView
|
|
from .forms import LinkedServiceForm
|
|
from .models import LinkedService
|
|
|
|
|
|
|
|
|
|
class LinkedServiceUpdateView(UpdateView):
|
|
form_class = LinkedServiceForm
|
|
model = LinkedService
|
|
template_name = "admin/service/linked_service.html"
|
|
success_url = "/admin/service/control/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):
|
|
types = {0:[], 1:['expo'], 2:['conference'], 3:['expo', 'conference']}
|
|
initial = {
|
|
'expositions': ",".join("%s:%s"%(item.id, item.name) for item in self.object.expositions.all()),
|
|
'conferences': ",".join("%s:%s"%(item.id, item.name) for item in self.object.conferences.all()),
|
|
'type': types[self.object.service.type.mask]
|
|
}
|
|
return initial
|
|
|
|
def get_success_url(self):
|
|
return self.success_url
|
|
|
|
def form_valid(self, form):
|
|
obj = form.save()
|
|
obj.countries = form.cleaned_data['countries']
|
|
obj.expositions = form.cleaned_data['expositions']
|
|
obj.conferences = form.cleaned_data['conferences']
|
|
obj.save()
|
|
obj.update_all_flags()
|
|
return HttpResponseRedirect(self.get_success_url())
|
|
|
|
|
|
class LinkedServiceList(ListView):
|
|
model = LinkedService
|
|
template_name = 'admin/service/linked_service_list.html'
|
|
|
|
|
|
class LinkedServiceDeleteView(DeleteView):
|
|
model = LinkedService
|
|
template_name = 'admin/service/linked_service_confirm_delete.html'
|
|
success_url = '/admin/service/test/all'
|
|
slug_url_kwarg = 'url'
|
|
|
|
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
|
|
|