Skip to content

Commit

Permalink
added upload capability for budgets, budgetitems and transactions. ad…
Browse files Browse the repository at this point in the history
…ded all models to admin view too.
  • Loading branch information
Alex Joyce committed Mar 28, 2011
1 parent 272de98 commit 27b8dff
Show file tree
Hide file tree
Showing 7 changed files with 159 additions and 21 deletions.
9 changes: 8 additions & 1 deletion budget/models.py
Expand Up @@ -115,4 +115,11 @@ class Meta:

def __init__(self, *args, **kwargs):
super(BudgetForm, self).__init__(*args, **kwargs)
self.fields['position'].queryset = Position.objects.filter(isactive=True)
self.fields['position'].queryset = Position.objects.filter(isactive=True)

#===============================================================================
# form for uploading test data
#===============================================================================

class UploadDataForm(forms.Form):
file = forms.FileField()
2 changes: 2 additions & 0 deletions budget/urls.py
Expand Up @@ -38,6 +38,8 @@
url(r'^budget/(?P<id>\d+)/approve/$', 'approved_switch', name="budget_approved_switch"),
url(r'^budget/(?P<id>\d+)/view/$', 'view_budgetitems', name="budget_view_budgetitems"),

url(r'^budget/upload/$', 'upload_data_budget', name="budget_upload_budget"),
url(r'^budget/items/upload/$', 'upload_data_budgetitems', name="budget_upload_budgetitems"),


)
78 changes: 62 additions & 16 deletions budget/views.py
@@ -1,6 +1,6 @@
#python functionality
import datetime

import csv

#django functionality
from django.template import RequestContext
Expand All @@ -18,7 +18,9 @@

from positions.models import Position
from transactions.models import Income, Expenditure
from budget.models import Budget, BudgetItem, IncomeBudgetItemForm, ExpenseBudgetItemForm, BudgetForm, IncomeBudgetItem, ExpenseBudgetItem
from categories.models import ExpenditureCategory, IncomeCategory
from budget.models import Budget, BudgetItem, IncomeBudgetItemForm, ExpenseBudgetItemForm, BudgetForm, IncomeBudgetItem, ExpenseBudgetItem, UploadDataForm
from settings import MEDIA_ROOT

def check(check):
#===============================================================================
Expand Down Expand Up @@ -74,7 +76,6 @@ def create_budget(request):
budget.creator = request.user
budget.start_date = start_date(budget.year, budget.term)
budget.end_date = end_date(budget.year, budget.term)
budget.creator = request.user
budget.save()
return HttpResponseRedirect(reverse('budget_create_budgetitems', kwargs={'id': budget.id}))
else:
Expand Down Expand Up @@ -401,7 +402,7 @@ def view_budgetitems (request, id):


@login_required
def upload_data(request):
def upload_data_budget(request):

template = dict()

Expand All @@ -415,22 +416,67 @@ def upload_data(request):
reader = csv.reader(open(directory))

for r in reader:
if r[0] == "EX":
category = ExpenditureCategory()
category.name = r[1]
category.isactive = True
category.save()
elif r[0] == "IN":
category = IncomeCategory()
category.name = r[1]
category.isactive = True
category.save()
budget = Budget()
budget.position = Position.objects.get(name=r[0])
budget.term = r[1]
budget.year = r[2]
budget.stream = r[3]
if r[4] == "TRUE":
budget.approved = True
budget.creator = request.user
budget.start_date = start_date(int(budget.year), budget.term)
budget.end_date = end_date(int(budget.year), budget.term)
budget.save()



return HttpResponseRedirect(reverse('budget_view_budgets'))
else:
form = UploadDataForm()

template['form'] = form

return render_to_response('budget/upload_budget.htm',template, context_instance=RequestContext(request))

@login_required
def upload_data_budgetitems(request):

template = dict()

if request.method == 'POST':

form = UploadDataForm(request.POST, request.FILES)
if form.is_valid():

return HttpResponseRedirect(reverse('category_view_categories'))
directory = MEDIA_ROOT + "/test_data/" + request.FILES["file"].name

reader = csv.reader(open(directory))

for r in reader:
if r[0] == "IN":
item = IncomeBudgetItem()
item.description = r[1]
item.amount_per_item = r[2]
item.num_items = r[3]
item.amount = r[4]
item.budget = Budget.objects.get(position__name=r[5],term=r[6],year=r[7])
item.income_category = IncomeCategory.objects.get(name=r[8])
item.save()
elif r[0] == "EX":
item = ExpenseBudgetItem()
item.description = r[1]
item.amount_per_item = r[2]
item.num_items = r[3]
item.amount = r[4]
item.budget = Budget.objects.get(position__name=r[5],term=r[6],year=r[7])
item.expenditure_category = ExpenditureCategory.objects.get(name=r[8])
item.save()

return HttpResponseRedirect(reverse('budget_view_budgets'))
else:
form = UploadDataForm()

template['form'] = form

return render_to_response('categories/upload_categories.htm',template, context_instance=RequestContext(request))
return render_to_response('budget/upload_budgetitems.htm',template, context_instance=RequestContext(request))

10 changes: 8 additions & 2 deletions transactions/admin.py
@@ -1,7 +1,13 @@
from transactions.models import IncomeCategory, ExpenditureCategory, Income, Expenditure
from transactions.models import Income, Expenditure
from budget.models import Budget, IncomeBudgetItem, ExpenseBudgetItem
from categories.models import IncomeCategory, ExpenditureCategory
from positions.models import Position
from django.contrib import admin

admin.site.register(Income)
admin.site.register(Expenditure)
admin.site.register(IncomeCategory)
admin.site.register(ExpenditureCategory)
admin.site.register(ExpenditureCategory)
admin.site.register(Budget)
admin.site.register(ExpenseBudgetItem)
admin.site.register(Position)
7 changes: 6 additions & 1 deletion transactions/models.py
Expand Up @@ -130,4 +130,9 @@ def clean(self):

return cleaned_data


#===============================================================================
# form for uploading test data
#===============================================================================

class UploadDataForm(forms.Form):
file = forms.FileField()
1 change: 1 addition & 0 deletions transactions/urls.py
Expand Up @@ -41,5 +41,6 @@
url(r'^transaction/delete/(?P<id>\d+)/$', 'delete_transaction', name="transaction_delete_transaction"),

url(r'^transaction/(?P<id>\d+)/approve/$','approved_switch', name="transaction_approved_switch"),
url(r'^transaction/upload/$', 'upload_data', name="transaction_upload_transaction"),

)
73 changes: 72 additions & 1 deletion transactions/views.py
@@ -1,4 +1,6 @@
# Create your views here.
import csv
import datetime

#import Django stuff
from django.template import RequestContext
Expand All @@ -14,7 +16,8 @@

#import models
from transactions.models import Transaction, Income, Expenditure, IncomeCategory, ExpenditureCategory
from transactions.models import ExpenditureForm, IncomeForm
from transactions.models import ExpenditureForm, IncomeForm, UploadDataForm
from settings import MEDIA_ROOT

from budget.models import Budget
from positions.models import Position
Expand Down Expand Up @@ -313,3 +316,71 @@ def approved_switch(request, id):

return HttpResponseRedirect(reverse('transaction_view_transactions') )

@login_required
def upload_data(request):

template = dict()

if request.method == 'POST':

form = UploadDataForm(request.POST, request.FILES)
if form.is_valid():

directory = MEDIA_ROOT + "/test_data/" + request.FILES["file"].name

reader = csv.reader(open(directory))

for r in reader:
if r[0] == "IN":
item = Income()
item.type = "IN"
item.name = r[1]
item.email = r[2]
item.date = datetime.date(year=int(r[3]), month=int(r[4]), day=int(r[5]))
item.amount = r[6]
item.description = r[7]
if r[8] == "TRUE":
item.approved = True
if r[9] == "TRUE":
item.cheque_ready = True
if r[10] == "TRUE":
item.cheque_received = True
item.term = r[11]
item.year = r[12]
item.position = Position.objects.get(name=r[13])
item.budget = Budget.objects.get(position__name=r[13],term=r[11],year=r[12])
item.income_category = IncomeCategory.objects.get(name=r[14])
item.creator = request.user
item.save()
elif r[0] == "EX":
item = Expenditure()
item.type = "EX"
item.name = r[1]
item.email = r[2]
item.date = datetime.date(year=int(r[3]), month=int(r[4]), day=int(r[5]))
item.amount = r[6]
item.description = r[7]
if r[8] == "TRUE":
item.approved = True
if r[9] == "TRUE":
item.cheque_ready = True
if r[10] == "TRUE":
item.cheque_received = True
item.cheque_ready = r[9]
item.cheque_received = r[10]
item.term = r[11]
item.year = r[12]
item.position = Position.objects.get(name=r[13])
item.budget = Budget.objects.get(position__name=r[13],term=r[11],year=r[12])
item.expenditure_category = ExpenditureCategory.objects.get(name=r[14])
item.hst = r[15]
item.creator = request.user
item.save()

return HttpResponseRedirect(reverse('transaction_view_transactions'))
else:
form = UploadDataForm()

template['form'] = form

return render_to_response('transactions/upload_transactions.htm',template, context_instance=RequestContext(request))

0 comments on commit 27b8dff

Please sign in to comment.