summaryrefslogtreecommitdiff
path: root/bak/unused_apps/income/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'bak/unused_apps/income/admin.py')
-rw-r--r--bak/unused_apps/income/admin.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/bak/unused_apps/income/admin.py b/bak/unused_apps/income/admin.py
new file mode 100644
index 0000000..b165371
--- /dev/null
+++ b/bak/unused_apps/income/admin.py
@@ -0,0 +1,88 @@
+import datetime
+from django.contrib import admin
+from django.db.models import Sum
+from django.contrib.gis.admin import OSMGeoAdmin
+from django.conf.urls import url
+from django.shortcuts import render
+
+
+from .models import Gig, Invoice, InvoiceItem
+
+
+@admin.register(InvoiceItem)
+class InvoiceItemAdmin(admin.ModelAdmin):
+ list_display = ('time_start', 'time_end', 'work_done')
+
+
+@admin.register(Invoice)
+class InvoiceAdmin(admin.ModelAdmin):
+ list_display = ('title', 'admin_link', 'date_start', 'date_end')
+
+
+@admin.register(Gig)
+class GigAdmin(OSMGeoAdmin):
+ list_display = ('title', 'status', 'due_date', 'payment_status', 'payment', 'publisher', 'word_count')
+ list_filter = ('publisher', 'status', 'payment_status')
+ fieldsets = (
+ ('Gig', {
+ 'fields': (
+ 'title',
+ 'pitch',
+ ('created', 'due_date'),
+ ('payment', 'pay_type', 'payment_status', 'invoice_date'),
+ ('status', 'pub_date', 'word_count'),
+ 'publisher',
+ 'pub_item'
+ ),
+ 'classes': (
+ 'show',
+ 'extrapretty',
+ 'wide'
+ )
+ }
+ ),
+ )
+
+ def get_urls(self):
+ urls = super(GigAdmin, self).get_urls()
+ custom_urls = [
+ url(
+ r'^monthly/$',
+ self.admin_site.admin_view(self.get_monthly),
+ name='monthly_admin'
+ )
+ ]
+ return custom_urls + urls
+
+ def get_monthly(self, request):
+ context = {
+ 'title': ("This month's income"),
+ 'app_label': self.model._meta.app_label,
+ 'opts': self.model._meta,
+ 'has_change_permission': self.has_change_permission(request)
+ }
+ try:
+ year = request.GET["m"].split("-")[0]
+ month = request.GET["m"].split("-")[1]
+ except:
+ year = datetime.datetime.now().strftime('%Y')
+ month = datetime.datetime.now().strftime('%m')
+ qs = self.model.objects.filter(
+ created__year=year,
+ created__month=month,
+ status__in=[1, 2, 3]
+ )
+ context['pitched'] = self.model.objects.filter(
+ created__year=year,
+ created__month=month,
+ status=0
+ )
+ context['date'] = datetime.datetime.now()
+ context['billed'] = qs.filter(payment_status=1)
+ context['billed_total'] = qs.filter(payment_status=1).aggregate(total_payment=Sum('payment'))
+ context['unbilled'] = qs.filter(payment_status=0)
+ context['unbilled_total'] = qs.filter(payment_status=0).aggregate(total_payment=Sum('payment'))
+ context['total_outstanding'] = qs.aggregate(total_payment=Sum('payment'))
+ context['months'] = self.model.objects.dates('created', 'month')
+ return render(request, 'admin/income_month.html', context)
+