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.
113 lines
3.7 KiB
113 lines
3.7 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.forms.formsets import BaseFormSet, formset_factory
|
|
from django.forms.models import modelformset_factory
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.contrib.auth.decorators import login_required
|
|
#forms and models
|
|
from forms import ThemeForm, TagForm, ThemeDeleteForm, TagDeleteForm
|
|
from models import Theme, Tag
|
|
#custom views
|
|
from functions.custom_views import objects_list, add_object, delete_object
|
|
|
|
|
|
def theme_all(request):
|
|
return objects_list(request, Theme, 'theme_all.html')
|
|
|
|
|
|
def tag_all(request):
|
|
return objects_list(request, Tag, 'tag_all.html')
|
|
|
|
|
|
def theme_add(request):
|
|
return add_object(request, ThemeForm, 'theme_add.html', '/admin/theme/theme/all')
|
|
|
|
def tag_add(request):
|
|
return add_object(request, TagForm, 'tag_add.html', '/admin/theme/tag/all')
|
|
|
|
def theme_delete(request, theme_id):
|
|
return delete_object(request, Theme, ThemeDeleteForm, theme_id, '/admin/theme/theme/all')
|
|
|
|
def tag_delete(request, tag_id):
|
|
return delete_object(request, Tag, TagDeleteForm, tag_id, '/admin/theme/tag/all')
|
|
|
|
|
|
@login_required
|
|
def theme_change(request, theme_id=None):
|
|
try:
|
|
theme = Theme.objects.get(id=theme_id)
|
|
except:
|
|
return HttpResponseRedirect('/admin/theme/theme/all')
|
|
if request.POST:
|
|
form = ThemeForm(request.POST)
|
|
if form.is_valid():
|
|
form.save(theme_id)
|
|
return HttpResponseRedirect('/admin/theme/theme/all')
|
|
else:
|
|
data = {}
|
|
#bitfeild
|
|
data['types'] = [item for item, bool in theme.types if bool==True]
|
|
|
|
|
|
|
|
#data from translated fields
|
|
for code, name in settings.LANGUAGES:
|
|
obj = Theme._meta.translations_model.objects.get(language_code = code,master__id=theme_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['title_%s'%code] = obj.title
|
|
data['keywords_%s'%code] = obj.keywords
|
|
data['descriptions_%s'%code] = obj.descriptions
|
|
|
|
|
|
|
|
form = ThemeForm(data)
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
|
|
args['form'] = form
|
|
args['languages'] = settings.LANGUAGES
|
|
args['theme_id'] = theme_id
|
|
|
|
return render_to_response('theme_add.html', args)
|
|
|
|
@login_required
|
|
def tag_change(request, tag_id=None):
|
|
try:
|
|
tag = Tag.objects.get(id=tag_id)
|
|
except:
|
|
return HttpResponseRedirect('/admin/theme/tag/all')
|
|
if request.POST:
|
|
form = TagForm(request.POST)
|
|
if form.is_valid():
|
|
form.save(tag_id)
|
|
return HttpResponseRedirect('/admin/theme/tag/all')
|
|
else:
|
|
data = {}
|
|
if tag.theme:
|
|
data['theme'] = tag.theme.id
|
|
#data from translated fields
|
|
for code, name in settings.LANGUAGES:
|
|
obj = Tag._meta.translations_model.objects.get(language_code = code,master__id=tag_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['title_%s'%code] = obj.title
|
|
data['keywords_%s'%code] = obj.keywords
|
|
data['descriptions_%s'%code] = obj.descriptions
|
|
|
|
form = TagForm(data)
|
|
|
|
args = {}
|
|
args.update(csrf(request))
|
|
|
|
args['form'] = form
|
|
args['languages'] = settings.LANGUAGES
|
|
args['tag_id'] = tag_id
|
|
|
|
return render_to_response('tag_add.html', args) |