Skip to content

Commit a47107d

Browse files
committed
Merge branch 'develop'
2 parents 7028f65 + 1a57af8 commit a47107d

File tree

13 files changed

+86
-93
lines changed

13 files changed

+86
-93
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ env:
1212
- TOX_ENV=py35-django-111
1313
- TOX_ENV=py34-django-111
1414
- TOX_ENV=py27-django-111
15+
- TOX_ENV=flake8
1516

1617
matrix:
1718
fast_finish: true

HISTORY.rst

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
History
44
-------
55

6-
0.1.0 (2017-12-28)
6+
0.2.0 (2017-12-28)
77
++++++++++++++++++
88

99
* First release on PyPI.
10+
* Initial models and REST API.
11+
12+
0.3.0 (2017-01-05)
13+
++++++++++++++++++
14+
15+
* Improved REST API filters.

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
djangorestframework==3.7.7
55

66
django-filter==1.1.0
7-
django-genomix==0.1.0
7+
django-genomix==0.3.0
88
django-model-utils==3.0.0

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 0.2.0
2+
current_version = 0.3.0
33
commit = True
44
tag = True
55

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ def get_version(*file_paths):
5959
install_requires=[
6060
'djangorestframework==3.7.3',
6161
'django-filter==1.1.0',
62-
'django-genomix==0.1.0',
62+
'django-genomix==0.3.0',
6363
'django-model-utils==3.0.0',
6464
],
6565
license="MIT",
6666
zip_safe=False,
6767
keywords='django-user-activities',
6868
classifiers=[
69-
'Development Status :: 3 - Alpha',
69+
'Development Status :: 4 - Beta',
7070
'Framework :: Django',
7171
'Framework :: Django :: 1.10',
7272
'Framework :: Django :: 1.11',

tests/test_apis.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def test_post(self):
7474
'created',
7575
'modified'
7676
]
77-
difference = set(expected_keys).difference(set(observed_keys))
77+
difference = set(observed_keys).difference(set(expected_keys))
7878
assert len(difference) == 0
7979

8080
def test_get(self):
@@ -106,7 +106,7 @@ def test_get(self):
106106
'created',
107107
'modified'
108108
]
109-
difference = set(expected_keys).difference(set(observed_keys))
109+
difference = set(observed_keys).difference(set(expected_keys))
110110
assert len(difference) == 0
111111

112112
def test_put(self):
@@ -150,7 +150,7 @@ def test_put(self):
150150
'created',
151151
'modified'
152152
]
153-
difference = set(expected_keys).difference(set(observed_keys))
153+
difference = set(observed_keys).difference(set(expected_keys))
154154
assert len(difference) == 0
155155

156156
def test_patch(self):
@@ -191,7 +191,7 @@ def test_patch(self):
191191
'created',
192192
'modified'
193193
]
194-
difference = set(expected_keys).difference(set(observed_keys))
194+
difference = set(observed_keys).difference(set(expected_keys))
195195
assert len(difference) == 0
196196

197197
def test_delete(self):
@@ -294,7 +294,7 @@ def test_post(self):
294294
'created',
295295
'modified'
296296
]
297-
difference = set(expected_keys).difference(set(observed_keys))
297+
difference = set(observed_keys).difference(set(expected_keys))
298298
assert len(difference) == 0
299299

300300
def test_get(self):
@@ -336,11 +336,12 @@ def test_get(self):
336336
'text',
337337
'active',
338338
'activities',
339+
'tags',
339340
'user',
340341
'created',
341342
'modified'
342343
]
343-
difference = set(expected_keys).difference(set(observed_keys))
344+
difference = set(observed_keys).difference(set(expected_keys))
344345
assert len(difference) == 0
345346

346347
def test_put(self):
@@ -384,7 +385,7 @@ def test_put(self):
384385
'created',
385386
'modified'
386387
]
387-
difference = set(expected_keys).difference(set(observed_keys))
388+
difference = set(observed_keys).difference(set(expected_keys))
388389
assert len(difference) == 0
389390

390391
def test_patch(self):
@@ -425,7 +426,7 @@ def test_patch(self):
425426
'created',
426427
'modified'
427428
]
428-
difference = set(expected_keys).difference(set(observed_keys))
429+
difference = set(observed_keys).difference(set(expected_keys))
429430
assert len(difference) == 0
430431

431432
def test_delete(self):
@@ -531,7 +532,7 @@ def test_post(self):
531532
'created',
532533
'modified'
533534
]
534-
difference = set(expected_keys).difference(set(observed_keys))
535+
difference = set(observed_keys).difference(set(expected_keys))
535536
assert len(difference) == 0
536537

537538
def test_get(self):
@@ -572,14 +573,16 @@ def test_get(self):
572573
expected_keys = [
573574
'id',
574575
'text',
576+
'rating',
575577
'active',
576578
'rating',
577579
'activities',
580+
'tags',
578581
'user',
579582
'created',
580583
'modified'
581584
]
582-
difference = set(expected_keys).difference(set(observed_keys))
585+
difference = set(observed_keys).difference(set(expected_keys))
583586
assert len(difference) == 0
584587

585588
def test_put(self):
@@ -626,7 +629,7 @@ def test_put(self):
626629
'created',
627630
'modified'
628631
]
629-
difference = set(expected_keys).difference(set(observed_keys))
632+
difference = set(observed_keys).difference(set(expected_keys))
630633
assert len(difference) == 0
631634

632635
def test_patch(self):
@@ -661,14 +664,15 @@ def test_patch(self):
661664
expected_keys = [
662665
'id',
663666
'text',
667+
'rating',
664668
'active',
665669
'content_type',
666670
'object_id',
667671
'user',
668672
'created',
669673
'modified'
670674
]
671-
difference = set(expected_keys).difference(set(observed_keys))
675+
difference = set(observed_keys).difference(set(expected_keys))
672676
assert len(difference) == 0
673677

674678
def test_delete(self):

tests/test_filters.py

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,6 @@ class TestCommentFilter(TestCase):
2020
def setUp(self):
2121
fixtures.Comment()
2222

23-
def test_filter_username(self):
24-
"""Test username filter."""
25-
f = filters.CommentFilter(
26-
{'username': 'username'},
27-
queryset=models.Comment.objects.all()
28-
)
29-
result = list(f.qs)
30-
31-
assert len(result) == 1
32-
assert result[0].user.username == 'username'
33-
3423
def test_filter_content_model(self):
3524
"""Test content_model filter."""
3625
f = filters.CommentFilter(
@@ -48,17 +37,6 @@ class TestReviewFilter(TestCase):
4837
def setUp(self):
4938
fixtures.Review()
5039

51-
def test_filter_username(self):
52-
"""Test username filter."""
53-
f = filters.ReviewFilter(
54-
{'username': 'username'},
55-
queryset=models.Review.objects.all()
56-
)
57-
result = list(f.qs)
58-
59-
assert len(result) == 1
60-
assert result[0].user.username == 'username'
61-
6240
def test_filter_content_model(self):
6341
"""Test content_model filter."""
6442
f = filters.ReviewFilter(
@@ -69,14 +47,3 @@ def test_filter_content_model(self):
6947

7048
assert len(result) == 1
7149
assert result[0].content_type.model == 'review'
72-
73-
def test_filter_rating_label(self):
74-
"""Test content_model filter."""
75-
f = filters.ReviewFilter(
76-
{'rating_label': 'label'},
77-
queryset=models.Review.objects.all()
78-
)
79-
result = list(f.qs)
80-
81-
assert len(result) == 1
82-
assert result[0].rating.label == 'label'

tox.ini

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ envlist =
88
python_files = tests.py test_*.py *_tests.py
99
DJANGO_SETTINGS_MODULE = tests.settings
1010

11+
[flake8]
12+
ignore = D203,F405
13+
exclude = .tox,.git,*migrations*,docs/conf.py,build,dist,*tests*,*test*
14+
max-line-length = 119
15+
1116
[testenv:flake8]
1217
basepython = python
1318
deps = flake8

user_activities/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.2.0'
1+
__version__ = '0.3.0'

user_activities/filters.py

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,71 @@
11
# -*- coding: utf-8 -*-
2-
from django.contrib.contenttypes.models import ContentType
3-
from django.db.models import Q
4-
from django.utils.text import slugify
5-
62
import django_filters
3+
from genomix.filters import DisplayChoiceFilter
4+
5+
from . import choices, models
6+
7+
8+
class ActivityFilter(django_filters.rest_framework.FilterSet):
9+
10+
username = django_filters.CharFilter(
11+
name='user__username',
12+
lookup_expr='iexact',
13+
)
14+
activity_type = DisplayChoiceFilter(choices=choices.ACTIVITY_TYPES)
715

8-
from . import models
16+
class Meta:
17+
model = models.Activity
18+
fields = [
19+
'user',
20+
'activity_type',
21+
'active',
22+
'content_type',
23+
'object_id',
24+
]
925

1026

1127
class CommentFilter(django_filters.rest_framework.FilterSet):
1228

1329
username = django_filters.CharFilter(
14-
method='filter_username',
15-
label='Username',
30+
name='user__username',
31+
lookup_expr='iexact',
1632
)
17-
content_model = django_filters.CharFilter(
18-
method='filter_content_model',
19-
label='ContentType Model',
33+
tags = django_filters.ModelMultipleChoiceFilter(
34+
queryset=models.Tag.objects.all(),
35+
widget=django_filters.widgets.CSVWidget,
36+
help_text='Multiple values may be separated by commas.',
2037
)
2138

2239
class Meta:
2340
model = models.Comment
2441
fields = [
2542
'user',
2643
'active',
44+
'tags',
2745
'content_type',
2846
'object_id',
2947
]
3048

31-
def filter_username(self, queryset, name, value):
32-
return queryset.filter(Q(user__username__iexact=value))
33-
34-
def filter_content_model(self, queryset, name, value):
35-
obj = ContentType.objects.get(model=value.replace(" ", "").lower())
36-
return queryset.filter(Q(content_type=obj.id))
37-
3849

3950
class ReviewFilter(django_filters.rest_framework.FilterSet):
4051

4152
username = django_filters.CharFilter(
42-
method='filter_username',
43-
label='Username',
44-
)
45-
content_model = django_filters.CharFilter(
46-
method='filter_content_model',
47-
label='ContentType Model',
53+
name='user__username',
54+
lookup_expr='iexact',
4855
)
49-
rating_label = django_filters.CharFilter(
50-
method='filter_rating_label',
51-
label='Rating Label',
56+
tags = django_filters.ModelMultipleChoiceFilter(
57+
queryset=models.Tag.objects.all(),
58+
widget=django_filters.widgets.CSVWidget,
59+
help_text='Multiple values may be separated by commas.',
5260
)
5361

5462
class Meta:
5563
model = models.Review
5664
fields = [
5765
'user',
5866
'active',
67+
'tags',
5968
'content_type',
6069
'object_id',
6170
'rating',
6271
]
63-
64-
def filter_username(self, queryset, name, value):
65-
return queryset.filter(Q(user__username__iexact=value))
66-
67-
def filter_content_model(self, queryset, name, value):
68-
obj = ContentType.objects.get(model=value.replace(" ", "").lower())
69-
return queryset.filter(Q(content_type=obj.id))
70-
71-
def filter_rating_label(self, queryset, name, value):
72-
return queryset.filter(Q(rating__slug=slugify(value)))

0 commit comments

Comments
 (0)