Skip to content

Commit 3ff5cbf

Browse files
committed
Make detail and override views optional
1 parent ccb5853 commit 3ff5cbf

File tree

2 files changed

+64
-7
lines changed

2 files changed

+64
-7
lines changed

galahad/models.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class Meta:
105105
including start end end not of an edge.
106106
"""
107107

108-
manual_override = views.ManualOverrideView
108+
override_view = views.ManualOverrideView
109109
detail_view = views.ProcessDetailView
110110

111111
@classmethod
@@ -151,11 +151,14 @@ def urls(cls):
151151
else:
152152
route = '{name}/<pk>/'.format(name=name)
153153
urls.append(path(route, cls._wrap_view_instance(name, node), name=name))
154-
urls.extend((
155-
path('<pk>/', cls.detail_view.as_view(model=cls),
156-
name='detail'),
157-
path('<pk>/override', cls.manual_override.as_view(model=cls), name='override'),
158-
))
154+
if cls.detail_view:
155+
urls.append(
156+
path('<pk>/', cls.detail_view.as_view(model=cls), name='detail')
157+
)
158+
if cls.override_view:
159+
urls.append(
160+
path('<pk>/override', cls.override_view.as_view(model=cls), name='override')
161+
)
159162
return urls, cls.get_url_namespace()
160163

161164
@classmethod

tests/test_models.py

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from django.contrib.auth import get_user_model
55
from django.contrib.auth.models import AnonymousUser
66
from django.urls import reverse
7-
from django.utils import timezone
87
from django.utils.safestring import SafeString
98
from graphviz import Digraph
109

@@ -211,6 +210,61 @@ def test_cancel__with_anonymous_user(self, db):
211210
process.cancel(user=user)
212211
assert process.task_set.latest().completed_by_user is None
213212

213+
def test_urls(self):
214+
patterns, namespace = models.SimpleProcess.urls()
215+
assert namespace == 'simpleprocess'
216+
names = {pattern.name for pattern in patterns}
217+
assert names == {
218+
'save_the_princess',
219+
'start_view',
220+
'override',
221+
'detail',
222+
}
223+
224+
def test_urls__no_override(self):
225+
class TestProcess(Process):
226+
override_view = None
227+
start = StartView()
228+
end = lambda s: None
229+
230+
edges = (
231+
(start, end),
232+
)
233+
234+
class Meta:
235+
abstract = True
236+
app_label = 'testappp'
237+
238+
patterns, namespace = TestProcess.urls()
239+
assert namespace == 'testprocess'
240+
names = {pattern.name for pattern in patterns}
241+
assert names == {
242+
'start',
243+
'detail',
244+
}
245+
246+
def test_urls__no_detail(self):
247+
class TestProcess(Process):
248+
detail_view = None
249+
start = StartView()
250+
end = lambda s: None
251+
252+
edges = (
253+
(start, end),
254+
)
255+
256+
class Meta:
257+
abstract = True
258+
app_label = 'testappp'
259+
260+
patterns, namespace = TestProcess.urls()
261+
assert namespace == 'testprocess'
262+
names = {pattern.name for pattern in patterns}
263+
assert names == {
264+
'start',
265+
'override',
266+
}
267+
214268

215269
class TestTaskQuerySet:
216270

0 commit comments

Comments
 (0)