89 lines
2.3 KiB
Python
89 lines
2.3 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', 'small_image', 'instrument', 'position', 'public_description' ]
|
|
#fields = '__all__'
|
|
|
|
|
|
def own_profile( request ):
|
|
return user_edit( request, request.user )
|
|
|
|
|
|
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('/') # Redirect after POST
|
|
else:
|
|
form = UserEditForm( instance= musician )
|
|
|
|
return render(request, 'musicians/musician_edit.html', { 'form': form, 'musician': musician } )
|
|
|
|
|
|
|
|
class MusicianUpdate( UpdateView ):
|
|
model = Musician
|
|
#fields = []
|
|
template_name = "musicians/musician_edit.html"
|
|
success_url = '/books/'
|
|
|
|
|
|
def addressbook( request ):
|
|
context = dict()
|
|
context['musicians'] = Musician.objects.all().order_by('user__first_name')
|
|
|
|
return render( request, 'musicians/addressbook.html', context )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|