Projet

Général

Profil

0001-ics-allow-description-rendering-in-custom-templates-.patch

Serghei Mihai (congés, retour 15/05), 04 octobre 2017 15:02

Télécharger (4,02 ko)

Voir les différences:

Subject: [PATCH] ics: allow description rendering in custom templates (#18406)

 tests/test_api.py                     | 6 +++++-
 wcs/backoffice/management.py          | 6 ++++++
 wcs/templates/wcs/ics/description.txt | 1 +
 3 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 wcs/templates/wcs/ics/description.txt
tests/test_api.py
1573 1573
    formdef.workflow_roles = {'_receiver': role.id}
1574 1574
    formdef.fields = [
1575 1575
        fields.StringField(id='0', label='foobar', varname='foobar'),
1576
        fields.StringField(id='1', label='text', varname='text')
1576 1577
        ]
1577 1578
    formdef.store()
1578 1579

  
......
1582 1583
    date = datetime.datetime(2014, 1, 20, 12, 00)
1583 1584
    for i in range(30):
1584 1585
        formdata = data_class()
1585
        formdata.data = {'0': (date + datetime.timedelta(days=i)).strftime('%Y-%m-%d %H:%M')}
1586
        formdata.data = {'0': (date + datetime.timedelta(days=i)).strftime('%Y-%m-%d %H:%M'),
1587
                         '1': 'valu\xc3\xa9 %s' % i}
1586 1588
        formdata.user_id = local_user.id
1587 1589
        formdata.just_created()
1588 1590
        if i%3 == 0:
......
1607 1609
    resp = get_app(pub).get(sign_uri('/api/forms/test/ics/foobar', user=local_user))
1608 1610
    assert resp.headers['content-type'] == 'text/calendar; charset=utf-8'
1609 1611
    assert resp.body.count('BEGIN:VEVENT') == 10
1612
    assert resp.body.count('DESCRIPTION') == 10
1610 1613

  
1611 1614
    # check with a filter
1612 1615
    resp = get_app(pub).get(sign_uri('/api/forms/test/ics/foobar?filter=done', user=local_user))
1613 1616
    assert resp.body.count('BEGIN:VEVENT') == 20
1617
    assert resp.body.count('DESCRIPTION') == 20
1614 1618

  
1615 1619
    # check 404 on erroneous field var
1616 1620
    resp = get_app(pub).get(sign_uri('/api/forms/test/ics/xxx', user=local_user), status=404)
wcs/backoffice/management.py
46 46
from qommon import errors
47 47
from qommon import ezt
48 48
from qommon import ods
49
from qommon import template
49 50
from qommon.form import *
50 51
from qommon.storage import (Equal, NotEqual, LessOrEqual, GreaterOrEqual, Or,
51 52
        Intersects, ILike, FtsMatch, Contains, Null)
......
59 60
from wcs.formdef import FormDef
60 61
from wcs.roles import logged_users_role
61 62

  
63
from django.template import RequestContext
64

  
62 65
from .submission import FormFillPage
63 66

  
64 67
def geojson_formdatas(formdatas, geoloc_key='base', fields=None):
......
1616 1619
        fields = self.get_fields_from_query()
1617 1620
        criterias = self.get_criterias_from_query()
1618 1621
        query = get_request().form.get('q')
1622
        template_names = ('wcs/ics/description/%s.txt' % formdef.url_name, 'wcs/ics/description.txt')
1619 1623

  
1620 1624
        class IcsDirectory(Directory):
1621 1625
            # ics/<component> with <component> being the identifier (varname)
......
1647 1651
                    vevent.add('dtstart').value = make_datetime(formdata.data[datefield_field_id])
1648 1652
                    vevent.dtstart.value_param = 'DATE'
1649 1653
                    vevent.add('url').value = formdata.get_url(backoffice=True)
1654
                    context = RequestContext(get_request().django_request, {'form': formdata.get_as_dict()})
1655
                    vevent.add('description').value = unicode(template.render(template_names, context))
1650 1656
                    cal.add(vevent)
1651 1657

  
1652 1658
                get_response().set_content_type('text/calendar')
wcs/templates/wcs/ics/description.txt
1

  
0
-