tal: условие для полей вложения файлов

Я использую этот код для простой ссылки на скачивание (и появляется только в том случае, если поле "вложение" имеет значение - вложение) - (работает нормально):

<metal:field use-macro="python:here.widget('attachment', mode='view')" />

Я также хотел бы предоставить метод прямого просмотра файла напрямую без загрузки. В настоящее время я использую этот фрагмент кода (работает нормально):

<a tal:attributes="href string:${context/absolute_url}/attachment">View Attached File</a>

Я хочу добавить условие, если поле "вложение" действительно имеет вложение, а затем отобразить ссылку "просмотр". Тем не менее, я не могу получить tap: условие работает. При тестировании этого я попробовал эти фрагменты кода:

<span tal:condition="here/attachment">ATTACHMENT</span>

<span tal:condition="context/attachment">ATTACHMENT</span>

<span tal:condition="template/attachment">ATTACHMENT</span>

<span tal:condition="exists:template/attachment">ATTACHMENT</span>

<span tal:condition="string:${context/absolute_url}/attachment">ATTACHMENT</span> 

<span tal:condition="python:here.widget('attachment', mode='view')">ATTACHMENT</span> 

<span tal:condition="exists:python:here.widget('attachment', mode='view')">ATTACHMENT</span> 

<span tal:define="file_exists2 exists:string:${context/absolute_url}/attachment" tal:condition="python:file_exists2">ATTACHMENT</span>

(выше отображается независимо от того, было ли вложение или нет)

Есть ли простое решение, которое позволит tal:condition точно распознавать, имеет ли поле файла значение и НЕ отображать, когда вложение отсутствует, и отображать, когда оно есть?

1 ответ

Решение

Вы можете проверить размер вложения:

Если это архетип (вызовите getSize для поля AT, это также общедоступно):

<span tal:condition="context/attachment/getSize">ATTACHMENT</span>

AFAIK на DX это по-другому, так как это NamedBlobFile:

<span tal:condition="context/attachment/get_size">ATTACHMENT</span>
Другие вопросы по тегам