Skip to content

Commit f45504e

Browse files
author
Joachim Jablon
authored
Merge pull request #62 from peopledoc/freshen-up
2 parents c758172 + 6e3bafd commit f45504e

File tree

20 files changed

+82
-114
lines changed

20 files changed

+82
-114
lines changed

.gitignore

+12-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1-
*.pyc
2-
*~
3-
*.egg-info
4-
/var/
1+
__pycache__
52
.coverage
3+
.DS_Store
4+
.mypy_cache
5+
.pytest_cache
6+
.tox
7+
.venv
8+
*.egg-info
9+
*.pyc
10+
build
11+
dist
12+
docs/_build
13+
htmlcov

.travis.yml

+8-5
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@ sudo: true
44
services:
55
- postgresql
66
python:
7-
- 2.7
8-
- 3.5
97
- 3.6
108
- 3.7
119
- 3.8
1210
install:
13-
- pip install tox
14-
- pip install -q tox-travis
11+
- pip install tox tox-travis
1512
script:
16-
- tox
13+
- tox
14+
env:
15+
global:
16+
PGDATABASE: django_generic_filters
17+
PGHOST: localhost
18+
PGUSER: postgres
19+
1720

1821
stages:
1922
- lint

README.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ filter the results:
1515
* validate the user's input using a Django form;
1616
* filter the Django view's queryset using form's cleaned data.
1717

18-
.. image:: https://secure.travis-ci.org/novafloss/django-generic-filters.png?branch=master
18+
.. image:: https://secure.travis-ci.org/peopledoc/django-generic-filters.png?branch=master
1919
:alt: Build Status
20-
:target: https://secure.travis-ci.org/novafloss/django-generic-filters
20+
:target: https://secure.travis-ci.org/peopledoc/django-generic-filters
2121

2222

2323
*******

demo/demoproject/filter/templates/user/user_list.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% load staticfiles paginator i18n %}
1+
{% load static paginator i18n %}
22
<html>
33
<head>
44
<title>django-generic-filters demo</title>
@@ -39,7 +39,7 @@ <h3>{% trans "All users" %} ({{ paginator.count }})</h3>
3939
</div>
4040
</div>
4141
{% endblock %}
42-
42+
4343
<table class="table table-striped">
4444
<thead>
4545
<tr>

demo/demoproject/filter/views.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- coding: utf-8 -*-
21

32
from django_genericfilters.views import FilteredListView
43

demo/demoproject/settings.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,9 @@
2020
DATABASES = {
2121
"default": {
2222
"ENGINE": "django.db.backends.postgresql_psycopg2",
23-
"NAME": "test",
24-
"USER": environ.get("DJANGO_DB_USER", environ.get("USER")),
25-
'PASSWORD': environ.get("DJANGO_DB_PASSWORD", ""),
26-
'HOST': '',
27-
'PORT': '',
23+
"NAME": environ.get("PGDATABASE", "django_generic_filters")
24+
# Configure database using standard PG* environment variables
25+
# https://www.postgresql.org/docs/current/libpq-envars.html
2826
}
2927
}
3028

demo/setup.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
# -*- coding: utf-8 -*-
21
import os
3-
from setuptools import setup
2+
from setuptools import setup, find_packages
43

54

65
def read_relative_file(filename):
@@ -13,11 +12,11 @@ def read_relative_file(filename):
1312
NAME = 'django-genericfilters-demo'
1413
README = read_relative_file('README')
1514
VERSION = '0.1'
16-
PACKAGES = ['demoproject']
15+
PACKAGES = find_packages()
1716
REQUIRES = [
1817
'django-generic-filters',
1918
'mock',
20-
'Django>=1.8,<1.12',
19+
'Django',
2120
'coverage', ]
2221

2322

@@ -27,8 +26,7 @@ def read_relative_file(filename):
2726
long_description=README,
2827
classifiers=['Development Status :: 1 - Planning',
2928
'License :: OSI Approved :: BSD License',
30-
'Programming Language :: Python :: 2',
31-
'Programming Language :: Python :: 2.7',
29+
'Programming Language :: Python :: 3',
3230
'Framework :: Django',
3331
],
3432
keywords='class-based view, generic view, filters',

django_genericfilters/fields.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- coding: utf-8 -*-
21
from django import forms
32
from django.utils.translation import ugettext_lazy as _
43

django_genericfilters/forms.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
# -*- coding: utf-8 -*-
21
"""
32
django generic filters implement a set of mixin to work with ordered
43
and filtered queryset.
54
65
"""
7-
from six import string_types
8-
96
from django import forms
107
from django.utils.translation import ugettext_lazy as _
118

@@ -69,7 +66,7 @@ def get_order_by_choices(self):
6966

7067

7168
def clean_yesno(value):
72-
if isinstance(value, string_types):
69+
if isinstance(value, str):
7370
return {"yes": True, "no": False}.get(value, value)
7471

7572
return value

django_genericfilters/templates/genericfilters/filter_list.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% load i18n updateurl utils staticfiles %}
1+
{% load i18n updateurl utils static %}
22
<link rel="stylesheet" href="{% static 'css/filters_list.css' %}" />
33
<form method="GET" id="search_form" style="display: block;">
44
<ul class="nav nav-list">

django_genericfilters/templatetags/updateurl.py

+5-6
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,9 @@
1515
{% update_query_string with page=paginator.next_page %}
1616
1717
"""
18-
import six
19-
from six.moves import urllib
2018

2119
import re
20+
import urllib
2221

2322
from django import template
2423
from django.template.base import FilterExpression
@@ -102,17 +101,17 @@ def render(self, context):
102101
try:
103102
url = url.resolve(context)
104103
except AttributeError:
105-
url = six.text_type(url)
104+
url = str(url)
106105
updates = {}
107-
for key, value in six.iteritems(self.qs_updates):
106+
for key, value in self.qs_updates.items():
108107
try:
109108
key = key.resolve(context)
110109
except AttributeError:
111-
key = six.text_type(key)
110+
key = str(key)
112111
try:
113112
value = value.resolve(context)
114113
except AttributeError:
115-
value = six.text_type(value)
114+
value = str(value)
116115
updates[key] = value
117116
new_url = update_query_string(url, updates)
118117
try:

django_genericfilters/tests/test_fields.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- coding: utf-8 -*-
21
import unittest
32

43
from django import forms

django_genericfilters/tests/test_forms.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- coding: utf-8 -*-
21
import unittest
32

43
from django import forms

django_genericfilters/tests/test_templatetags.py

+13-15
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import unittest
22

33
from django import forms
4-
from django.template.base import TOKEN_TEXT, Parser, Token, Variable
5-
6-
import mock
4+
from django.template import Template, Context
5+
from django.template.base import Parser, Variable
6+
from django.test import RequestFactory
77

88
from django_genericfilters.templatetags.updateurl import (
9-
token_kwargs, token_value, tag_update_query_string, update_query_string
9+
token_kwargs, token_value, update_query_string
1010
)
1111
from django_genericfilters.templatetags.utils import is_checkbox
1212

@@ -40,18 +40,16 @@ def test_update_query_string(self):
4040
'/foo/?bar=created')
4141

4242
def test_tag_update_query_string(self):
43-
request = mock.Mock()
44-
request.get_full_path = mock.Mock(return_value='/fake')
45-
parser = Parser('')
46-
token = Token(TOKEN_TEXT, 'tag with "page"="2"')
47-
node = tag_update_query_string(parser, token)
48-
self.assertEqual(
49-
node.render({'request': request}),
50-
u'/fake?page=2')
51-
token = Token(TOKEN_TEXT, 'tag with page=num_page')
52-
node = tag_update_query_string(parser, token)
43+
template = Template(
44+
"{% load updateurl %}{% update_query_string with page=num_page %}"
45+
)
5346
self.assertEqual(
54-
node.render({'request': request, 'page': 'page', 'num_page': 2}),
47+
template.render(
48+
Context(
49+
{'request': RequestFactory().get("/fake"),
50+
'page': 'page', 'num_page': 2}
51+
)
52+
),
5553
u'/fake?page=2')
5654

5755
def test_is_checkbox(self):

django_genericfilters/tests/test_views.py

+12-21
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import sys
1+
import urllib
22

33
from django import forms
44
from django.db import models
@@ -8,7 +8,6 @@
88

99
from django_genericfilters import views
1010
from django_genericfilters.forms import FilteredForm
11-
from six.moves import urllib
1211

1312

1413
def setup_view(view, request, *args, **kwargs):
@@ -43,14 +42,6 @@ class StatusModel(models.Model):
4342

4443
class FilteredViewTestCase(TestCase):
4544

46-
def assertIn(self, a, b, msg=None):
47-
if sys.version_info[:2] == (2, 6):
48-
# for 2.6 compatibility
49-
if a not in b:
50-
self.fail("%s is not in %b" % (repr(a), repr(b)))
51-
else:
52-
super(FilteredViewTestCase, self).assertIn(a, b, msg=msg)
53-
5445
class QueryModel(models.Model):
5546
"""
5647
Define a dummy model for this test case
@@ -122,7 +113,7 @@ def test_default_order_fallback_form_valid(self):
122113

123114
view.form.is_valid()
124115
queryset = view.form_valid(view.form)
125-
self.assertEqual(queryset.query.order_by, [])
116+
self.assertEqual(list(queryset.query.order_by), [])
126117

127118
def test_default_order_fallback_form_invalid(self):
128119
"""Queryset is unordered if no default_order or data (invalid form)."""
@@ -134,7 +125,7 @@ def test_default_order_fallback_form_invalid(self):
134125

135126
view.form.is_valid()
136127
queryset = view.form_invalid(view.form)
137-
self.assertEqual(queryset.query.order_by, [])
128+
self.assertEqual(list(queryset.query.order_by), [])
138129

139130
def test_default_order_fallback_form_empty(self):
140131
"""Queryset is unordered if no default_order or data (empty form)."""
@@ -145,7 +136,7 @@ def test_default_order_fallback_form_empty(self):
145136
request)
146137

147138
queryset = view.form_empty()
148-
self.assertEqual(queryset.query.order_by, [])
139+
self.assertEqual(list(queryset.query.order_by), [])
149140

150141
def test_default_filter(self):
151142
"""Test the default filter"""
@@ -187,7 +178,7 @@ def test_default_order_form_valid(self):
187178

188179
view.form.is_valid()
189180
queryset = view.form_valid(view.form)
190-
self.assertEqual(queryset.query.order_by, ['last_name'])
181+
self.assertEqual(list(queryset.query.order_by), ['last_name'])
191182

192183
def test_default_order_form_invalid(self):
193184
"""Queryset is ordered by default_order when no order_by in request
@@ -202,7 +193,7 @@ def test_default_order_form_invalid(self):
202193

203194
view.form.is_valid()
204195
queryset = view.form_invalid(view.form)
205-
self.assertEqual(queryset.query.order_by, ['last_name'])
196+
self.assertEqual(list(queryset.query.order_by), ['last_name'])
206197

207198
def test_default_order_form_empty(self):
208199
"""Queryset is ordered by default_order when no order_by in request."""
@@ -215,7 +206,7 @@ def test_default_order_form_empty(self):
215206
request)
216207

217208
queryset = view.form_empty()
218-
self.assertEqual(queryset.query.order_by, ['last_name'])
209+
self.assertEqual(list(queryset.query.order_by), ['last_name'])
219210

220211
def test_default_order_reverse(self):
221212
"""To test order reverse"""
@@ -229,7 +220,7 @@ def test_default_order_reverse(self):
229220

230221
view.form.is_valid()
231222
queryset = view.form_valid(view.form)
232-
self.assertEqual(queryset.query.order_by, ['-last_name'])
223+
self.assertEqual(list(queryset.query.order_by), ['-last_name'])
233224

234225
def test_default_order_in_request(self):
235226
"""Test with order_by in data."""
@@ -243,7 +234,7 @@ def test_default_order_in_request(self):
243234

244235
view.form.is_valid()
245236
queryset = view.form_valid(view.form)
246-
self.assertEqual(queryset.query.order_by, ['last_name'])
237+
self.assertEqual(list(queryset.query.order_by), ['last_name'])
247238

248239
def test_filtered_list_view(self):
249240
a = views.FilteredListView(filter_fields=['city'],
@@ -291,7 +282,7 @@ def test_filtered_list_view__none(self):
291282
form_class=self.Form,
292283
model=self.QueryModel)
293284

294-
data = {"city": None, "people": "S"}
285+
data = {"city": "None", "people": "S"}
295286
setup_view(view, RequestFactory().get('/fake', data))
296287
view.form.is_valid()
297288
self.assertIn(
@@ -306,7 +297,7 @@ def test_filtered_list_view__none(self):
306297
form_class=self.Form,
307298
model=self.QueryModel)
308299

309-
data = {"city": "N", "people": None}
300+
data = {"city": "N", "people": "None"}
310301
setup_view(view, RequestFactory().get('/fake', data))
311302
view.form.is_valid()
312303
self.assertIn(
@@ -431,7 +422,7 @@ def test_filtered_list_view__modelchoice__none(self):
431422
form_class=self.Form,
432423
model=self.QueryModel)
433424

434-
data = {"city": "N", "parent": None}
425+
data = {"city": "N", "parent": "None"}
435426
setup_view(view, RequestFactory().get('/fake', data))
436427
view.form.is_valid()
437428
self.assertIn(

0 commit comments

Comments
 (0)