|
@@ -7,13 +7,15 @@ from django.http import HttpResponseRedirect
|
|
|
from django.conf.urls import url
|
|
|
from django.contrib.admin.utils import flatten_fieldsets
|
|
|
from django import forms
|
|
|
+from django.template import RequestContext
|
|
|
+from django.shortcuts import render
|
|
|
|
|
|
from coin.filtering_queryset import LimitedAdminInlineMixin
|
|
|
from coin.billing.models import Invoice, InvoiceDetail, Payment, PaymentAllocation
|
|
|
from coin.billing.utils import get_invoice_from_id_or_number
|
|
|
from django.core.urlresolvers import reverse
|
|
|
import autocomplete_light
|
|
|
-
|
|
|
+from functools import update_wrapper
|
|
|
|
|
|
class InvoiceDetailInlineForm(forms.ModelForm):
|
|
|
class Meta:
|
|
@@ -238,5 +240,62 @@ class PaymentAdmin(admin.ModelAdmin):
|
|
|
def get_inline_instances(self, request, obj=None):
|
|
|
return [PaymentAllocationInlineReadOnly(self.model, self.admin_site)]
|
|
|
|
|
|
+ def get_urls(self):
|
|
|
+ def wrap(view):
|
|
|
+ def wrapper(*args, **kwargs):
|
|
|
+ return self.admin_site.admin_view(view)(*args, **kwargs)
|
|
|
+ wrapper.model_admin = self
|
|
|
+ return update_wrapper(wrapper, view)
|
|
|
+
|
|
|
+ urls = super(PaymentAdmin, self).get_urls()
|
|
|
+
|
|
|
+ info = self.model._meta.app_label, self.model._meta.model_name
|
|
|
+
|
|
|
+ print(urls)
|
|
|
+
|
|
|
+ my_urls = [
|
|
|
+ url(r'wizard_import_payment_csv/$', wrap(self.wizard_import_payment_csv), name='wizard_import_payment_csv'),
|
|
|
+ ]
|
|
|
+
|
|
|
+ print(my_urls)
|
|
|
+
|
|
|
+ return my_urls + urls
|
|
|
+
|
|
|
+
|
|
|
+ def wizard_import_payment_csv(self, request):
|
|
|
+ template = "admin/billing/payment/wizard_import_payment_csv.html"
|
|
|
+
|
|
|
+ from .forms import WizardImportPaymentCSV
|
|
|
+
|
|
|
+ if request.method == 'POST':
|
|
|
+ form = WizardImportPaymentCSV(request.POST, request.FILES)
|
|
|
+ if form.is_valid():
|
|
|
+ form.analyze_CSV()
|
|
|
+ return HttpResponseRedirect('/success/url/')
|
|
|
+ else:
|
|
|
+ form = WizardImportPaymentCSV()
|
|
|
+
|
|
|
+ return render(request, template, {
|
|
|
+ 'adminform': form,
|
|
|
+ }, context_instance=RequestContext(request))
|
|
|
+
|
|
|
+
|
|
|
+class MembershipFeeAdmin(admin.ModelAdmin):
|
|
|
+ list_display = ('member', 'end_date', '_amount')
|
|
|
+ form = autocomplete_light.modelform_factory(MembershipFee, fields='__all__')
|
|
|
+
|
|
|
+
|
|
|
+class DonationAdmin(admin.ModelAdmin):
|
|
|
+ list_display = ('member', 'date', '_amount')
|
|
|
+ form = autocomplete_light.modelform_factory(MembershipFee, fields='__all__')
|
|
|
+
|
|
|
+class MembershipFeeInline(admin.TabularInline):
|
|
|
+ model = MembershipFee
|
|
|
+ extra = 0
|
|
|
+ fields = ('start_date', 'end_date', '_amount')
|
|
|
+
|
|
|
+MemberAdmin.list_filter += ('status', MembershipFeeFilter)
|
|
|
+MemberAdmin.inlines += [MembershipFeeInline]
|
|
|
+
|
|
|
admin.site.register(Invoice, InvoiceAdmin)
|
|
|
admin.site.register(Payment, PaymentAdmin)
|