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.
 
 
 
 
 
 

194 lines
6.1 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')
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()])
}