Add created-, modified- and finished_date filters to tasks

remotes/origin/issue/4795/notification_even_they_are_disabled
Michael Jurke 2016-09-02 10:50:47 +02:00
parent 0ec1da600c
commit 87f81154ec
2 changed files with 112 additions and 1 deletions

View File

@ -56,7 +56,10 @@ class TaskViewSet(OCCResourceMixin, VotedResourceMixin, HistoryResourceMixin,
filters.StatusesFilter, filters.StatusesFilter,
filters.TagsFilter, filters.TagsFilter,
filters.WatchersFilter, filters.WatchersFilter,
filters.QFilter) filters.QFilter,
filters.CreatedDateFilter,
filters.ModifiedDateFilter,
filters.FinishedDateFilter)
retrieve_exclude_filters = (filters.OwnersFilter, retrieve_exclude_filters = (filters.OwnersFilter,
filters.AssignedToFilter, filters.AssignedToFilter,
filters.StatusesFilter, filters.StatusesFilter,

View File

@ -19,6 +19,10 @@
import uuid import uuid
import csv import csv
import pytz
from datetime import datetime, timedelta
from urllib.parse import quote
from unittest import mock from unittest import mock
@ -451,6 +455,110 @@ def test_get_tasks_including_attachments(client):
assert len(response.data[0].get("attachments")) == 1 assert len(response.data[0].get("attachments")) == 1
def test_api_filter_by_created_date(client):
user = f.UserFactory(is_superuser=True)
one_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
old_task = f.create_task(owner=user, created_date=one_day_ago)
task = f.create_task(owner=user, subject="test")
url = reverse("tasks-list") + "?created_date=%s" % (
quote(task.created_date.isoformat())
)
client.login(task.owner)
response = client.get(url)
number_of_tasks = len(response.data)
assert response.status_code == 200
assert number_of_tasks == 1
assert response.data[0]["subject"] == task.subject
def test_api_filter_by_created_date__lt(client):
user = f.UserFactory(is_superuser=True)
one_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
old_task = f.create_task(owner=user, created_date=one_day_ago)
task = f.create_task(owner=user, subject="test")
url = reverse("tasks-list") + "?created_date__lt=%s" % (
quote(task.created_date.isoformat())
)
client.login(task.owner)
response = client.get(url)
number_of_tasks = len(response.data)
assert response.status_code == 200
assert response.data[0]["subject"] == old_task.subject
def test_api_filter_by_created_date__lte(client):
user = f.UserFactory(is_superuser=True)
one_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
old_task = f.create_task(owner=user, created_date=one_day_ago)
task = f.create_task(owner=user)
url = reverse("tasks-list") + "?created_date__lte=%s" % (
quote(task.created_date.isoformat())
)
client.login(task.owner)
response = client.get(url)
number_of_tasks = len(response.data)
assert response.status_code == 200
assert number_of_tasks == 2
def test_api_filter_by_modified_date__gte(client):
user = f.UserFactory(is_superuser=True)
_day_ago = datetime.now(pytz.utc) - timedelta(days=1)
older_task = f.create_task(owner=user)
task = f.create_task(owner=user, subject="test")
# we have to refresh as it slightly differs
task.refresh_from_db()
assert older_task.modified_date < task.modified_date
url = reverse("tasks-list") + "?modified_date__gte=%s" % (
quote(task.modified_date.isoformat())
)
client.login(task.owner)
response = client.get(url)
number_of_tasks = len(response.data)
assert response.status_code == 200
assert number_of_tasks == 1
assert response.data[0]["subject"] == task.subject
def test_api_filter_by_finished_date(client):
user = f.UserFactory(is_superuser=True)
project = f.ProjectFactory.create()
status0 = f.TaskStatusFactory.create(project=project, is_closed=True)
task = f.create_task(owner=user)
finished_task = f.create_task(owner=user, status=status0, subject="test")
assert finished_task.finished_date
url = reverse("tasks-list") + "?finished_date__gte=%s" % (
quote(finished_task.finished_date.isoformat())
)
client.login(task.owner)
response = client.get(url)
number_of_tasks = len(response.data)
assert response.status_code == 200
assert number_of_tasks == 1
assert response.data[0]["subject"] == finished_task.subject
def test_api_filters_data(client): def test_api_filters_data(client):
project = f.ProjectFactory.create() project = f.ProjectFactory.create()
user1 = f.UserFactory.create(is_superuser=True) user1 = f.UserFactory.create(is_superuser=True)