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.
84 lines
3.1 KiB
84 lines
3.1 KiB
# -*- coding: utf-8 -*-
|
|
from django.shortcuts import render_to_response
|
|
from django.http import HttpResponseRedirect, HttpResponse
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.contrib.admin.views.decorators import staff_member_required
|
|
from file.models import TmpFile, FileModel
|
|
from file.forms import FileModelForm
|
|
from city.models import City
|
|
from theme.models import Tag
|
|
from django.db.models.loading import get_model
|
|
|
|
|
|
def admin_home(request):
|
|
return render_to_response('base.html')
|
|
|
|
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})
|
|
|
|
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')
|
|
|
|
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)
|
|
|
|
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') |