wcs: include drafts or not in current forms cell (#20231)
This commit is contained in:
parent
ff792192d8
commit
850bab5600
|
@ -107,7 +107,7 @@ class WcsFormsMixin(object):
|
|||
class WcsCurrentFormsCellForm(WcsFormsMixin, forms.ModelForm):
|
||||
class Meta:
|
||||
model = WcsCurrentFormsCell
|
||||
fields = ['wcs_site', 'categories', 'current_forms', 'done_forms']
|
||||
fields = ['wcs_site', 'categories', 'current_forms', 'done_forms', 'include_drafts']
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(WcsCurrentFormsCellForm, self).__init__(*args, **kwargs)
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wcs', '0018_wcscurrentdraftscell_categories'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='wcscurrentformscell',
|
||||
name='include_drafts',
|
||||
field=models.BooleanField(default=False, verbose_name='Include drafts'),
|
||||
),
|
||||
]
|
|
@ -307,6 +307,7 @@ class WcsCurrentFormsCell(WcsUserDataBaseCell):
|
|||
categories = JSONField(_('Categories'), blank=True)
|
||||
current_forms = models.BooleanField(_('Current Forms'), default=True)
|
||||
done_forms = models.BooleanField(_('Done Forms'), default=False)
|
||||
include_drafts = models.BooleanField(_('Include drafts'), default=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('User Forms')
|
||||
|
@ -317,11 +318,15 @@ class WcsCurrentFormsCell(WcsUserDataBaseCell):
|
|||
|
||||
def get_api_url(self, context):
|
||||
user = self.get_concerned_user(context)
|
||||
base_url = '/api/user/forms'
|
||||
if user:
|
||||
user_name_id = user.get_name_id()
|
||||
if user_name_id:
|
||||
return '/api/users/%s/forms?limit=100&sort=desc' % user_name_id
|
||||
return '/api/user/forms?limit=100&sort=desc'
|
||||
base_url = '/api/users/%s/forms' % user_name_id
|
||||
url = base_url + '?limit=100&sort=desc'
|
||||
if self.include_drafts:
|
||||
url += '&include-drafts=on'
|
||||
return url
|
||||
|
||||
@property
|
||||
def template_name(self):
|
||||
|
@ -333,12 +338,20 @@ class WcsCurrentFormsCell(WcsUserDataBaseCell):
|
|||
|
||||
def get_additional_label(self):
|
||||
initial_label = super(WcsCurrentFormsCell, self).get_additional_label()
|
||||
if self.current_forms and self.done_forms:
|
||||
label = _('All Forms')
|
||||
elif self.done_forms:
|
||||
label = _('Done Forms')
|
||||
if self.include_drafts:
|
||||
if self.current_forms and self.done_forms:
|
||||
label = _('All Forms and Drafts')
|
||||
elif self.done_forms:
|
||||
label = _('Done Forms and Drafts')
|
||||
else:
|
||||
label = _('Current Forms and Drafts')
|
||||
else:
|
||||
label = _('Current Forms')
|
||||
if self.current_forms and self.done_forms:
|
||||
label = _('All Forms')
|
||||
elif self.done_forms:
|
||||
label = _('Done Forms')
|
||||
else:
|
||||
label = _('Current Forms')
|
||||
if initial_label:
|
||||
return '%s - %s' % (initial_label, label)
|
||||
return label
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{% load combo %}
|
||||
{% block cell-content %}
|
||||
{% if forms %}
|
||||
<ul>
|
||||
|
@ -5,9 +6,13 @@
|
|||
{% if data.url and data.title %}
|
||||
<li class="{{data.status_css_class}} {% if data.form_status_is_endpoint %}done{% endif %}"><a
|
||||
{% if data.readable %}href="{{ data.url }}"{% endif %}><span class="form-title">{{data.name}}</span>
|
||||
{% if data.draft %}
|
||||
<span class="form-number">{{data.datetime|strptime:"%Y-%m-%d %H:%M:%S"}}</span>
|
||||
{% else %}
|
||||
<span class="form-number">{{data.form_number}}
|
||||
{% if data.form_digest %}<span class="form-digest">({{data.form_digest}})</span>{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
<span class="form-status">{{data.status}}</span></a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
|
|
@ -387,6 +387,7 @@ def test_current_forms_cell_render(context):
|
|||
# done forms
|
||||
cell.current_forms = False
|
||||
cell.done_forms = True
|
||||
cell.include_drafts = False
|
||||
cell.save()
|
||||
result = cell.render(context)
|
||||
assert not 'http://127.0.0.1:8999/form-title/1/' in result
|
||||
|
@ -422,6 +423,18 @@ def test_current_forms_cell_render(context):
|
|||
extra_context = cell.get_cell_extra_context(context)
|
||||
assert len(extra_context['forms']) == 0
|
||||
|
||||
# check include drafts
|
||||
cell.include_drafts = False
|
||||
with mock.patch('combo.apps.wcs.models.requests.get') as requests_get:
|
||||
cell.get_cell_extra_context(context)
|
||||
assert requests_get.call_args_list[0][0][0] == '/api/user/forms?limit=100&sort=desc'
|
||||
|
||||
cell.include_drafts = True
|
||||
with mock.patch('combo.apps.wcs.models.requests.get') as requests_get:
|
||||
cell.get_cell_extra_context(context)
|
||||
assert requests_get.call_args_list[0][0][0] == '/api/user/forms?limit=100&sort=desc&include-drafts=on'
|
||||
|
||||
|
||||
@wcs_present
|
||||
def test_current_forms_cell_render_single_site(context):
|
||||
page = Page(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
|
||||
|
|
Loading…
Reference in New Issue