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.
 
 
 
 
 
 

137 lines
4.0 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 forms import ThemeForm, TagForm
from models import Theme, Tag
from bitfield.types import Bit
from django.contrib.auth.decorators import login_required
@login_required
def theme_add(request):
if request.POST:
form = ThemeForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/theme/theme/all')
else:
form = ThemeForm()
args = {}
args.update(csrf(request))
args['languages'] = settings.LANGUAGES
args['form'] = form
return render_to_response('theme_add.html', args)
@login_required
def tag_add(request):
if request.POST:
form = TagForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/theme/tag/all')
else:
form = TagForm()
args = {}
args.update(csrf(request))
args['languages'] = settings.LANGUAGES
args['form'] = form
return render_to_response('tag_add.html', args)
@login_required
def theme_change(request, theme_id=None):
try:
theme = Theme.objects.get(id=theme_id)
except:
return HttpResponseRedirect('/theme/theme/all')
if request.POST:
form = ThemeForm(request.POST)
if form.is_valid():
form.save(theme_id)
return HttpResponseRedirect('/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('/theme/tag/all')
if request.POST:
form = TagForm(request.POST)
if form.is_valid():
form.save(tag_id)
return HttpResponseRedirect('/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)
@login_required
def theme_all(request):
themes = Theme.objects.all()
return render_to_response('theme_all.html', {'themes': themes})
@login_required
def tag_all(request):
tags = Tag.objects.all()
return render_to_response('tag_all.html', {'tags': tags})