Esempio n. 1
0
def coordinator(request):
    query = request.POST.get('query')
    if not query:
        return HttpResponse(json.dumps([]), mimetype='application/json')
    project_list = (Project.get(uuid) for uuid in Project.list())
    result = [ p.manager for p in project_list if re.search(query, p.manager, re.IGNORECASE) ]
    return HttpResponse(json.dumps(result), mimetype='application/json')
Esempio n. 2
0
def projects(request):
    project_list = (Project.get(uuid) for uuid in Project.list())
    context = {}
    for p in project_list:
        cluster = p.cluster or 'Unknown'
        if context.get(cluster) == None:
            context[cluster] = []
        context[cluster].append({
            'uuid': p._uuid,
            'name': p.name,
            'description': p.description,
            'contract': p.contract
        })

    return TemplateResponse(request, 'entry/list.html', {'projects': context})
Esempio n. 3
0
def projects_json(request):
    project_list = (Project.get(uuid) for uuid in Project.list())
    projects = [{
        'uuid': p._uuid,
        'name': p.name,
        'description': p.description,
        'contract': p.contract,
        'cluster': p.cluster,
        'municipality': p.municipality,
        'programme': p.programme,
        'phase': (p.phase or '').title(),
        'year': p.fyear
    } for p in project_list]
    years = set((i['year'] for i in projects))
    result = [{
        'year': year,
        'projects': [p for p in projects if p['year'] == year]
    } for year in years]
    return HttpResponse(json.dumps(projects), mimetype='application/json')
Esempio n. 4
0
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)
Esempio n. 5
0
    def handle(self, *args, **options):
        base_url = os.getenv('BASE_URL', settings.BASE_URL)

        for c in self.clusters:
            cluster = generate_cluster_dashboard_v2('department-of-%s' % c)
            
            for programme in cluster['programmes']:
                if programme['title']:
                    programme_id = '%s:%s' % (c, slugify(unicode(programme['title'])))

                    body = {
                        'id': 'programme:%s' % programme_id,
                        'title': programme['title'],
                        'url': '/#/projects/%s/%s' % (c, programme['title']),
                        'cluster': cluster['client'],
                        'cluster_id': c,
                    }

                    es.index(index='pmis', doc_type='programme', id=programme_id, body=body)

            for project_id in Project.list():
                if project_id:
                    project = Project.get(project_id, as_json=True)
                    body = {
                        'id': 'project:%s' % project_id,
                        'title': project['description'],
                        'url': '%s/reports/project/%s/latest/' % (base_url, project_id),
                        'cluster': cluster['client'],
                        'cluster_id': c,
                        # 'manager': project.get('manager'),
                        # 'municipality': project.get('municipality'),
                        # 'comments': project.get('comments'),
                        'programme': project.get('programme'),
                        'programme_id': slugify(project.get('programme', u'')),
                    }
                    es.index(index='pmis', doc_type='project', id=project_id, body=body)
Esempio n. 6
0
def insertProject(details):
    project = Project(details)
    project.save()
Esempio n. 7
0
    Loop through the cells in the heading row, looking for the
    fields we are interested in (by using a lambda)
    """
    headings = getHeadingRow(sheet)

    columnsOfInterest = {}
    for fieldName, lambdas in fieldsOfInterest.iteritems():
        for column, cell in enumerate(headings):
            if lambdas[0](cell):
                columnsOfInterest[fieldName] = column
                break

    return columnsOfInterest

projects = []
project_ids = Project.list()
for project_id in project_ids:
    project = Project.get(project_id)
    projects.append(project)

print '%s projects found' % len(projects)

def projectExists(project):

    for p in projects:
        if (project['cluster'] == p.cluster and
            project.get('name') == p.name and
            project['district'] == p.district and
            project['municipality'] == p.municipality):
            return True
    return False
Esempio n. 8
0
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)