def info(request):
    (context, some_data) = data_existence(request)
    user = request.user
    workspace = request.user.profile.workspace
    context.update({
        'selection': user.id,
        'workspace': workspace,
        'topic': 'info'
    })
    return render(request, 'dashboard/user_info.html', context)
def time(request):
    (context, some_data) = data_existence(request)
    workspace = request.user.profile.workspace
    if some_data:
        user = request.user
        startdate = STARTDATE.isoformat()
        enddate = TODAY.isoformat()
        form = DateRangeForm(initial={
            'start_date': startdate,
            'end_date': enddate
        })
        context.update({'form': form, 'selection': user.id, 'topic': 'time'})
    return render(request, 'dashboard/user_time.html', context)
Example #3
0
def new(request):
    (context, some_data) = data_existence(request)
    profile = request.user.profile
    workspace = profile.workspace
    if request.method == 'POST':
        form = TaskForm(workspace, profile, request.POST)
        if form.is_valid():
            new_task = form.save(commit=False)
            new_task.workspace = workspace
            new_task.save()
            return redirect(reverse_lazy('task_new'))
    else:
        form = TaskForm(workspace, profile, initial={'owner': profile.user.id})
    context.update({'form': form, 'form_action': reverse_lazy('task_new')})
    return render(request, 'dashboard/task_new.html', context)
Example #4
0
def comparison_table(request):
    try:
        tasks = json.loads(request.GET.get('tasks'))
    except:
        tasks = None
    (context, some_data) = data_existence(request)
    data = []
    if some_data and tasks:
        workspace = request.user.profile.workspace
        task_list = apps.get_model('task',
                                   'Task').objects.filter(workspace=workspace,
                                                          pk__in=tasks)
        for i in task_list:
            if not (i.cost_estimate or i.additional_cost):
                cost = ''
            else:
                cost = (i.cost_estimate or 0) + (i.additional_cost or 0)
            if i.start_date:
                start = i.start_date.isoformat()
            else:
                start = None
            if i.end_date:
                end = i.end_date.isoformat()
            else:
                end = None
            tmp = {
                'name': unicode(i),
                'start': start,
                'end': end,
                'time': i.time_estimate or '',
                'cost': cost,
                'actual_start': '',
                'actual_end': '',
                'actual_time': '',
                'actual_cost': ''
            }
            data_list = DailyDataPerTask.objects.filter(
                workspace=workspace, task=i).order_by('date')
            if len(data_list) > 0:
                tmp['actual_start'] = data_list.first().date.isoformat()
                tmp['actual_end'] = data_list.last().date.isoformat()
                tmp['actual_time'] = (data_list.aggregate(
                    Sum('duration'))['duration__sum']).total_seconds() / 3600
                tmp['actual_cost'] = float(
                    data_list.aggregate(Sum('cost'))['cost__sum']) or ''
            data.append(tmp)
    context['data'] = data
    return render(request, 'dashboard/task_comparison_table.html', context)
Example #5
0
def cost(request):
    (context, some_data) = data_existence(request)
    if some_data:
        workspace = request.user.profile.workspace
        startdate = STARTDATE.isoformat()
        enddate = TODAY.isoformat()
        form = DateRangeForm(initial={
            'start_date': startdate,
            'end_date': enddate
        })
        context.update({
            'form': form,
            'topic': 'cost',
            'legend1': _('Cost per project'),
            'legend2': _('Cumulated cost per project')
        })
    return render(request, 'dashboard/task_chart.html', context)
def time_per_user(request):
    startdate = request.GET.get('startdate')
    enddate = request.GET.get('enddate')
    user = request.GET.get('user')
    (context, some_data) = data_existence(request)
    data = {}
    if some_data and user:
        workspace = request.user.profile.workspace
        queryset = DailyDataPerTaskPerUser.objects.filter(workspace=workspace,
                                                        profile__user=user,
                                                        task__monitored=True)
        queryset = queryset_filter(queryset, None, startdate, enddate)
        (array, line_options) = over_time(workspace, queryset, 'duration',
                                                DailyDataPerTaskPerUser)
        line_options['isStacked'] = 'true'
        data['data'] = array
        data['options'] = line_options
    return HttpResponse(json.dumps(data), content_type="application/json")
def time_per_project(request, topic='duration'):
    startdate = request.GET.get('startdate')
    enddate = request.GET.get('enddate')
    try:
        tasks = json.loads(request.GET.get('tasks'))
    except:
        tasks = None
    (context, some_data) = data_existence(request)
    data = {}
    if some_data:
        workspace = request.user.profile.workspace
        queryset = DailyDataPerTask.objects.filter(workspace=workspace,
                                                task__monitored=True)
        queryset = queryset_filter(queryset, tasks, startdate, enddate)
        (array, line_options) = over_time(workspace, queryset, topic,
                                                DailyDataPerTask)
        data['data'] = array
        data['options'] = line_options
    return HttpResponse(json.dumps(data), content_type="application/json")
def overview(request):
    (context, some_data) = data_existence(request)
    workspace = request.user.profile.workspace
    context['users_number'] = Profile.objects.filter(
        user__is_active=True, workspace=workspace).count()
    if some_data:
        startd = STARTDATE
        queryset = DailyDataPerTaskPerUser.objects.filter(task__monitored=True,
                                                          workspace=workspace)
        queryset = queryset_filter(queryset, startdate=startd)
        context['time_consumption'] = sum_and_sort_time(queryset, limit=3)
        context['resources_involved'] = resources_involved(queryset, limit=3)
        context['active_users'] = active_users(queryset)
        # pie chart
        #(pie_data, pie_options) = pie_total_time(queryset)
        #context['chart1_data'] = pie_data
        #context['chart1_options'] = pie_options
        context['legend1'] = _('Time repartition')
        context['legend2'] = _('Cost repartition')
    return render(request, 'dashboard/overview.html', context)
def total_time_per_project(request, topic='duration'):
    try:
        tasks = json.loads(request.GET.get('tasks'))
    except:
        tasks = None
    (context, some_data) = data_existence(request)
    data = {'data':[['Task', 'total time (hours)'],]}
    if some_data and tasks:
        workspace = request.user.profile.workspace
        task_list = apps.get_model('task', 'Task').objects.filter(workspace=workspace, pk__in=tasks)
        for i in task_list:
            data_list = DailyDataPerTask.objects.filter(workspace=workspace,
                                                        task=i)
            if len(data_list) > 0:
                if topic == 'duration':
                    tmp = [ unicode(i),
                            (data_list.aggregate(Sum(topic))['%s__sum'%topic]
                                                        ).total_seconds()/3600]
                elif topic == 'cost':
                    tmp = [unicode(i),
                        int(data_list.aggregate(Sum(topic))['%s__sum'%topic])]
                data['data'].append(tmp)
        data['options'] = {'is3D':'true', 'backgroundColor':'transparent'}
    return HttpResponse(json.dumps(data), content_type="application/json")
Example #10
0
def info(request):
    (context, some_data) = data_existence(request)
    context.update({'topic': 'info'})
    return render(request, 'dashboard/task_info.html', context)
Example #11
0
def comparison(request):
    (context, some_data) = data_existence(request)
    context.update({'topic': 'control'})
    return render(request, 'dashboard/task_comparison.html', context)