69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
|
|
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
|
|
|
|
|
|
class MusicianList( ListView):
|
|
model = Musician
|
|
|
|
|
|
class UserEditForm(forms.ModelForm):
|
|
|
|
email = forms.EmailField()
|
|
|
|
def __init__(self, *args, **kw):
|
|
|
|
if 'instance' in kw.keys():
|
|
user = kw['instance'].user
|
|
initVals = { 'email': user.email }
|
|
if not 'initial' in kw.keys():
|
|
kw['initial'] = initVals
|
|
else:
|
|
kw['initial'].update(initVals)
|
|
|
|
super(UserEditForm, self).__init__( *args, **kw )
|
|
|
|
|
|
self.fields.keyOrder.remove('email')
|
|
|
|
self.fields.keyOrder.insert(2, 'email')
|
|
|
|
def save(self):
|
|
if self.is_valid():
|
|
super(UserEditForm,self).save()
|
|
self.instance.user.email = self.cleaned_data['email']
|
|
self.instance.user.save()
|
|
|
|
class Meta:
|
|
model = Musician
|
|
exclude = [ 'user','image', 'instrument' ]
|
|
#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/' |