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.
136 lines
3.8 KiB
136 lines
3.8 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.contenttypes.models import ContentType
|
|
from django.contrib.auth.decorators import login_required
|
|
#models and forms
|
|
from models import Service, Review
|
|
from forms import ServiceForm, ReviewForm
|
|
from country.models import Country
|
|
#custom views
|
|
from functions.custom_views import objects_list
|
|
|
|
|
|
def service_all(request):
|
|
"""
|
|
return list of all services with pagination
|
|
"""
|
|
return objects_list(request, Service, 'service_all.html')
|
|
|
|
|
|
def review_all(request):
|
|
"""
|
|
return list of all reviews with pagination
|
|
"""
|
|
return objects_list(request, Review, 'review_all.html')
|
|
|
|
|
|
@login_required
|
|
def service_change(request, url):
|
|
try:
|
|
service = Service.objects.get(url=url)
|
|
service_id = getattr(service, 'id')
|
|
except:
|
|
return HttpResponseRedirect('/service/service/all')
|
|
if request.POST:
|
|
form = ServiceForm(request.POST)
|
|
if form.is_valid():
|
|
form.save(service_id)
|
|
|
|
return HttpResponseRedirect('/service/service/all')
|
|
else:
|
|
data = {}
|
|
#bitfield
|
|
data['country'] = [item for item, bool in service.country if bool==True]
|
|
data['city'] = [item for item, bool in service.city if bool==True]
|
|
|
|
|
|
data['price'] = service.price.split(' ')[0]
|
|
|
|
data['currency'] = service.price.split(' ')[1]
|
|
|
|
#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(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('/service/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)
|
|
|
|
|
|
@login_required
|
|
def review_add(request):
|
|
if request.POST:
|
|
form = ReviewForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
return HttpResponseRedirect('/service/review/all')
|
|
else:
|
|
form = ReviewForm()
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
|
|
args['form'] = form
|
|
args['languages'] = settings.LANGUAGES
|
|
|
|
return render_to_response('review_add.html', args)
|
|
|
|
|
|
@login_required
|
|
def review_change(request, review_id):
|
|
try:
|
|
review = Review.objects.get(id=review_id)
|
|
except:
|
|
return HttpResponseRedirect('/service/review/all')
|
|
|
|
if request.POST:
|
|
form = ReviewForm(request.POST, instance=review)
|
|
if form.is_valid():
|
|
form.save()
|
|
return HttpResponseRedirect('/service/review/all')
|
|
else:
|
|
form = ReviewForm(instance=review)
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
|
|
args['form'] = form
|
|
args['languages'] = settings.LANGUAGES
|
|
|
|
return render_to_response('review_add.html', args) |