def new(request): year = datetime.today().year month = datetime.today().month if month < 3: year -= 1 details = { 'planning': [ { 'expenditure': None, 'progress': None, 'date': '%04d-04-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-05-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-06-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-07-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-08-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-09-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-10-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-11-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-12-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-01-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-02-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-03-01T00:00:00' % (year+1) }, ], 'actual': [ { 'expenditure': None, 'progress': None, 'date': '%04d-04-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-05-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-06-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-07-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-08-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-09-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-10-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-11-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-12-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-01-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-02-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-03-01T00:00:00' % (year+1) }, ] } project = Project(details) project.edit = True project.save() return redirect('entry:edit', project_id=project._uuid)
def edit(request, project_id): project = Project.edit(project_id) # Check actual and planned monthly entries. Add any required to # get to this financial year. current = datetime.today() for m in range(3, 15): year = current.year if current.month < 3: year -= 1 if project.actual == '': project._details['actual'] = [ { 'expenditure': None, 'progress': None, 'date': '%04d-04-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-05-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-06-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-07-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-08-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-09-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-10-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-11-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-12-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-01-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-02-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-03-01T00:00:00' % (year+1) }, ] if project.planning == '': project._details['planning'] = [ { 'expenditure': None, 'progress': None, 'date': '%04d-04-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-05-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-06-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-07-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-08-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-09-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-10-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-11-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-12-01T00:00:00' % (year) }, { 'expenditure': None, 'progress': None, 'date': '%04d-01-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-02-01T00:00:00' % (year+1) }, { 'expenditure': None, 'progress': None, 'date': '%04d-03-01T00:00:00' % (year+1) }, ] year += m/12 month = m%12 + 1 _find_or_add_month(project.actual, year, month) _find_or_add_month(project.planning, year, month) if request.method == 'POST': for key, value in request.POST.items(): if key == '__reset': project.clear() project = Project.edit(project_id) elif key == '__save': project.edit = False elif key == 'csrfmiddlewaretoken': pass else: keys = key.split('.') if len(keys) == 1: project._details[keys[0]] = value else: keys.reverse() d = project._details while len(keys) > 1: k = keys.pop() if type(d) == type({}): d = d.get(k) elif type(d) == type([]): d = d[int(k)] else: pass d[keys[0]] = value project._details['last_modified_user'] = request.user.username if request.user.is_authenticated() else '' project._details['last_modified_time'] = datetime.now().isoformat() project.save() return HttpResponse(json.dumps(project._details), mimetype='application/json') project._details['__project_url'] = reverse('reports:project', kwargs={ 'project_id': project._uuid }) context = { 'data': json.dumps(project._details), 'clusters': Cluster.objects.all(), 'implementing_agents': ImplementingAgent.objects.all() } return TemplateResponse(request, 'entry/project.html', context)