Dynastie/views.py

292 lines
9.5 KiB
Python
Raw Normal View History

2012-07-08 16:23:39 +02:00
from datetime import datetime, date, time
from django.shortcuts import render
from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponseRedirect, Http404
from django.contrib.auth.decorators import login_required
from django.forms.models import inlineformset_factory
from dynastie.models import *
from dynastie.forms import *
def index(request):
if request.user.is_authenticated():
return HttpResponseRedirect('/blog')
login_failed = False
if 'login' in request.POST:
user = authenticate(username=request.POST['login'], password=request.POST['password'])
if user is None:
login_failed = True
else:
login(request, user)
return HttpResponseRedirect('/blog')
c = {'auth_key': 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\
'login_failed' : login_failed}
return render(request, 'templates/login.html', c);
def disconnect(request):
logout(request)
c = {'auth_key': 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',\
'login_failed' : False}
return render(request, 'templates/login.html', c);
@login_required
def user(request):
users = User.objects.all()
c = {'users' : users}
return render(request, 'templates/user.html', c);
@login_required
def add_user(request):
if not request.user.is_superuser:
return HttpResponseRedirect('/user')
if request.method == 'POST': # If the form has been submitted...
if 'add' in request.POST:
form = UserForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form = form.save()
user = User.objects.get(pk=form.id)
user.set_password(request.POST['password'])
user.save()
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/user') # Redirect after POST
else:
return HttpResponseRedirect('/user') # Redirect after POST
else:
form = UserForm() # An unbound form
return render(request, 'add_user.html', {
'form': form,
})
@login_required
def edit_user(request, user_id):
if user_id != request.user.id and not request.user.is_superuser:
return HttpResponseRedirect('/user')
user = User.objects.get(pk=user_id)
if user is None:
raise Http404
if request.method == 'POST': # If the form has been submitted...
if 'edit' in request.POST:
form = UserForm(request.POST, instance=user) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
user.set_password(request.POST['password'])
user.save()
else:
if 'delete' in request.POST and request.user.is_superuser:
User.objects.get(pk=user_id).delete()
return HttpResponseRedirect('/user')
if 'cancel' in request.POST:
return HttpResponseRedirect('/user')
else:
form = UserForm(instance=user) # An unbound form
c = {'user_to_edit' : user, 'form' : form}
return render(request, 'templates/edit_user.html', c);
@login_required
def category(request):
categories = Category.objects.all()
c = {'categories' : categories}
return render(request, 'templates/category.html', c);
@login_required
def add_category(request):
if not request.user.is_superuser:
return HttpResponseRedirect('/category')
if request.method == 'POST': # If the form has been submitted...
if 'add' in request.POST:
form = CategoryForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form = form.save()
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/category') # Redirect after POST
else:
return HttpResponseRedirect('/category') # Redirect after POST
else:
form = CategoryForm() # An unbound form
return render(request, 'add_category.html', {
'form': form,
})
@login_required
def edit_category(request, category_id):
category = Category.objects.get(pk=category_id)
if category is None:
raise Http404
if request.method == 'POST': # If the form has been submitted...
if 'cancel' in request.POST:
return HttpResponseRedirect('/category')
if 'edit' in request.POST and request.user.is_superuser:
form = CategoryForm(request.POST, instance=category) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
else:
form = CategoryForm(instance=category) # An unbound form
c = {'category' : category, 'form' : form}
return render(request, 'templates/edit_category.html', c);
@login_required
def delete_category(request, category_id):
if not request.user.is_superuser:
return HttpResponseRedirect('/category/' + str(category_id))
Category.objects.get(pk=category_id).delete()
return HttpResponseRedirect('/category')
@login_required
def blog(request):
if request.user.is_superuser:
b = Blog.objects.all()
else:
b = Blog.objects.filter(writers=request.user.id)
c = {'blogs' : b}
return render(request, 'templates/blog.html', c);
@login_required
def add_blog(request):
if not request.user.is_superuser:
return HttpResponseRedirect('/blog')
if request.method == 'POST': # If the form has been submitted...
if 'add' in request.POST:
form = BlogForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form = form.save()
2012-07-08 20:41:16 +02:00
return HttpResponseRedirect('/blog') # Redirect after POST
2012-07-08 16:23:39 +02:00
else:
return HttpResponseRedirect('/blog') # Redirect after POST
else:
form = BlogForm() # An unbound form
return render(request, 'add_blog.html', {
'form': form,
})
@login_required
def view_blog(request, blog_id):
if not request.user.is_superuser:
b = Blog.objects.filter(id=blog_id).filter(writers=request.user.id)
else:
b = Blog.objects.get(pk=blog_id)
if b is None:
raise Http404
2012-07-08 20:41:16 +02:00
articles = Article.objects.filter(blog=b)
b = Blog.objects.get(pk=blog_id)
2012-07-08 16:23:39 +02:00
form = BlogForm(instance=b)
2012-07-08 20:41:16 +02:00
2012-07-08 16:23:39 +02:00
c = {'blog' : b, 'articles' : articles, 'form' : form}
return render(request, 'templates/view_blog.html', c);
@login_required
def edit_blog(request, blog_id):
if not request.user.is_superuser:
return HttpResponseRedirect('/blog/' + str(blog_id))
b = Blog.objects.get(pk=blog_id)
if b is None:
raise Http404
if request.method == 'POST': # If the form has been submitted...
if 'edit' in request.POST:
form = BlogForm(request.POST, instance=b) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
else:
if 'delete' in request.POST:
2012-07-08 20:41:16 +02:00
b = Blog.objects.get(pk=blog_id)
b.delete()
2012-07-08 16:23:39 +02:00
return HttpResponseRedirect('/blog')
else:
form = BlogForm(instance=b) # An unbound form
articles = Article.objects.filter(blog=b)
c = {'blog' : b, 'articles' : articles, 'form' : form}
return render(request, 'templates/view_blog.html', c);
@login_required
def add_article(request, blog_id):
if not request.user.is_superuser:
b = Blog.objects.filter(id=blog_id).filter(writers=request.user.id)
if b is None:
raise Http404
if request.method == 'POST': # If the form has been submitted...
if 'add' in request.POST:
article = Article(blog=Blog.objects.get(pk=blog_id), author=User.objects.get(pk=request.user.id), creation_date=datetime.now())
form = ArticleForm(request.POST, instance=article) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/blog/' + blog_id) # Redirect after POST
else:
return HttpResponseRedirect('/blog/' + blog_id) # Redirect after POST
else:
form = ArticleForm() # An unbound form
return render(request, 'add_article.html', {
'form': form, 'blog_id' : blog_id
})
@login_required
def edit_article(request, article_id):
article = Article.objects.get(pk=article_id)
if article is None:
raise Http404
blog_id = article.blog.id
if not request.user.is_superuser:
b = Blog.objects.filter(id=article.blog.id).filter(writers=request.user.id)
if b is None:
raise Http404
if request.method == 'POST': # If the form has been submitted...
if 'edit' in request.POST:
form = ArticleForm(request.POST, instance=article) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/blog/' + str(blog_id)) # Redirect after POST
else:
if 'cancel' in request.POST:
return HttpResponseRedirect('/blog/' + str(blog_id)) # Redirect after POST
else:
form = ArticleForm(instance=article) # An unbound form
return render(request, 'edit_article.html', {
'form': form, 'article_id' : article_id
})