éditeur de gabarit pour le remplissage de pdf (#74797) #122
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/74797-connecteur-PDF-gabarit-de-xfdf-p"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
a1a91da76f
toc4cec7781c
c4cec7781c
toc347e73600
c347e73600
tof2deaa65c6
f2deaa65c6
to949e222e12
949e222e12
to6d104ff81d
6d104ff81d
to3e4972c496
3e4972c496
toa42958744b
a42958744b
to61b5a47432
ed55ad2fd0
to2af12aa100
Le build est bloqué sur le bug #73760 qui na pas de rapport.
WIP: éditeur de gabarit pour le remplissage de pdfto éditeur de gabarit pour le remplissage de pdffb8c625640
to37d82b5b25
Le build échoue aussi sur pylint,
Aussi, il ne faudra pas utiliser ce ticket pour faire passer des changements type pg_virtualenv.
0b5e5bb18c
to7c6a7f4b3d
Ce nétait pas l'idée mais je voulais me convaincre que je le problème ne venait pas du tout de l'isolation de la DB.
7c6a7f4b3d
to51975356dc
@ -0,0 +47,4 @@
return super().get_success_url() + '#'
class PageThumbnailView(ResourceView):
Cette partie n'est absolument pas couverte par les tests : https://jenkins.entrouvert.org/job/gitea/job/passerelle/job/wip%252F74797-connecteur-PDF-gabarit-de-xfdf-p/15/Coverage_20Report_20_28native_29/d_1f676f23cbeaa486_views_py.html
J'ai rajouté la couverture de ce code dans le test.
@ -0,0 +40,4 @@
widget_type: str = dataclasses.field(compare=False)
rect: Rect = dataclasses.field(compare=False)
on_value: str = dataclasses.field(compare=False, default=pdfrw.PdfName.On)
annotation: typing.Optional[pdfrw.PdfDict] = dataclasses.field(default=None, repr=False)
Je ne suis vraiment pas à l'aise avec cette ligne (et un peu celles d'avant); le gain (?) ne vaut pour moi certainement pas l'introduction de cette partie qui pourra plus difficilement être maintenue; je préférerais vraiment que ça devienne du Python plus commun.
Il y a déjà du code équivalent dans chrono et lingo donc non.
Vraiment 1/ je sais que j'ai déjà vu du code ainsi passer, 2/ j'ai vérifié dans chrono avant d'écrire mon commentaire et le code n'y a pas de ligne aussi incompréhensible.
Si tu peux me pointer les lignes de https://docs.python.org/3/library/dataclasses.html qu´on peut utiliser ou pas, ça m'aidera.
Tu peux éventuellement réagir en décidant de poser un commentaire explicatif, ou je ne sais quoi d'autre j'ai aucune idée du pourquoi/comment de cette ligne.
Mais perso s'il faut une règle je dirais bien que l'import du module typing serait mon niveau de blocage. (inutile aussi de me pointer le
from typing import List
dans lingo).Si le probl
(le message n'est pas passé)
J'ai viré le typing.Optional.
@ -0,0 +220,4 @@
if not flatten:
pdfrw.PdfWriter().write(file_object, self._pdf_reader)
else:
with io.BytesIO() as fd:
Cette partie (write avec flatten à True) n'est pas testée du tout. (je préfèrerais qu'on n'introduise pas trop de code inutilisé).
J'ai rajouté la couverture de ce code dans le test.
51975356dc
to4eae2dbe3e
4eae2dbe3e
to23794e1945
23794e1945
tof17a906142
éditeur de gabarit pour le remplissage de pdfto éditeur de gabarit pour le remplissage de pdf (#74797)f17a906142
tof3fae6b416
f3fae6b416
toe110b06ee7
e110b06ee7
to2510261dce
Il me restait un souci avec le pre-commit debian car wrap-and-sort trie différemment sur la machine jenkins et sur la mienne où devscripts était en version unstable.
@ -259,0 +298,4 @@
),
}
@endpoint(
Ça m'irait mieux de remplacer complétement fill-form.
Ca veut dire aussi que
@ -259,0 +330,4 @@
)
if not self.fill_form_file:
raise APIError('not PDF file configured', http_status=500)
Même si un code 5xx parait correct ici, ça m'ennuie de l'utiliser à cause de ce que ça signifie habituellement, à savoir "y'a un bogue dans passerelle".
Parce que non, c'est juste un bogue de config...
Je pense qu'on pourrait plutôt renvoyer une 4xx (genre 418, 406 voire 404) ou même juste laisser la 200 (parce qu'à l'usage ça va vite être vu).
(même si je sais qu'on ne devrait pas renvoyer une 4xx parce que c'est pas une erreur du client)
@ -3,1 +3,4 @@
{% block actions %}
{% if object|can_edit:request.user %}
<a href="{% url 'pdf-fields-mapping-edit' connector='pdf' slug=object.slug %}">{% trans 'Edit field mapping' %}</a>
Peut-être nommer le bouton "Fill Form: Edit field mapping" pour préciser que c'est un bouton lié au système de remplissage, on traduira par "Formulaire : configuration des champs"
@ -14,3 +20,2 @@
<div>
<p>{% blocktrans with file=object.fill_form_file %}PDFtk {{ file }} dump_data_fields_utf8 output{% endblocktrans %}</p>
<p>{{ object.pdftk_dump_data_fields_utf8|safe }}</p>
<p>{{ object.list_fields_mapping|safe }}</p>
Je pense qu'on peut supprimer cet onglet avec la disparition du fill-form actuel.
2510261dce
to3d00a1e24a
Deux pépins de i18n ratés en première lecture (déso).
@ -0,0 +41,4 @@
field_class = TemplateField
else:
continue
label = f'field {i + 1} ({help_text})'
Pépin de i18n ici, il faut qu'on ait au moins la traduction de _('field')
il faut que ça corresponde à ce qu'il y a dans la miniature du PDF annotée avec pillow donc non.
@ -0,0 +62,4 @@
</div>
{% endif %}
{% for page_number, image_map in pages %}
<h3>Page {{ page_number|add:1 }}</h3>
Autre petit manque sur l'i18n ici, il faudrait plutôt
<h3>{% blocktrans with number=page_number|add:1 %}Page {{number}}{% endblocktrans %}</h3>
ok c'est fait.
Oubli d'un petit i18n de plus...
@ -0,0 +63,4 @@
y = (area_rect.y1 + area_rect.y2) / 2 - 5
if field.widget_type == 'checkbox':
y -= 10
draw.text((x, y), f'field {i + 1}', anchor='lb', fill=(0, 0, 0, 255))
i18n ici encore, un
_('field')
qui manque (idéalement un_(''field %d)
mais à toi de voir)Avec la police non vectorielle par défaut de pillow je ne sais pas si on peut avoir de l'UTF-8 (je vois bien qu'on traduirait par "champ {i + 1}" mais je ne suis pas convaincu de l'utilité ici de traduire, ça reste un écran technique ou personne n'ira à part un admin fonctionnel.
3d00a1e24a
to393d7ae975
Dernier voeux : on a des boutons « Enregistrer » et « Annuler » tout en bas de la page de gestions des champs. C'est trop bas... Il faudrait idéalement les répéter tout en haut de la page.
(Et ou aussi avoir un truc anti-oubli qui lève un popup quand on veut quitter la page alors qu'on n'a pas validé le formulaire, ça existe dans redmine...)
393d7ae975
to7471956673
7471956673
to06b13b20db