diff --git a/PyRIGS/tests/regions.py b/PyRIGS/tests/regions.py index 06e21cda..0e2110bf 100644 --- a/PyRIGS/tests/regions.py +++ b/PyRIGS/tests/regions.py @@ -216,7 +216,7 @@ class ErrorPage(Region): class Modal(Region): _submit_locator = (By.CSS_SELECTOR, '.btn-primary') - _header_selector = (By.TAG_NAME, 'h3') + _header_selector = (By.TAG_NAME, 'h4') form_items = { 'name': (TextBox, (By.ID, 'id_name')) diff --git a/PyRIGS/views.py b/PyRIGS/views.py index ae8ccba1..855a6c85 100644 --- a/PyRIGS/views.py +++ b/PyRIGS/views.py @@ -150,6 +150,20 @@ class SecureAPIRequest(generic.View): return HttpResponse(model) +class ModalURLMixin: + def get_close_url(self, update, detail): + if self.request.is_ajax(): + url = reverse_lazy('closemodal') + update_url = str(reverse_lazy(update, kwargs={'pk': self.object.pk})) + messages.info(self.request, "modalobject=" + serializers.serialize("json", [self.object])) + messages.info(self.request, "modalobject[0]['update_url']='" + update_url + "'") + else: + url = reverse_lazy(detail, kwargs={ + 'pk': self.object.pk, + }) + return url + + class GenericListView(generic.ListView): template_name = 'generic_list.html' paginate_by = 20 @@ -194,6 +208,28 @@ class GenericDetailView(generic.DetailView): return context +class GenericUpdateView(generic.UpdateView): + template_name = "generic_form.html" + + def get_context_data(self, **kwargs): + context = super(GenericUpdateView, self).get_context_data(**kwargs) + context['page_title'] = "Edit {}".format(self.model.__name__) + if self.request.is_ajax(): + context['override'] = "base_ajax.html" + return context + + +class GenericCreateView(generic.CreateView): + template_name = "generic_form.html" + + def get_context_data(self, **kwargs): + context = super(GenericCreateView, self).get_context_data(**kwargs) + context['page_title'] = "Create {}".format(self.model.__name__) + if self.request.is_ajax(): + context['override'] = "base_ajax.html" + return context + + class SearchHelp(generic.TemplateView): template_name = 'search_help.html' diff --git a/RIGS/finance.py b/RIGS/finance.py index c055f465..41633738 100644 --- a/RIGS/finance.py +++ b/RIGS/finance.py @@ -25,15 +25,15 @@ forms.DateField.widget = forms.DateInput(attrs={'type': 'date'}) class InvoiceIndex(generic.ListView): model = models.Invoice - template_name = 'invoice_list_active.html' + template_name = 'invoice_list.html' def get_context_data(self, **kwargs): context = super(InvoiceIndex, self).get_context_data(**kwargs) total = 0 for i in context['object_list']: total += i.balance - context['total'] = total - context['count'] = len(list(context['object_list'])) + context['page_title'] = "Outstanding Invoices ({} Events, £{:.2f})".format(len(list(context['object_list'])), total) + context['description'] = "Paperwork for these events has been sent to treasury, but the full balance has not yet appeared on a ledger" return context def get_queryset(self): @@ -130,6 +130,12 @@ class InvoiceArchive(generic.ListView): template_name = 'invoice_list_archive.html' paginate_by = 25 + def get_context_data(self, **kwargs): + context = super(InvoiceArchive, self).get_context_data(**kwargs) + context['page_title'] = "Invoice Archive" + context['description'] = "This page displays all invoices: outstanding, paid, and void" + return context + def get_queryset(self): q = self.request.GET.get('q', "") @@ -169,8 +175,7 @@ class InvoiceWaiting(generic.ListView): total = 0 for obj in self.get_objects(): total += obj.sum_total - context['total'] = total - context['count'] = len(self.get_objects()) + context['page_title'] = "Events for Invoice ({} Events, £{:.2f})".format(len(self.get_objects()), total) return context def get_queryset(self): diff --git a/RIGS/templates/event_form.html b/RIGS/templates/event_form.html index e8275641..691fe79a 100644 --- a/RIGS/templates/event_form.html +++ b/RIGS/templates/event_form.html @@ -3,6 +3,7 @@ {% load widget_tweaks %} {% load static %} {% load multiply from filters %} +{% load button from filters %} {% block css %} {{ block.super }} @@ -171,11 +172,7 @@