summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2015-11-20 14:21:49 -0500
committerluxagraf <sng@luxagraf.net>2015-11-20 14:21:49 -0500
commit9412a3793b298daa14179c4f3789fe3ffc46ecba (patch)
tree68b439a9174522ed96e9262a209032cfd6e11016 /app
parent1167d8086a826a4896cdcb5b36e78eeb1e6e8fb0 (diff)
About halfway through adding income by month section to admin.
Diffstat (limited to 'app')
-rw-r--r--app/TODO4
-rw-r--r--app/income/admin.py52
-rw-r--r--app/pages/models.py12
3 files changed, 54 insertions, 14 deletions
diff --git a/app/TODO b/app/TODO
index 502002d..ed6720c 100644
--- a/app/TODO
+++ b/app/TODO
@@ -16,7 +16,9 @@ revamp notes to be like my own personal instagram
income app:
-Add admin pages for viewing income by month, including future. So page with list of months and links to months: /admin/income/month/ default to current month, add option GET param to show past months, add code to views and call it from base_urls before main admin include. show everything with status accepted and then the separately show pitched as possibilities, then show totals alongside how much we need to live. If invoice is submitted show date submitted and create a probably pay date for each publisher.
+- Add pitched stories as possibilities below total, t
+- show totals alongside how much we need to live.
+- add pay_turnaround field for each publisher and show in admin
---
diff --git a/app/income/admin.py b/app/income/admin.py
index d8430be..02c01ef 100644
--- a/app/income/admin.py
+++ b/app/income/admin.py
@@ -1,9 +1,17 @@
+import datetime
from django.contrib import admin
+from django.db.models import Sum
+from django.contrib.admin import helpers
+from django.contrib.gis.admin import OSMGeoAdmin
+from django.conf.urls import patterns
+from django.conf.urls import url
+from django.shortcuts import render
+
from .models import Gig
-class GigAdmin(admin.ModelAdmin):
+class GigAdmin(OSMGeoAdmin):
list_display = ('title', 'status', 'payment_status', 'invoice_date', 'payment', 'publisher', 'pub_date', 'word_count')
list_filter = ('publisher', 'status', 'payment_status')
fieldsets = (
@@ -11,8 +19,8 @@ class GigAdmin(admin.ModelAdmin):
'fields': (
'title',
'pitch',
- ('payment', 'pay_type','payment_status', 'invoice_date'),
- ('status', 'pub_date', 'word_count' ),
+ ('payment', 'pay_type', 'payment_status', 'invoice_date'),
+ ('status', 'pub_date', 'word_count'),
'publisher',
'pub_item'
),
@@ -24,4 +32,42 @@ class GigAdmin(admin.ModelAdmin):
}
),
)
+
+ def get_urls(self):
+ urls = super(GigAdmin, self).get_urls()
+ custom_urls = patterns('',
+ 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['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)
+
+
admin.site.register(Gig, GigAdmin)
diff --git a/app/pages/models.py b/app/pages/models.py
index 832b958..0062bd9 100644
--- a/app/pages/models.py
+++ b/app/pages/models.py
@@ -1,15 +1,6 @@
from django.db import models
from django.contrib.sitemaps import Sitemap
-import markdown
-from mdx_attr_list.mdx_attr_list import AttrListExtension
-def markdown_processor(txt):
- md = markdown.Markdown(
- extensions=[AttrListExtension(),'footnotes',],
- output_format='html5',
- safe_mode=False
- )
- return md.convert(txt)
class Page(models.Model):
title = models.CharField(max_length=200)
@@ -17,6 +8,7 @@ class Page(models.Model):
body_html = models.TextField(blank=True)
body_markdown = models.TextField()
meta_description = models.CharField(max_length=256, null=True, blank=True)
+ #path = models.CharField(max_length=200, null=True, blank=True)
def __unicode__(self):
return self.title
@@ -25,7 +17,7 @@ class Page(models.Model):
return "/%s/" % (self.slug)
def save(self):
- #run markdown
+ # run markdown
self.body_html = markdown_processor(self.body_markdown)
super(Page, self).save()