kopia lustrzana https://github.com/wagtail/wagtail
Include task description in choosers, if defined (#6200)
rodzic
03f728c67d
commit
fb0742802f
|
@ -195,6 +195,19 @@ For example:
|
||||||
return TaskState.objects.none()
|
return TaskState.objects.none()
|
||||||
|
|
||||||
|
|
||||||
|
``Task.get_description()```
|
||||||
|
|
||||||
|
A class method that returns the human-readable description for the task.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_description(cls):
|
||||||
|
return _("Members of the chosen Wagtail Groups can approve this task")
|
||||||
|
|
||||||
|
|
||||||
Adding notifications
|
Adding notifications
|
||||||
~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
|
@ -12,12 +12,15 @@
|
||||||
|
|
||||||
{% if task_types %}
|
{% if task_types %}
|
||||||
<ul class="listing">
|
<ul class="listing">
|
||||||
{% for verbose_name, app_label, model_name in task_types %}
|
{% for verbose_name, app_label, model_name, description in task_types %}
|
||||||
<li>
|
<li>
|
||||||
<div class="row row-flush">
|
<div class="row row-flush">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<a href="{% url 'wagtailadmin_workflows:add_task' app_label model_name %}" class="icon icon-plus-inverse icon-larger">{{ verbose_name }}</a>
|
<a href="{% url 'wagtailadmin_workflows:add_task' app_label model_name %}" class="icon icon-plus-inverse icon-larger">{{ verbose_name }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col6">
|
||||||
|
{{ description }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -4,12 +4,15 @@
|
||||||
|
|
||||||
{% if task_types %}
|
{% if task_types %}
|
||||||
<ul class="listing">
|
<ul class="listing">
|
||||||
{% for verbose_name, app_label, model_name in task_types %}
|
{% for verbose_name, app_label, model_name, description in task_types %}
|
||||||
<li>
|
<li>
|
||||||
<div class="row row-flush">
|
<div class="row row-flush">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<a href="{% url 'wagtailadmin_workflows:task_chooser' %}?create_model={{ app_label|urlencode }}.{{ model_name|urlencode }}" class="icon icon-plus-inverse icon-larger task-type-choice">{{ verbose_name }}</a>
|
<a href="{% url 'wagtailadmin_workflows:task_chooser' %}?create_model={{ app_label|urlencode }}.{{ model_name|urlencode }}" class="icon icon-plus-inverse icon-larger task-type-choice">{{ verbose_name }}</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col6">
|
||||||
|
{{ description }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -589,6 +589,7 @@ class TestSelectTaskTypeView(TestCase, WagtailTestUtils):
|
||||||
# Check that the list of available task types includes SimpleTask and GroupApprovalTask
|
# Check that the list of available task types includes SimpleTask and GroupApprovalTask
|
||||||
self.assertContains(response, SimpleTask.get_verbose_name())
|
self.assertContains(response, SimpleTask.get_verbose_name())
|
||||||
self.assertContains(response, GroupApprovalTask.get_verbose_name())
|
self.assertContains(response, GroupApprovalTask.get_verbose_name())
|
||||||
|
self.assertContains(response, GroupApprovalTask.get_description())
|
||||||
|
|
||||||
|
|
||||||
class TestEditTaskView(TestCase, WagtailTestUtils):
|
class TestEditTaskView(TestCase, WagtailTestUtils):
|
||||||
|
|
|
@ -331,7 +331,7 @@ def select_task_type(request):
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
|
|
||||||
task_types = [
|
task_types = [
|
||||||
(model.get_verbose_name(), model._meta.app_label, model._meta.model_name)
|
(model.get_verbose_name(), model._meta.app_label, model._meta.model_name, model.get_description())
|
||||||
for model in get_task_types()
|
for model in get_task_types()
|
||||||
]
|
]
|
||||||
# sort by lower-cased version of verbose name
|
# sort by lower-cased version of verbose name
|
||||||
|
@ -340,7 +340,7 @@ def select_task_type(request):
|
||||||
if len(task_types) == 1:
|
if len(task_types) == 1:
|
||||||
# Only one task type is available - redirect straight to the create form rather than
|
# Only one task type is available - redirect straight to the create form rather than
|
||||||
# making the user choose
|
# making the user choose
|
||||||
verbose_name, app_label, model_name = task_types[0]
|
verbose_name, app_label, model_name, description = task_types[0]
|
||||||
return redirect('wagtailadmin_workflows:add_task', app_label, model_name)
|
return redirect('wagtailadmin_workflows:add_task', app_label, model_name)
|
||||||
|
|
||||||
return render(request, 'wagtailadmin/workflows/select_task_type.html', {
|
return render(request, 'wagtailadmin/workflows/select_task_type.html', {
|
||||||
|
@ -525,7 +525,7 @@ def task_chooser(request):
|
||||||
|
|
||||||
# Build task types list for "select task type" view
|
# Build task types list for "select task type" view
|
||||||
task_types = [
|
task_types = [
|
||||||
(model.get_verbose_name(), model._meta.app_label, model._meta.model_name)
|
(model.get_verbose_name(), model._meta.app_label, model._meta.model_name, model.get_description())
|
||||||
for model in task_models
|
for model in task_models
|
||||||
]
|
]
|
||||||
# sort by lower-cased version of verbose name
|
# sort by lower-cased version of verbose name
|
||||||
|
|
|
@ -2719,6 +2719,11 @@ class Task(models.Model):
|
||||||
"""Returns a ``QuerySet`` of the task states the current user can moderate"""
|
"""Returns a ``QuerySet`` of the task states the current user can moderate"""
|
||||||
return TaskState.objects.none()
|
return TaskState.objects.none()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_description(cls):
|
||||||
|
"""Returns the task description."""
|
||||||
|
return ''
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def get_workflows(self):
|
def get_workflows(self):
|
||||||
"""Returns a ``QuerySet`` of the workflows that this task is part of """
|
"""Returns a ``QuerySet`` of the workflows that this task is part of """
|
||||||
|
@ -2839,6 +2844,10 @@ class GroupApprovalTask(Task):
|
||||||
else:
|
else:
|
||||||
return TaskState.objects.none()
|
return TaskState.objects.none()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_description(cls):
|
||||||
|
return _("Members of the chosen Wagtail Groups can approve this task")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Group approval task')
|
verbose_name = _('Group approval task')
|
||||||
verbose_name_plural = _('Group approval tasks')
|
verbose_name_plural = _('Group approval tasks')
|
||||||
|
|
Ładowanie…
Reference in New Issue