diff --git a/RIGS/admin.py b/RIGS/admin.py index 49b8aa1e..541c6b53 100644 --- a/RIGS/admin.py +++ b/RIGS/admin.py @@ -1,25 +1,24 @@ from django.contrib import admin -from RIGS import models, forms -from django.contrib.auth.admin import UserAdmin -from django.utils.translation import ugettext_lazy as _ -from reversion.admin import VersionAdmin - -from django.contrib.admin import helpers -from django.template.response import TemplateResponse from django.contrib import messages -from django.db import transaction +from django.contrib.admin import helpers +from django.contrib.auth.admin import UserAdmin from django.core.exceptions import ObjectDoesNotExist +from django.db import transaction from django.db.models import Count from django.forms import ModelForm - +from django.template.response import TemplateResponse +from django.utils.translation import ugettext_lazy as _ from reversion import revisions as reversion +from reversion.admin import VersionAdmin + +from RIGS import models, forms # Register your models here. admin.site.register(models.VatRate, VersionAdmin) admin.site.register(models.Event, VersionAdmin) admin.site.register(models.EventItem, VersionAdmin) -admin.site.register(models.Invoice) -admin.site.register(models.Payment) +admin.site.register(models.Invoice, VersionAdmin) +admin.site.register(models.Payment, VersionAdmin) @admin.register(models.Profile) diff --git a/RIGS/models.py b/RIGS/models.py index dc73b0ca..3a10a22f 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -1,24 +1,21 @@ +from collections import Counter + import datetime import hashlib -import datetime import pytz - -from django.db import models -from django.contrib.auth.models import AbstractUser +import random +import string +from decimal import Decimal from django.conf import settings +from django.contrib.auth.models import AbstractUser +from django.core.exceptions import ValidationError +from django.db import models +from django.urls import reverse_lazy from django.utils import timezone -from django.utils.functional import cached_property from django.utils.encoding import python_2_unicode_compatible +from django.utils.functional import cached_property from reversion import revisions as reversion from reversion.models import Version -import string - -import random -from collections import Counter -from decimal import Decimal - -from django.core.exceptions import ValidationError -from django.urls import reverse_lazy # Create your models here. @@ -532,7 +529,7 @@ class EventAuthorisation(models.Model, RevisionMixin): @reversion.register(follow=['payment_set']) @python_2_unicode_compatible -class Invoice(models.Model): +class Invoice(models.Model, RevisionMixin): event = models.OneToOneField('Event', on_delete=models.CASCADE) invoice_date = models.DateField(auto_now_add=True) void = models.BooleanField(default=False) diff --git a/RIGS/templates/RIGS/invoice_detail.html b/RIGS/templates/RIGS/invoice_detail.html index e1b77b6c..5670b7ef 100644 --- a/RIGS/templates/RIGS/invoice_detail.html +++ b/RIGS/templates/RIGS/invoice_detail.html @@ -6,20 +6,21 @@
-

Invoice {{ object.pk }} ({{ object.invoice_date|date:"d/m/Y"}})

+

Invoice {{ object.pk }} ({{ object.invoice_date|date:"d/m/Y" }})

@@ -83,9 +84,11 @@
Authorised by
- {% if object.event.authorised %} + {% if object.event.authorised %} {{ object.event.authorisation.name }} - ({{ object.event.authorisation.email }}) + ( + {{ object.event.authorisation.email }} + ) {% endif %}
@@ -172,6 +175,13 @@
+ +
+
+ + Last edited at {{ object.last_edited_at }} by {{ object.last_edited_by.name }} + +
{% endblock %} diff --git a/RIGS/urls.py b/RIGS/urls.py index c9ed8a04..b6d285b1 100644 --- a/RIGS/urls.py +++ b/RIGS/urls.py @@ -1,13 +1,12 @@ from django.conf.urls import url -from django.contrib.auth.views import password_reset - from django.contrib.auth.decorators import login_required -from RIGS import models, views, rigboard, finance, ical, versioning, forms -from django.views.generic import RedirectView +from django.contrib.auth.views import password_reset from django.views.decorators.clickjacking import xframe_options_exempt +from django.views.generic import RedirectView -from PyRIGS.decorators import permission_required_with_403 from PyRIGS.decorators import api_key_required +from PyRIGS.decorators import permission_required_with_403 +from RIGS import models, views, rigboard, finance, ical, versioning, forms urlpatterns = [ # Examples: @@ -144,6 +143,10 @@ urlpatterns = [ url(r'^invoice/(?P\d+)/delete/$', permission_required_with_403('RIGS.change_invoice')(finance.InvoiceDelete.as_view()), name='invoice_delete'), + url(r'^invoice/(?P\d+)/history/$', + permission_required_with_403('RIGS.view_invoice')(versioning.VersionHistory.as_view()), + name='invoice_history', kwargs={'model': models.Invoice}), + url(r'^payment/create/$', permission_required_with_403('RIGS.add_payment')(finance.PaymentCreate.as_view()), name='payment_create'),