diff --git a/RIGS/forms.py b/RIGS/forms.py index 8093f154..38c368d5 100644 --- a/RIGS/forms.py +++ b/RIGS/forms.py @@ -23,6 +23,14 @@ class EventForm(forms.ModelForm): items = {} + related_models = { + 'person': models.Person, + 'organisation': models.Organisation, + 'venue': models.Venue, + 'mic': models.Profile, + 'checked_in_by': models.Profile, + } + @property def _get_items_json(self): items = {} @@ -37,6 +45,10 @@ class EventForm(forms.ModelForm): self.fields['items_json'].initial = self._get_items_json + def init_items(self): + self.items = self.process_items_json() + return self.items + def process_items_json(self, event=None): data = simplejson.loads(self.cleaned_data['items_json']) items = {} diff --git a/RIGS/rigboard.py b/RIGS/rigboard.py index 0cea5165..3895b16f 100644 --- a/RIGS/rigboard.py +++ b/RIGS/rigboard.py @@ -17,6 +17,7 @@ from PyPDF2 import PdfFileMerger, PdfFileReader from RIGS import models, forms import datetime +import re __author__ = 'ghost' @@ -44,6 +45,17 @@ class EventCreate(generic.CreateView): def get_context_data(self, **kwargs): context = super(EventCreate, self).get_context_data(**kwargs) context['edit'] = True + + form = context['form'] + if re.search('"-\d+"', form['items_json'].value()): + messages.info(self.request, "Your item changes have been saved. Please fix the errors and save the event.") + + + # Get some other objects to include in the form. Used when there are errors but also nice and quick. + for field, model in form.related_models.iteritems(): + value = form[field].value() + if value is not None and value != '': + context[field] = model.objects.get(pk=value) return context def get_success_url(self): @@ -57,6 +69,14 @@ class EventUpdate(generic.UpdateView): def get_context_data(self, **kwargs): context = super(EventUpdate, self).get_context_data(**kwargs) context['edit'] = True + + form = context['form'] + + # Get some other objects to include in the form. Used when there are errors but also nice and quick. + for field, model in form.related_models.iteritems(): + value = form[field].value() + if value is not None and value != '': + context[field] = model.objects.get(pk=value) return context def get_success_url(self): diff --git a/RIGS/templates/RIGS/event_form.html b/RIGS/templates/RIGS/event_form.html index 1d5244e6..8a691b91 100644 --- a/RIGS/templates/RIGS/event_form.html +++ b/RIGS/templates/RIGS/event_form.html @@ -18,18 +18,19 @@