Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit b73ffae

Browse files
authored
[qa] Reformatted code with black
1 parent c800be0 commit b73ffae

40 files changed

+992
-636
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ install:
2626

2727
before_script:
2828
- |
29-
openwisp-utils-qa-checks --migration-path "./django_netjsongraph/migrations" \
30-
--migration-module django_netjsongraph
29+
openwisp-qa-check --migration-path "./django_netjsongraph/migrations" \
30+
--migration-module django_netjsongraph
3131
3232
script:
3333
- coverage run --source=django_netjsongraph runtests.py

django_netjsongraph/admin.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from django.contrib import admin
22

3-
from .base.admin import (AbstractLinkAdmin, AbstractNodeAdmin,
4-
AbstractTopologyAdmin)
3+
from .base.admin import AbstractLinkAdmin, AbstractNodeAdmin, AbstractTopologyAdmin
54
from .models import Link, Node, Topology
65

76

django_netjsongraph/api/generics.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ class BaseNetworkCollectionView(generics.ListAPIView):
1717
Data of all the topologies returned
1818
in NetJSON NetworkCollection format
1919
"""
20+
2021
serializer_class = NetworkGraphSerializer
2122

2223

@@ -25,6 +26,7 @@ class BaseNetworkGraphView(generics.RetrieveAPIView):
2526
Data of a specific topology returned
2627
in NetJSON NetworkGraph format
2728
"""
29+
2830
serializer_class = NetworkGraphSerializer
2931

3032

@@ -40,17 +42,18 @@ def get(self, request, pk, format=None):
4042
options = dict(topology=topology, date=date)
4143
# missing date: 400
4244
if not date:
43-
return Response({'detail': _('missing required "date" parameter')},
44-
status=400)
45+
return Response(
46+
{'detail': _('missing required "date" parameter')}, status=400
47+
)
4548
try:
4649
s = self.snapshot_model.objects.get(**options)
4750
return Response(json.loads(s.data))
4851
except self.snapshot_model.DoesNotExist:
49-
return Response({'detail': _('no snapshot found for this date')},
50-
status=404)
52+
return Response(
53+
{'detail': _('no snapshot found for this date')}, status=404
54+
)
5155
except ValidationError:
52-
return Response({'detail': _('invalid date supplied')},
53-
status=403)
56+
return Response({'detail': _('invalid date supplied')}, status=403)
5457

5558

5659
class BaseReceiveTopologyView(APIView):
@@ -63,29 +66,32 @@ class BaseReceiveTopologyView(APIView):
6366
Allowed content-types:
6467
* text/plain
6568
"""
69+
6670
parser_classes = (TextParser,)
6771

6872
def post(self, request, pk, format=None):
6973
topology = get_object_or_404(self.model, pk, strategy='receive')
7074
key = request.query_params.get('key')
7175
# wrong content type: 415
7276
if request.content_type != 'text/plain':
73-
return Response({'detail': _('expected content type "text/plain"')},
74-
status=415)
77+
return Response(
78+
{'detail': _('expected content type "text/plain"')}, status=415
79+
)
7580
# missing key: 400
7681
if not key:
77-
return Response({'detail': _('missing required "key" parameter')},
78-
status=400)
82+
return Response(
83+
{'detail': _('missing required "key" parameter')}, status=400
84+
)
7985
# wrong key 403
8086
if topology.key != key:
81-
return Response({'detail': _('wrong key')},
82-
status=403)
87+
return Response({'detail': _('wrong key')}, status=403)
8388
try:
8489
topology.receive(request.data)
8590
except NetdiffException as e:
86-
error = _('Supplied data not recognized as %s, '
87-
'got exception of type "%s" '
88-
'with message "%s"') % (topology.get_parser_display(),
89-
e.__class__.__name__, e)
91+
error = _(
92+
'Supplied data not recognized as %s, '
93+
'got exception of type "%s" '
94+
'with message "%s"'
95+
) % (topology.get_parser_display(), e.__class__.__name__, e)
9096
return Response({'detail': error}, status=400)
9197
return Response({'detail': _('data received successfully')})

django_netjsongraph/api/parsers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class TextParser(JSONParser):
88
"""
99
Dummy TextParser accepting any text (used in ReceiveTopologyView)
1010
"""
11+
1112
media_type = 'text/plain'
1213

1314
def parse(self, stream, media_type=None, parser_context=None):

django_netjsongraph/api/serializers.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,25 @@ class NetworkCollectionSerializer(serializers.ListSerializer):
77
"""
88
NetJSON NetworkCollection
99
"""
10+
1011
@property
1112
def data(self):
1213
return super(serializers.ListSerializer, self).data
1314

1415
def to_representation(self, data):
15-
return OrderedDict((
16-
('type', 'NetworkCollection'),
17-
('collection', super().to_representation(data))
18-
))
16+
return OrderedDict(
17+
(
18+
('type', 'NetworkCollection'),
19+
('collection', super().to_representation(data)),
20+
)
21+
)
1922

2023

2124
class NetworkGraphSerializer(serializers.ModelSerializer):
2225
"""
2326
NetJSON NetworkGraph
2427
"""
28+
2529
def to_representation(self, obj):
2630
return obj.json(dict=True)
2731

django_netjsongraph/api/views.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
from ..models import Snapshot, Topology
2-
from .generics import (BaseNetworkCollectionView, BaseNetworkGraphHistoryView,
3-
BaseNetworkGraphView, BaseReceiveTopologyView)
2+
from .generics import (
3+
BaseNetworkCollectionView,
4+
BaseNetworkGraphHistoryView,
5+
BaseNetworkGraphView,
6+
BaseReceiveTopologyView,
7+
)
48

59

610
class NetworkCollectionView(BaseNetworkCollectionView):

django_netjsongraph/base/admin.py

Lines changed: 89 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from django.templatetags.static import static
77
from django.urls import reverse
88
from django.utils.translation import ugettext_lazy as _
9+
910
from openwisp_utils.admin import ReceiveUrlAdmin
1011

1112
from .. import settings as app_settings
@@ -17,25 +18,35 @@ class TimeStampedEditableAdmin(ModelAdmin):
1718
"""
1819
ModelAdmin for TimeStampedEditableModel
1920
"""
21+
2022
def __init__(self, *args, **kwargs):
21-
self.readonly_fields += ('created', 'modified',)
23+
self.readonly_fields += (
24+
'created',
25+
'modified',
26+
)
2227
super().__init__(*args, **kwargs)
2328

2429

2530
class BaseAdmin(TimeStampedEditableAdmin):
2631
save_on_top = True
2732

2833
class Media:
29-
css = {'all': [static('netjsongraph/css/src/netjsongraph.css'),
30-
static('netjsongraph/css/lib/jquery-ui.min.css'),
31-
static('netjsongraph/css/style.css'),
32-
static('netjsongraph/css/admin.css')]}
33-
js = [static('netjsongraph/js/lib/d3.min.js'),
34-
static('netjsongraph/js/lib/jquery-ui.min.js'),
35-
static('netjsongraph/js/src/netjsongraph.js'),
36-
static('netjsongraph/js/strategy-switcher.js'),
37-
static('netjsongraph/js/topology-history.js'),
38-
static('netjsongraph/js/visualize.js')]
34+
css = {
35+
'all': [
36+
static('netjsongraph/css/src/netjsongraph.css'),
37+
static('netjsongraph/css/lib/jquery-ui.min.css'),
38+
static('netjsongraph/css/style.css'),
39+
static('netjsongraph/css/admin.css'),
40+
]
41+
}
42+
js = [
43+
static('netjsongraph/js/lib/d3.min.js'),
44+
static('netjsongraph/js/lib/jquery-ui.min.js'),
45+
static('netjsongraph/js/src/netjsongraph.js'),
46+
static('netjsongraph/js/strategy-switcher.js'),
47+
static('netjsongraph/js/topology-history.js'),
48+
static('netjsongraph/js/visualize.js'),
49+
]
3950

4051

4152
class AbstractTopologyAdmin(BaseAdmin, ReceiveUrlAdmin, GraphVisualizerUrls):
@@ -44,9 +55,21 @@ class AbstractTopologyAdmin(BaseAdmin, ReceiveUrlAdmin, GraphVisualizerUrls):
4455
list_filter = ['parser', 'strategy']
4556
search_fields = ['label', 'id']
4657
actions = ['update_selected', 'unpublish_selected', 'publish_selected']
47-
fields = ['label', 'parser', 'strategy', 'url', 'key',
48-
'expiration_time', 'receive_url', 'published', 'protocol',
49-
'version', 'revision', 'metric', 'created']
58+
fields = [
59+
'label',
60+
'parser',
61+
'strategy',
62+
'url',
63+
'key',
64+
'expiration_time',
65+
'receive_url',
66+
'published',
67+
'protocol',
68+
'version',
69+
'revision',
70+
'metric',
71+
'created',
72+
]
5073
receive_url_name = 'receive_topology'
5174
receive_url_urlconf = app_settings.TOPOLOGY_API_URLCONF
5275
receive_url_baseurl = app_settings.TOPOLOGY_API_BASEURL
@@ -63,35 +86,45 @@ def get_actions(self, request):
6386

6487
def change_view(self, request, object_id, form_url='', extra_context=None):
6588
extra_context = extra_context or {}
66-
prefix = 'admin:{0}_{1}'.format(self.opts.app_label, self.model.__name__.lower())
89+
prefix = 'admin:{0}_{1}'.format(
90+
self.opts.app_label, self.model.__name__.lower()
91+
)
6792
text = _('View topology graph')
68-
extra_context.update({
69-
'additional_buttons': [
70-
{
71-
'type': 'button',
72-
'url': reverse('{0}_visualize'.format(prefix), args=[object_id]),
73-
'class': 'visualizelink',
74-
'value': text,
75-
'title': '{0} (ALT+P)'.format(text)
76-
}
77-
]
78-
})
93+
extra_context.update(
94+
{
95+
'additional_buttons': [
96+
{
97+
'type': 'button',
98+
'url': reverse(
99+
'{0}_visualize'.format(prefix), args=[object_id]
100+
),
101+
'class': 'visualizelink',
102+
'value': text,
103+
'title': '{0} (ALT+P)'.format(text),
104+
}
105+
]
106+
}
107+
)
79108
return super().change_view(request, object_id, form_url, extra_context)
80109

81110
def get_urls(self):
82111
options = getattr(self.model, '_meta')
83112
url_prefix = '{0}_{1}'.format(options.app_label, options.model_name)
84113
return [
85-
url(r'^visualize/(?P<pk>[^/]+)/$',
114+
url(
115+
r'^visualize/(?P<pk>[^/]+)/$',
86116
self.admin_site.admin_view(self.visualize_view),
87-
name='{0}_visualize'.format(url_prefix)),
117+
name='{0}_visualize'.format(url_prefix),
118+
),
88119
] + super().get_urls()
89120

90121
def _message(self, request, rows, suffix, level=messages.SUCCESS):
91122
if rows == 1:
92123
prefix = _('1 {0} was'.format(self.model._meta.verbose_name))
93124
else: # pragma: nocover
94-
prefix = _('{0} {1} were'.format(rows, self.model._meta.verbose_name_plural))
125+
prefix = _(
126+
'{0} {1} were'.format(rows, self.model._meta.verbose_name_plural)
127+
)
95128
self.message_user(request, '{0} {1}'.format(prefix, suffix), level=level)
96129

97130
def update_selected(self, request, queryset):
@@ -123,31 +156,40 @@ def update_selected(self, request, queryset):
123156
if total_ignored > 0:
124157
message = _("ignored (not using FETCH strategy)")
125158
self._message(request, total_ignored, message, level=messages.WARNING)
126-
update_selected.short_description = _('Update selected topologies (FETCH strategy only)')
159+
160+
update_selected.short_description = _(
161+
'Update selected topologies (FETCH strategy only)'
162+
)
127163

128164
def publish_selected(self, request, queryset):
129165
rows_updated = queryset.update(published=True)
130166
self._message(request, rows_updated, _('successfully published'))
167+
131168
publish_selected.short_description = _('Publish selected topologies')
132169

133170
def unpublish_selected(self, request, queryset):
134171
rows_updated = queryset.update(published=False)
135172
self._message(request, rows_updated, _('successfully unpublished'))
173+
136174
unpublish_selected.short_description = _('Unpublish selected items')
137175

138176
def visualize_view(self, request, pk):
139177
graph_url, history_url = self.get_graph_urls(request, pk)
140178
context = self.admin_site.each_context(request)
141179
opts = self.model._meta
142-
context.update({
143-
'is_popup': True,
144-
'opts': opts,
145-
'change': False,
146-
'media': self.media,
147-
'graph_url': graph_url,
148-
'history_url': history_url
149-
})
150-
return TemplateResponse(request, 'admin/%s/visualize.html' % opts.app_label, context)
180+
context.update(
181+
{
182+
'is_popup': True,
183+
'opts': opts,
184+
'change': False,
185+
'media': self.media,
186+
'graph_url': graph_url,
187+
'history_url': history_url,
188+
}
189+
)
190+
return TemplateResponse(
191+
request, 'admin/%s/visualize.html' % opts.app_label, context
192+
)
151193

152194

153195
class AbstractNodeAdmin(BaseAdmin):
@@ -159,16 +201,14 @@ def change_view(self, request, object_id, form_url='', extra_context=None):
159201
extra_context = extra_context or {}
160202
link_model = self.model.source_link_set.field.model
161203
admin_url = 'admin:{0}_link_change'.format(self.opts.app_label)
162-
extra_context.update({
163-
'node_links': link_model.objects.select_related('source', 'target')
164-
.only('source__label',
165-
'target__label',
166-
'cost',
167-
'status')
168-
.filter(Q(source_id=object_id) |
169-
Q(target_id=object_id)),
170-
'admin_url': admin_url
171-
})
204+
extra_context.update(
205+
{
206+
'node_links': link_model.objects.select_related('source', 'target')
207+
.only('source__label', 'target__label', 'cost', 'status')
208+
.filter(Q(source_id=object_id) | Q(target_id=object_id)),
209+
'admin_url': admin_url,
210+
}
211+
)
172212
return super().change_view(request, object_id, form_url, extra_context)
173213

174214

0 commit comments

Comments
 (0)