Profile form view now edits the relevant form

This commit is contained in:
Christopher Neugebauer 2016-03-24 12:58:23 +11:00
parent 236c61eefa
commit 05923a9a8f
3 changed files with 26 additions and 3 deletions

View file

@ -21,6 +21,18 @@ class Attendee(models.Model):
def __str__(self):
return "%s" % self.user
@staticmethod
def get_instance(user):
''' Returns the instance of attendee for the given user, or creates
a new one. '''
attendees = Attendee.objects.filter(user=user)
if len(attendees) > 0:
return attendees[0]
else:
attendee = Attendee(user=user)
attendee.save()
return attendee
user = models.OneToOneField(User, on_delete=models.CASCADE)
# Badge/profile is linked
completed_registration = models.BooleanField(default=False)

View file

@ -6,7 +6,7 @@ urlpatterns = patterns(
url(r"^checkout$", "checkout", name="checkout"),
url(r"^invoice/([0-9]+)$", "invoice", name="invoice"),
url(r"^invoice/([0-9]+)/pay$", "pay_invoice", name="pay_invoice"),
url(r"^profile$", "profile", name="profile"),
url(r"^profile$", "edit_profile", name="profile"),
url(r"^register$", "guided_registration", name="guided_registration"),
url(r"^register/([0-9]+)$", "guided_registration", name="guided_registration"),
)

View file

@ -39,9 +39,20 @@ def guided_registration(request, page_id=0):
return redirect("dashboard")
@login_required
def profile(request):
def edit_profile(request):
attendee = rego.Attendee.get_instance(request.user)
try:
profile = rego.BadgeAndProfile.objects.get(attendee=attendee)
except ObjectDoesNotExist:
profile = None
form = forms.ProfileForm(request.POST or None, instance=profile)
if request.POST and form.is_valid():
form.instance.attendee = attendee
form.save()
form = forms.ProfileForm()
data = {
"form": form,
}