1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
from django.contrib import admin
from django.core.exceptions import ValidationError
from django.forms.models import BaseInlineFormSet
from .models import AccountClass, AccountGroup, Account, IncomingBalance
from .models import JournalEntry, JournalItem, JournalUrl, Object, Year
class AccountClassAdmin(admin.ModelAdmin):
list_display = ('name', 'inbalance', 'balancenegative')
class AccountAdmin(admin.ModelAdmin):
list_display = ('num', 'name')
class JournalItemFormset(BaseInlineFormSet):
def clean(self):
super(JournalItemFormset, self).clean()
if len(self.forms) == 0:
raise ValidationError("Cannot save with no entries")
s = sum([f.cleaned_data['amount'] for f in self.forms if hasattr(f, 'cleaned_data') and f.cleaned_data and not f.cleaned_data.get('DELETE', False)])
if s != 0:
raise ValidationError("Journal entry does not balance!")
class JournalItemInline(admin.TabularInline):
model = JournalItem
formset = JournalItemFormset
class JournalUrlInline(admin.TabularInline):
model = JournalUrl
class JournalEntryAdmin(admin.ModelAdmin):
inlines = [JournalItemInline, JournalUrlInline]
list_display = ('__str__', 'year', 'seq', 'date', 'closed')
class IncomingBalanceAdmin(admin.ModelAdmin):
list_display = ('__str__', 'year', 'account', 'amount')
class ObjectAdmin(admin.ModelAdmin):
list_display = ('name', 'active')
class YearAdmin(admin.ModelAdmin):
readonly_fields = ('year',)
admin.site.register(AccountClass, AccountClassAdmin)
admin.site.register(AccountGroup)
admin.site.register(Account, AccountAdmin)
admin.site.register(IncomingBalance, IncomingBalanceAdmin)
admin.site.register(JournalEntry, JournalEntryAdmin)
admin.site.register(Object, ObjectAdmin)
admin.site.register(Year, YearAdmin)
|