Fix tests, identations and pass the Flake8

remotes/origin/issue/4795/notification_even_they_are_disabled
David Barragán Merino 2016-06-22 22:24:07 +02:00
parent 13e0e79f44
commit c82288faa3
7 changed files with 73 additions and 61 deletions

View File

@ -35,6 +35,10 @@ from taiga.projects.notifications.utils import attach_watchers_to_queryset
from . import models
#####################################################
# Bulk actions
#####################################################
def get_issues_from_bulk(bulk_data, **additional_fields):
"""Convert `bulk_data` into a list of issues.
@ -83,6 +87,10 @@ def update_issues_order_in_bulk(bulk_data):
db.update_in_bulk_with_ids(issue_ids, new_order_values, model=models.Issue)
#####################################################
# CSV
#####################################################
def issues_to_csv(project, queryset):
csv_data = io.StringIO()
fieldnames = ["ref", "subject", "description", "sprint", "sprint_estimated_start",
@ -143,6 +151,10 @@ def issues_to_csv(project, queryset):
return csv_data
#####################################################
# Api filter data
#####################################################
def _get_issues_statuses(project, queryset):
compiler = connection.ops.compiler(queryset.query.compiler)(queryset.query, connection, None)
queryset_where_tuple = queryset.query.where.as_sql(compiler, connection)
@ -394,7 +406,7 @@ def _get_issues_owners(project, queryset):
FROM projects_membership
LEFT OUTER JOIN counters ON ("projects_membership"."user_id" = "counters"."owner_id")
INNER JOIN "users_user" ON ("projects_membership"."user_id" = "users_user"."id")
WHERE ("projects_membership"."project_id" = %s AND "projects_membership"."user_id" IS NOT NULL)
WHERE "projects_membership"."project_id" = %s AND "projects_membership"."user_id" IS NOT NULL
-- System users
UNION
@ -430,26 +442,21 @@ def _get_issues_tags(project, queryset):
where_params = queryset_where_tuple[1]
extra_sql = """
WITH
issues_tags AS (
SELECT tag, COUNT(tag) counter FROM (
WITH issues_tags AS (
SELECT tag,
COUNT(tag) counter FROM (
SELECT UNNEST(tags) tag
FROM issues_issue
WHERE {where}
) tags
GROUP BY tag
),
WHERE {where}) tags
GROUP BY tag),
project_tags AS (
SELECT reduce_dim(tags_colors) tag_color
FROM projects_project
WHERE id=%s
)
WHERE id=%s)
SELECT
tag_color[1] tag, issues_tags.counter counter
SELECT tag_color[1] tag, issues_tags.counter counter
FROM project_tags
LEFT JOIN
issues_tags ON project_tags.tag_color[1] = issues_tags.tag
LEFT JOIN issues_tags ON project_tags.tag_color[1] = issues_tags.tag
ORDER BY tag
""".format(where=where)

View File

@ -31,6 +31,7 @@ class TaskPermission(TaigaResourcePermission):
partial_update_perms = CommentAndOrUpdatePerm('modify_task', 'comment_task')
destroy_perms = HasProjectPerm('delete_task')
list_perms = AllowAny()
filters_data_perms = AllowAny()
csv_perms = AllowAny()
bulk_create_perms = HasProjectPerm('add_task')
bulk_update_order_perms = HasProjectPerm('modify_task')

View File

@ -87,9 +87,6 @@ class UserStoryViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixi
"kanban_order",
"total_voters"]
# Specific filter used for filtering neighbor user stories
_neighbor_tags_filter = filters.TagsFilter('neighbor_tags')
def get_serializer_class(self, *args, **kwargs):
if self.action in ["retrieve", "by_ref"]:
return serializers.UserStoryNeighborsSerializer

View File

@ -28,9 +28,8 @@ from django.utils.translation import ugettext as _
from taiga.base.utils import db, text
from taiga.projects.history.services import take_snapshot
from taiga.projects.userstories.apps import (
connect_userstories_signals,
disconnect_userstories_signals)
from taiga.projects.userstories.apps import connect_userstories_signals
from taiga.projects.userstories.apps import disconnect_userstories_signals
from taiga.events import events
from taiga.projects.votes.utils import attach_total_voters_to_queryset
@ -39,6 +38,10 @@ from taiga.projects.notifications.utils import attach_watchers_to_queryset
from . import models
#####################################################
# Bulk actions
#####################################################
def get_userstories_from_bulk(bulk_data, **additional_fields):
"""Convert `bulk_data` into a list of user stories.
@ -72,7 +75,7 @@ def create_userstories_in_bulk(bulk_data, callback=None, precall=None, **additio
return userstories
def update_userstories_order_in_bulk(bulk_data:list, field:str, project:object):
def update_userstories_order_in_bulk(bulk_data: list, field: str, project: object):
"""
Update the order of some user stories.
`bulk_data` should be a list of tuples with the following format:
@ -92,7 +95,7 @@ def update_userstories_order_in_bulk(bulk_data:list, field:str, project:object):
db.update_in_bulk_with_ids(user_story_ids, new_order_values, model=models.UserStory)
def update_userstories_milestone_in_bulk(bulk_data:list, milestone:object):
def update_userstories_milestone_in_bulk(bulk_data: list, milestone: object):
"""
Update the milestone of some user stories.
`bulk_data` should be a list of user story ids:
@ -108,7 +111,6 @@ def update_userstories_milestone_in_bulk(bulk_data:list, milestone:object):
def snapshot_userstories_in_bulk(bulk_data, user):
user_story_ids = []
for us_data in bulk_data:
try:
us = models.UserStory.objects.get(pk=us_data['us_id'])
@ -117,6 +119,10 @@ def snapshot_userstories_in_bulk(bulk_data, user):
pass
#####################################################
# Open/Close calcs
#####################################################
def calculate_userstory_is_closed(user_story):
if user_story.status is None:
return False
@ -144,7 +150,11 @@ def open_userstory(us):
us.save(update_fields=["is_closed", "finish_date"])
def userstories_to_csv(project,queryset):
#####################################################
# CSV
#####################################################
def userstories_to_csv(project, queryset):
csv_data = io.StringIO()
fieldnames = ["ref", "subject", "description", "sprint", "sprint_estimated_start",
"sprint_estimated_finish", "owner", "owner_full_name", "assigned_to",
@ -160,7 +170,7 @@ def userstories_to_csv(project,queryset):
"created_date", "modified_date", "finish_date",
"client_requirement", "team_requirement", "attachments",
"generated_from_issue", "external_reference", "tasks",
"tags","watchers", "voters"]
"tags", "watchers", "voters"]
custom_attrs = project.userstorycustomattributes.all()
for custom_attr in custom_attrs:
@ -230,6 +240,10 @@ def userstories_to_csv(project,queryset):
return csv_data
#####################################################
# Api filter data
#####################################################
def _get_userstories_statuses(project, queryset):
compiler = connection.ops.compiler(queryset.query.compiler)(queryset.query, connection, None)
queryset_where_tuple = queryset.query.where.as_sql(compiler, connection)
@ -336,7 +350,8 @@ def _get_userstories_owners(project, queryset):
extra_sql = """
WITH counters AS (
SELECT "userstories_userstory"."owner_id" owner_id, count(coalesce("userstories_userstory"."owner_id", -1)) count
SELECT "userstories_userstory"."owner_id" owner_id,
count(coalesce("userstories_userstory"."owner_id", -1)) count
FROM "userstories_userstory"
INNER JOIN "projects_project" ON ("userstories_userstory"."project_id" = "projects_project"."id")
WHERE {where}
@ -350,7 +365,7 @@ def _get_userstories_owners(project, queryset):
FROM projects_membership
LEFT OUTER JOIN counters ON ("projects_membership"."user_id" = "counters"."owner_id")
INNER JOIN "users_user" ON ("projects_membership"."user_id" = "users_user"."id")
WHERE ("projects_membership"."project_id" = %s AND "projects_membership"."user_id" IS NOT NULL)
WHERE "projects_membership"."project_id" = %s AND "projects_membership"."user_id" IS NOT NULL
-- System users
UNION
@ -386,26 +401,21 @@ def _get_userstories_tags(project, queryset):
where_params = queryset_where_tuple[1]
extra_sql = """
WITH
userstories_tags AS (
SELECT tag, COUNT(tag) counter FROM (
WITH userstories_tags AS (
SELECT tag,
COUNT(tag) counter FROM (
SELECT UNNEST(tags) tag
FROM userstories_userstory
WHERE {where}
) tags
GROUP BY tag
),
WHERE {where}) tags
GROUP BY tag),
project_tags AS (
SELECT reduce_dim(tags_colors) tag_color
FROM projects_project
WHERE id=%s
)
WHERE id=%s)
SELECT
tag_color[1] tag, userstories_tags.counter counter
SELECT tag_color[1] tag, userstories_tags.counter counter
FROM project_tags
LEFT JOIN
userstories_tags ON project_tags.tag_color[1] = userstories_tags.tag
LEFT JOIN userstories_tags ON project_tags.tag_color[1] = userstories_tags.tag
ORDER BY tag
""".format(where=where)

View File

@ -229,6 +229,7 @@ def test_api_filter_by_text_6(client):
assert response.status_code == 200
assert number_of_issues == 1
def test_api_filters_data(client):
project = f.ProjectFactory.create()
user1 = f.UserFactory.create(is_superuser=True)
@ -378,7 +379,6 @@ def test_api_filters_data(client):
assert next(filter(lambda i: i['id'] == severity2.id, response.data["severities"]))["count"] == 0
assert next(filter(lambda i: i['id'] == severity3.id, response.data["severities"]))["count"] == 1
with pytest.raises(StopIteration):
assert next(filter(lambda i: i['name'] == tag0, response.data["tags"]))["count"] == 0
assert next(filter(lambda i: i['name'] == tag1, response.data["tags"]))["count"] == 4
assert next(filter(lambda i: i['name'] == tag2, response.data["tags"]))["count"] == 2
@ -415,7 +415,6 @@ def test_api_filters_data(client):
assert next(filter(lambda i: i['id'] == severity2.id, response.data["severities"]))["count"] == 0
assert next(filter(lambda i: i['id'] == severity3.id, response.data["severities"]))["count"] == 1
with pytest.raises(StopIteration):
assert next(filter(lambda i: i['name'] == tag0, response.data["tags"]))["count"] == 0
assert next(filter(lambda i: i['name'] == tag1, response.data["tags"]))["count"] == 2
assert next(filter(lambda i: i['name'] == tag2, response.data["tags"]))["count"] == 2

View File

@ -504,7 +504,6 @@ def test_api_filters_data(client):
assert next(filter(lambda i: i['id'] == status2.id, response.data["statuses"]))["count"] == 1
assert next(filter(lambda i: i['id'] == status3.id, response.data["statuses"]))["count"] == 4
with pytest.raises(StopIteration):
assert next(filter(lambda i: i['name'] == tag0, response.data["tags"]))["count"] == 0
assert next(filter(lambda i: i['name'] == tag1, response.data["tags"]))["count"] == 4
assert next(filter(lambda i: i['name'] == tag2, response.data["tags"]))["count"] == 3
@ -528,7 +527,6 @@ def test_api_filters_data(client):
assert next(filter(lambda i: i['id'] == status2.id, response.data["statuses"]))["count"] == 0
assert next(filter(lambda i: i['id'] == status3.id, response.data["statuses"]))["count"] == 1
with pytest.raises(StopIteration):
assert next(filter(lambda i: i['name'] == tag0, response.data["tags"]))["count"] == 0
assert next(filter(lambda i: i['name'] == tag1, response.data["tags"]))["count"] == 2
assert next(filter(lambda i: i['name'] == tag2, response.data["tags"]))["count"] == 2