コード例 #1
0
ファイル: views.py プロジェクト: adieyal/PMIS
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)
コード例 #2
0
ファイル: views.py プロジェクト: adieyal/PMIS
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)