예제 #1
0
def attach_extra_info(queryset,
                      user=None,
                      include_attachments=False,
                      include_tasks=False,
                      epic_id=None):
    queryset = attach_total_points(queryset)
    queryset = attach_role_points(queryset)
    queryset = attach_epics(queryset)

    if include_attachments:
        queryset = attach_basic_attachments(queryset)
        queryset = queryset.extra(select={"include_attachments": "True"})

    if include_tasks:
        queryset = attach_tasks(queryset)
        queryset = queryset.extra(select={"include_tasks": "True"})

    if epic_id is not None:
        queryset = attach_epic_order(queryset, epic_id)
        queryset = queryset.extra(select={"include_epic_order": "True"})

    queryset = attach_total_attachments(queryset)
    queryset = attach_total_voters_to_queryset(queryset)
    queryset = attach_watchers_to_queryset(queryset)
    queryset = attach_total_watchers_to_queryset(queryset)
    queryset = attach_is_voter_to_queryset(queryset, user)
    queryset = attach_is_watcher_to_queryset(queryset, user)
    queryset = attach_total_comments_to_queryset(queryset)
    return queryset
예제 #2
0
def attach_extra_info(queryset, user=None, include_attachments=False):
    if include_attachments:
        queryset = attach_basic_attachments(queryset)
        queryset = queryset.extra(select={"include_attachments": "True"})

    queryset = attach_generated_user_stories(queryset)
    queryset = attach_total_voters_to_queryset(queryset)
    queryset = attach_watchers_to_queryset(queryset)
    queryset = attach_total_watchers_to_queryset(queryset)
    queryset = attach_is_voter_to_queryset(queryset, user)
    queryset = attach_is_watcher_to_queryset(queryset, user)
    return queryset
예제 #3
0
def tasks_to_csv(project, queryset):
    csv_data = io.StringIO()
    fieldnames = ["id", "ref", "subject", "description", "user_story", "sprint_id",
                  "sprint", "sprint_estimated_start", "sprint_estimated_finish",
                  "owner", "owner_full_name",
                  "assigned_to",
                  "assigned_to_full_name", "status", "is_iocaine", "is_closed",
                  "us_order",
                  "taskboard_order", "attachments", "external_reference",
                  "tags", "watchers",
                  "voters", "created_date", "modified_date", "finished_date",
                  "due_date",
                  "due_date_reason"]

    custom_attrs = project.taskcustomattributes.all()
    for custom_attr in custom_attrs:
        fieldnames.append(custom_attr.name)

    queryset = queryset.prefetch_related("attachments",
                                         "generated_user_stories",
                                         "custom_attributes_values")
    queryset = queryset.select_related("milestone",
                                       "owner",
                                       "assigned_to",
                                       "status",
                                       "project")

    queryset = attach_total_voters_to_queryset(queryset)
    queryset = attach_watchers_to_queryset(queryset)

    writer = csv.DictWriter(csv_data, fieldnames=fieldnames)
    writer.writeheader()
    for task in queryset:
        task_data = {
            "id": task.id,
            "ref": task.ref,
            "subject": task.subject,
            "description": task.description,
            "user_story": task.user_story.ref if task.user_story else None,
            "sprint_id": task.milestone.id if task.milestone else None,
            "sprint": task.milestone.name if task.milestone else None,
            "sprint_estimated_start": task.milestone.estimated_start if task.milestone else None,
            "sprint_estimated_finish": task.milestone.estimated_finish if task.milestone else None,
            "owner": task.owner.username if task.owner else None,
            "owner_full_name": task.owner.get_full_name() if task.owner else None,
            "assigned_to": task.assigned_to.username if task.assigned_to else None,
            "assigned_to_full_name": task.assigned_to.get_full_name() if task.assigned_to else None,
            "status": task.status.name if task.status else None,
            "is_iocaine": task.is_iocaine,
            "is_closed": task.status is not None and task.status.is_closed,
            "us_order": task.us_order,
            "taskboard_order": task.taskboard_order,
            "attachments": task.attachments.count(),
            "external_reference": task.external_reference,
            "tags": ",".join(task.tags or []),
            "watchers": task.watchers,
            "voters": task.total_voters,
            "created_date": task.created_date,
            "modified_date": task.modified_date,
            "finished_date": task.finished_date,
            "due_date": task.due_date,
            "due_date_reason": task.due_date_reason,
        }
        for custom_attr in custom_attrs:
            if not hasattr(task, "custom_attributes_values"):
                continue
            value = task.custom_attributes_values.attributes_values.get(str(custom_attr.id), None)
            task_data[custom_attr.name] = value
        writer.writerow(task_data)

    return csv_data
예제 #4
0
def epics_to_csv(project, queryset):
    csv_data = io.StringIO()
    fieldnames = [
        "id", "ref", "subject", "description", "owner", "owner_full_name",
        "assigned_to", "assigned_to_full_name", "status", "epics_order",
        "client_requirement", "team_requirement", "attachments", "tags",
        "watchers", "voters", "created_date", "modified_date",
        "related_user_stories"
    ]

    custom_attrs = project.epiccustomattributes.all()
    for custom_attr in custom_attrs:
        fieldnames.append(custom_attr.name)

    queryset = queryset.prefetch_related("attachments",
                                         "custom_attributes_values",
                                         "user_stories__project")
    queryset = queryset.select_related("owner", "assigned_to", "status",
                                       "project")

    queryset = attach_total_voters_to_queryset(queryset)
    queryset = attach_watchers_to_queryset(queryset)

    writer = csv.DictWriter(csv_data, fieldnames=fieldnames)
    writer.writeheader()
    for epic in queryset:
        epic_data = {
            "id":
            epic.id,
            "ref":
            epic.ref,
            "subject":
            epic.subject,
            "description":
            epic.description,
            "owner":
            epic.owner.username if epic.owner else None,
            "owner_full_name":
            epic.owner.get_full_name() if epic.owner else None,
            "assigned_to":
            epic.assigned_to.username if epic.assigned_to else None,
            "assigned_to_full_name":
            epic.assigned_to.get_full_name() if epic.assigned_to else None,
            "status":
            epic.status.name if epic.status else None,
            "epics_order":
            epic.epics_order,
            "client_requirement":
            epic.client_requirement,
            "team_requirement":
            epic.team_requirement,
            "attachments":
            epic.attachments.count(),
            "tags":
            ",".join(epic.tags or []),
            "watchers":
            epic.watchers,
            "voters":
            epic.total_voters,
            "created_date":
            epic.created_date,
            "modified_date":
            epic.modified_date,
            "related_user_stories":
            ",".join([
                "{}#{}".format(us.project.slug, us.ref)
                for us in epic.user_stories.all()
            ]),
        }

        for custom_attr in custom_attrs:
            if not hasattr(epic, "custom_attributes_values"):
                continue
            value = epic.custom_attributes_values.attributes_values.get(
                str(custom_attr.id), None)
            epic_data[custom_attr.name] = value

        writer.writerow(epic_data)

    return csv_data
예제 #5
0
def userstories_to_csv(project, queryset):
    csv_data = io.StringIO()
    fieldnames = [
        "id", "ref", "subject", "description", "sprint_id", "sprint",
        "sprint_estimated_start", "sprint_estimated_finish", "owner",
        "owner_full_name", "assigned_to", "assigned_to_full_name",
        "assigned_users", "assigned_users_full_name", "status", "is_closed"
    ]

    roles = project.roles.filter(computable=True).order_by('slug')
    for role in roles:
        fieldnames.append("{}-points".format(role.slug))

    fieldnames.append("total-points")

    fieldnames += [
        "backlog_order", "sprint_order", "kanban_order", "created_date",
        "modified_date", "finish_date", "client_requirement",
        "team_requirement", "attachments", "generated_from_issue",
        "generated_from_task", "external_reference", "tasks", "tags",
        "watchers", "voters", "due_date", "due_date_reason"
    ]

    custom_attrs = project.userstorycustomattributes.all()
    for custom_attr in custom_attrs:
        fieldnames.append(custom_attr.name)

    queryset = queryset.prefetch_related("role_points", "role_points__points",
                                         "role_points__role", "tasks",
                                         "attachments",
                                         "custom_attributes_values")
    queryset = queryset.select_related("milestone", "project", "status",
                                       "owner", "assigned_to",
                                       "generated_from_issue",
                                       "generated_from_task")

    queryset = attach_total_voters_to_queryset(queryset)
    queryset = attach_watchers_to_queryset(queryset)

    writer = csv.DictWriter(csv_data, fieldnames=fieldnames)
    writer.writeheader()
    for us in queryset:
        row = {
            "id":
            us.id,
            "ref":
            us.ref,
            "subject":
            us.subject,
            "description":
            us.description,
            "sprint_id":
            us.milestone.id if us.milestone else None,
            "sprint":
            us.milestone.name if us.milestone else None,
            "sprint_estimated_start":
            us.milestone.estimated_start if us.milestone else None,
            "sprint_estimated_finish":
            us.milestone.estimated_finish if us.milestone else None,
            "owner":
            us.owner.username if us.owner else None,
            "owner_full_name":
            us.owner.get_full_name() if us.owner else None,
            "assigned_to":
            us.assigned_to.username if us.assigned_to else None,
            "assigned_to_full_name":
            us.assigned_to.get_full_name() if us.assigned_to else None,
            "assigned_users":
            ",".join([
                assigned_user.username
                for assigned_user in us.assigned_users.all()
            ]),
            "assigned_users_full_name":
            ",".join([
                assigned_user.get_full_name()
                for assigned_user in us.assigned_users.all()
            ]),
            "status":
            us.status.name if us.status else None,
            "is_closed":
            us.is_closed,
            "backlog_order":
            us.backlog_order,
            "sprint_order":
            us.sprint_order,
            "kanban_order":
            us.kanban_order,
            "created_date":
            us.created_date,
            "modified_date":
            us.modified_date,
            "finish_date":
            us.finish_date,
            "client_requirement":
            us.client_requirement,
            "team_requirement":
            us.team_requirement,
            "attachments":
            us.attachments.count(),
            "generated_from_issue":
            us.generated_from_issue.ref if us.generated_from_issue else None,
            "generated_from_task":
            us.generated_from_task.ref if us.generated_from_task else None,
            "external_reference":
            us.external_reference,
            "tasks":
            ",".join([str(task.ref) for task in us.tasks.all()]),
            "tags":
            ",".join(us.tags or []),
            "watchers":
            us.watchers,
            "voters":
            us.total_voters,
            "due_date":
            us.due_date,
            "due_date_reason":
            us.due_date_reason,
        }

        us_role_points_by_role_id = {
            us_rp.role.id: us_rp.points.value
            for us_rp in us.role_points.all()
        }
        for role in roles:
            row["{}-points".format(role.slug)] = \
                us_role_points_by_role_id.get(role.id, 0)

        row['total-points'] = us.get_total_points()

        for custom_attr in custom_attrs:
            if not hasattr(us, "custom_attributes_values"):
                continue
            value = us.custom_attributes_values.attributes_values.get(
                str(custom_attr.id), None)
            row[custom_attr.name] = value

        writer.writerow(row)

    return csv_data