Projet

Général

Profil

0001-backoffice-show-attachments-varnames-in-inspect-view.patch

Thomas Noël, 10 mai 2019 16:02

Télécharger (3,83 ko)

Voir les différences:

Subject: [PATCH] backoffice: show attachments varnames in inspect view
 (#16507)

 wcs/backoffice/management.py | 21 ++++++++++++++++-----
 wcs/workflows.py             | 14 ++++++++++++++
 2 files changed, 30 insertions(+), 5 deletions(-)
wcs/backoffice/management.py
2395 2395
                    v = repr(v)
2396 2396
            return v
2397 2397

  
2398
        def htmltext_label_and_value(label, value):
2399
            r = htmltext('<li><code title="%s">%s</code>') % (label, label)
2400
            r += htmltext('  <div class="value"><span>%s</span>') % ellipsize(safe(value), 10000)
2401
            if not isinstance(value, basestring):
2402
                r += htmltext(' <span class="type">(%r)</span>') % type(value)
2403
            r += htmltext('</div></li>')
2404
            return r
2405

  
2398 2406
        backward_compatibility_varnames = re.compile('^(attachments|form_field_.*|'
2399 2407
                                                 'form_f[0-9]+|form_fbo[0-9]+|form_user_f[0-9]+|'
2400 2408
                                                 'form_f[a-f0-9]{8}-.*|'
......
2402 2410
                                                 'form_user_f[a-f0-9]{8}-.*|'
2403 2411
                                                 'form_user_field_.*|form_user_f_.*)$')
2404 2412
        for k, v in sorted(substvars.items()):
2413
            if k == 'form_attachments' and v:
2414
                for name in sorted(dir(v)):
2415
                    label = safe('form_attachments.%s' % name)
2416
                    value = getattr(v, name, None)
2417
                    r += htmltext_label_and_value(label, value)
2418
                continue
2419

  
2405 2420
            if backward_compatibility_varnames.search(k):
2406 2421
                continue
2407 2422

  
2408 2423
            k = safe(k)
2409
            r += htmltext('<li><code title="%s">%s</code>') % (k, k)
2410
            r += htmltext('  <div class="value"><span>%s</span>') % ellipsize(safe(v), 10000)
2411
            if not isinstance(v, basestring):
2412
                r += htmltext(' <span class="type">(%r)</span>') % type(v)
2413
            r += htmltext('</div></li>')
2424
            r += htmltext_label_and_value(k, v)
2414 2425
        r += htmltext('</div>')
2415 2426

  
2416 2427
        # assigned functions
wcs/workflows.py
98 98
        self.formdata = formdata
99 99
        self.attachment_evolution_part = attachment_evolution_part
100 100

  
101
    def __repr__(self):
102
        return '<%s %s (%s)>' % (self.__class__.__name__, self.filename, self.content_type)
103

  
101 104
    @property
102 105
    def filename(self):
103 106
        return self.attachment_evolution_part.orig_filename
......
147 150
        attachment = self.get_attachments()[i]
148 151
        return AttachmentSubstitutionProxy(self.formdata, attachment)
149 152

  
153
    def __repr__(self):
154
        return repr(self[0])
155

  
150 156

  
151 157
class AttachmentsSubstitutionProxy(object):
152 158
    def __init__(self, formdata):
......
159 165
                    return NamedAttachmentsSubstitutionProxy(self.formdata, name)
160 166
        raise AttributeError(name)
161 167

  
168
    def __dir__(self):
169
        varnames = set()
170
        for evo in self.formdata.evolution or []:
171
            for part in evo.parts or []:
172
                if getattr(part, 'varname', None):
173
                    varnames.add(part.varname)
174
        return list(varnames)
175

  
162 176

  
163 177
class AttachmentEvolutionPart: #pylint: disable=C1001
164 178
    orig_filename = None
165
-