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
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_user_stories_counts_to_queryset(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
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
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
def attach_extra_info(queryset, user=None, include_attachments=False): queryset = attach_watchers_to_queryset(queryset) queryset = attach_total_watchers_to_queryset(queryset) queryset = attach_is_watcher_to_queryset(queryset, user) return queryset
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