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.
 
 
 
 
 
 

159 lines
5.0 KiB

# -*- coding: utf-8 -*-
from django.core.context_processors import csrf
from settings import LANGUAGES
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.contenttypes.models import ContentType
from forms import SettingsForm
from models import Settings
from django.contrib.auth.decorators import login_required
from seminar.models import Seminar
from file.models import TmpFile, FileModel
from file.forms import FileModelForm
from country.models import Country
from city.models import City
from theme.models import Tag
from django.shortcuts import get_object_or_404
from django.db.models.loading import get_model
@login_required
def home(request):
return render_to_response('base.html')
@login_required
def settings(request):
"""
Return form of settings and saves changes
"""
if request.POST:
form = SettingsForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/admin')
else:
form = SettingsForm()
args = {}
args.update(csrf(request))
args['languages'] = LANGUAGES
args['form'] = form
return render_to_response('settings.html', args)
from directories.models import Currency
from country.models import Country
from country.forms import CountryForm
from file.forms import FileModelForm
from django.views.decorators.cache import cache_page
#from django.core.cache import cache
#@cache_page(30)
def test(request):
ids = [i for i in range(1, 5000)]
form = CountryForm()
file_form = FileModelForm
c = Country.objects.get(id=5)
country_id = getattr(c, 'id')
#args = {}
for i in range(1,10000):
args = {'languages': LANGUAGES, 'form': form, 'file_form': file_form, 'obj_id': country_id, 'files':FileModel.objects.filter(content_type=ContentType.objects.get_for_model(c), object_id=getattr(c, 'id'))}
#args['languages'] = LANGUAGES
#args['form'] = form
#args['file_form'] = file_form
#args['files'] = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(c), object_id=getattr(c, 'id'))
#args['obj_id'] = country_id
#currs = [item for item in Currency.objects.all()]
#currs = []
#for i in ids:
# currs.append(Currency.objects.get(id=i))
#cache.set('key', currs[100].currency, 60)
return HttpResponse(args)
@login_required
def ajax_city(request):
"""
returns html <option> tags filled with cities filtered by country value from request
"""
objects = City.objects.filter(country=request.GET['id'])
return render_to_response('select.html', {'objects': objects})
@login_required
def ajax_tag(request):
"""
return array of tags (id, name) filtered by theme values from request
"""
if request.GET:
ids = request.GET.get('id')
if ids:
#get id values in list
data = ids.replace('theme=', '').split('&')
#generate list of tags
tags = ['[%d, "%s"]'%(int(item.id), item.name) for item in Tag.objects.filter(theme__in=data)]
return HttpResponse('[%s]'%', '.join(tags), content_type='application/json')
else:
#request empty - send empty array
return HttpResponse('[]', content_type='application/json')
from django.core import serializers
@login_required
def ajax_post_file(request, obj_id=None):
"""
Takes file and file data and save it
If obj_id = None creates TmpFile
Returns 'file_list.html' template with existing files if id != None.
N/A file_list.html' template with Tmp files filtered by key
"""
if request.POST:
file_form = FileModelForm(request.POST, request.FILES)
if file_form.is_valid():
#if obj_id is not exist create TMPfile objects else FileModel objects
if obj_id != None:
#takes data from hidden input "model" and initial Model
Model = get_model(request.POST['model'].split('.')[0], request.POST['model'].split('.')[1])
#initial model object
obj = Model.objects.get(id=obj_id)
file = file_form.save(request.FILES, obj)
#data = serializers.serialize('json', [file])
#return HttpResponse(data)
files = FileModel.objects.filter(content_type=ContentType.objects.get_for_model(obj),object_id=getattr(obj, 'id'))
else:
file_form.save(request.FILES)
files = TmpFile.objects.filter(key=request.POST['key'])
return render_to_response('file_list.html', {'files' : files})
args = {}
args['languages'] = settings.LANGUAGES
args['file_form'] = file_form
return render_to_response('ajax_error_form.html', args)
@login_required
def ajax_delete_file(request):
"""
delete file
"""
if request.GET:
file = FileModel.objects.get(id = request.GET['id'])
file.delete()
return HttpResponse('success')
else:
return HttpResponse('error')