Projet

Général

Profil

0001-wcs-include-drafts-or-not-in-current-forms-cell-2023.patch

Lauréline Guérin, 12 novembre 2019 11:29

Télécharger (5,88 ko)

Voir les différences:

Subject: [PATCH] wcs: include drafts or not in current forms cell (#20231)

 combo/apps/wcs/forms.py                       |  2 +-
 ...0018_wcscurrentformscell_include_drafts.py | 19 +++++++++++++++++++
 combo/apps/wcs/models.py                      | 11 +++++++++--
 .../templates/combo/wcs/list_of_forms.html    |  5 +++++
 tests/test_wcs.py                             | 13 +++++++++++++
 5 files changed, 47 insertions(+), 3 deletions(-)
 create mode 100644 combo/apps/wcs/migrations/0018_wcscurrentformscell_include_drafts.py
combo/apps/wcs/forms.py
86 86
class WcsCurrentFormsCellForm(forms.ModelForm):
87 87
    class Meta:
88 88
        model = WcsCurrentFormsCell
89
        fields = ['wcs_site', 'categories', 'current_forms', 'done_forms']
89
        fields = ['wcs_site', 'categories', 'current_forms', 'done_forms', 'include_drafts']
90 90

  
91 91
    def __init__(self, *args, **kwargs):
92 92
        super(WcsCurrentFormsCellForm, self).__init__(*args, **kwargs)
combo/apps/wcs/migrations/0018_wcscurrentformscell_include_drafts.py
1
# -*- coding: utf-8 -*-
2
from __future__ import unicode_literals
3

  
4
from django.db import migrations, models
5

  
6

  
7
class Migration(migrations.Migration):
8

  
9
    dependencies = [
10
        ('wcs', '0017_wcscareformscell'),
11
    ]
12

  
13
    operations = [
14
        migrations.AddField(
15
            model_name='wcscurrentformscell',
16
            name='include_drafts',
17
            field=models.BooleanField(default=False, verbose_name='Include drafts'),
18
        ),
19
    ]
combo/apps/wcs/models.py
307 307
    categories = JSONField(_('Categories'), blank=True)
308 308
    current_forms = models.BooleanField(_('Current Forms'), default=True)
309 309
    done_forms = models.BooleanField(_('Done Forms'), default=False)
310
    include_drafts = models.BooleanField(_('Include drafts'), default=False)
310 311

  
311 312
    class Meta:
312 313
        verbose_name = _('User Forms')
......
317 318

  
318 319
    def get_api_url(self, context):
319 320
        user = self.get_concerned_user(context)
321
        base_url = '/api/user/forms'
320 322
        if user:
321 323
            user_name_id = user.get_name_id()
322 324
            if user_name_id:
323
                return '/api/users/%s/forms?limit=100&sort=desc' % user_name_id
324
        return '/api/user/forms?limit=100&sort=desc'
325
                base_url = '/api/users/%s/forms' % user_name_id
326
        url = base_url + '?limit=100&sort=desc'
327
        if self.include_drafts:
328
            url += '&include-drafts=on'
329
        return url
325 330

  
326 331
    @property
327 332
    def template_name(self):
......
339 344
            label = _('Done Forms')
340 345
        else:
341 346
            label = _('Current Forms')
347
        if self.include_drafts:
348
            label = '%s %s' % (label, _('and drafts'))
342 349
        if initial_label:
343 350
            return '%s - %s' % (initial_label, label)
344 351
        return label
combo/apps/wcs/templates/combo/wcs/list_of_forms.html
1
{% load combo %}
1 2
{% block cell-content %}
2 3
{% if forms %}
3 4
<ul>
......
5 6
  {% if data.url and data.title %}
6 7
  <li class="{{data.status_css_class}} {% if data.form_status_is_endpoint %}done{% endif %}"><a
7 8
      {% if data.readable %}href="{{ data.url }}"{% endif %}><span class="form-title">{{data.name}}</span>
9
    {% if data.draft %}
10
    <span class="form-number">{{data.datetime|strptime:"%Y-%m-%d %H:%M:%S"}}</span>
11
    {% else %}
8 12
    <span class="form-number">{{data.form_number}}
9 13
    {% if data.form_digest %}<span class="form-digest">({{data.form_digest}})</span>{% endif %}
10 14
    </span>
15
    {% endif %}
11 16
    <span class="form-status">{{data.status}}</span></a></li>
12 17
  {% endif %}
13 18
  {% endfor %}
tests/test_wcs.py
387 387
    # done forms
388 388
    cell.current_forms = False
389 389
    cell.done_forms = True
390
    cell.include_drafts = False
390 391
    cell.save()
391 392
    result = cell.render(context)
392 393
    assert not 'http://127.0.0.1:8999/form-title/1/' in result
......
422 423
    extra_context = cell.get_cell_extra_context(context)
423 424
    assert len(extra_context['forms']) == 0
424 425

  
426
    # check include drafts
427
    cell.include_drafts = False
428
    with mock.patch('combo.apps.wcs.models.requests.get') as requests_get:
429
        cell.get_cell_extra_context(context)
430
    assert requests_get.call_args_list[0][0][0] == '/api/user/forms?limit=100&sort=desc'
431

  
432
    cell.include_drafts = True
433
    with mock.patch('combo.apps.wcs.models.requests.get') as requests_get:
434
        cell.get_cell_extra_context(context)
435
    assert requests_get.call_args_list[0][0][0] == '/api/user/forms?limit=100&sort=desc&include-drafts=on'
436

  
437

  
425 438
@wcs_present
426 439
def test_current_forms_cell_render_single_site(context):
427 440
    page = Page(title='xxx', slug='test_current_forms_cell_render', template_name='standard')
428
-