blechreiz-website/musicians/views.py

100 lines
3.2 KiB
Python
Raw Normal View History

2013-05-28 15:20:06 +02:00
from django.views.generic.edit import UpdateView
from django.views.generic import ListView
from musicians.models import Musician
from django import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.shortcuts import get_object_or_404
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
class MusicianList( ListView):
model = Musician
class UserEditForm(forms.ModelForm):
first_name = forms.CharField( max_length = 60)
last_name = forms.CharField( max_length = 60)
email = forms.EmailField()
def __init__(self, *args, **kw):
if 'instance' in kw.keys():
user = kw['instance'].user
initVals = { 'first_name': user.first_name,
'last_name': user.last_name,
'email': user.email }
if not 'initial' in kw.keys():
kw['initial'] = initVals
else:
kw['initial'].update(initVals)
super(UserEditForm, self).__init__(*args, **kw)
self.helper = FormHelper()
self.helper.form_id = 'id-exampleForm'
self.helper.form_class = 'blueForms'
self.helper.form_method = 'post'
self.helper.form_action = '/musicians/martin' # TODO
self.helper.add_input(Submit('submit', 'Submit'))
self.helper.form_class = 'form-horizontal'
#self.helper.layout = Layout(
# Fieldset(
# 'Edit User',
# 'first_name',
# 'last_name',
# 'birthday',
# ),
#)
self.fields.keyOrder.remove('first_name')
self.fields.keyOrder.remove('last_name')
self.fields.keyOrder.remove('email')
self.fields.keyOrder.insert(0, 'first_name')
self.fields.keyOrder.insert(1, 'last_name')
self.fields.keyOrder.insert(2, 'email')
def save(self):
if self.is_valid():
super(UserEditForm,self).save()
self.instance.user.first_name = self.cleaned_data['first_name']
self.instance.user.last_name = self.cleaned_data['last_name']
self.instance.user.email = self.cleaned_data['email']
self.instance.user.save()
class Meta:
model = Musician
exclude = [ 'user','image' ]
#fields = '__all__'
def user_edit( request, username ):
musician = get_object_or_404(Musician, user__username=username )
if request.method == 'POST': # If the form has been submitted...
form = UserEditForm(request.POST) # A form bound to the POST data
form.instance = musician
if form.is_valid(): # All validation rules pass
form.save()
return HttpResponseRedirect('/musicians/' + username) # Redirect after POST
else:
form = UserEditForm( instance= musician )
return render(request, 'musicians/musician_edit.html', { 'form': form, } )
class MusicianUpdate( UpdateView ):
model = Musician
#fields = []
template_name = "musicians/musician_edit.html"
success_url = '/books/'