Exemple #1
0
    def get_form_for_page(self):
        fields = {}
        initial = {'activity': self.activity.id}

        task_update_type = ContentType.objects.get(app_label = 'activities', model = 'taskupdate')

        # Add fields for each element on the page
        for task in self.page.object_list:
            activity_type = task.activity.type

            fields['task-%s-status' % task.id] = forms.ModelChoiceField(get_task_statuses(activity_type))
            fields['task-%s-tags' % task.id] = TagsAutoboxField(widget=TagsAutoboxWidget(), required=False)
            fields['task-%s-tags' % task.id].request = self.request
            fields['task-%s-comment' % task.id] = forms.CharField(widget=forms.Textarea, required=False)

            existing_tags = self.get_existing_tags_for_task(task, task_update_type)

            initial['task-%s-status' % task.id] = task.status.id
            initial['task-%s-tags' % task.id] = existing_tags['task']
        
            for task_voter in task.task_voters.all():
                fields['task-%s-task-voter-%s-tags' % (task.id, task_voter.id)] = TagsAutoboxField(widget=TagsAutoboxWidget(), required=False)
                fields['task-%s-task-voter-%s-tags' % (task.id, task_voter.id)].request = self.request
                initial['task-%s-task-voter-%s-tags' % (task.id, task_voter.id)] = existing_tags[task_voter.voter.id]

        if self.request.method == 'POST':
            form = ActivityTasksForm(self.request.POST, initial=initial)
        else:
            form = ActivityTasksForm(initial=initial)

        form.fields.update(fields)

        return form
Exemple #2
0
    def task_counts(self):
        activity = self.detail.obj

        statuses = get_task_statuses(activity.type)

        statuses = statuses.filter(tasks__activity = activity)
        total_all = statuses.count()

        user_supporter = self.detail.request.user.get_profile().supporter
    
        my_tasks = activity.tasks.filter(assigned_to = user_supporter)
        total_my = my_tasks.count()
        
        statuses = statuses.annotate(num_tasks = models.Count('tasks'))
        statuses = statuses.annotate(num_my_tasks = CountIf(
            'tasks',
            condition = {'tasks__assigned_to': user_supporter},
        ))

        counts_by_status = [
            {
                'status_id': None,
                'label': 'Total',
                'count_all': total_all,
                'count_my': total_my,
            },
        ]

        for status in statuses:
            counts_by_status.append({
                'status_id': status.id,
                'label': status.title,
                'count_all': status.num_tasks,
                'count_my': status.num_my_tasks,
            })
       
        return counts_by_status
Exemple #3
0
 def __init__(self, *args, **kwargs):
     activity = kwargs['activity']
     del(kwargs['activity'])
     super(TasksChangeStatusForm, self).__init__(*args, **kwargs)
     self.fields['status'].queryset = get_task_statuses(activity.type)