From cb8dcdeaafe6875100c8ca52ce4d02f5250636c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 13 Apr 2021 20:57:41 +0200 Subject: [PATCH] misc: ellipsize field labels used in snapshot descriptions (#52236) --- tests/test_snapshots.py | 8 ++++++++ wcs/admin/fields.py | 6 +++--- wcs/fields.py | 4 ++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/test_snapshots.py b/tests/test_snapshots.py index c9ce7c2ff..b6ee4cad6 100644 --- a/tests/test_snapshots.py +++ b/tests/test_snapshots.py @@ -176,6 +176,14 @@ def test_form_snapshot_comments(pub): resp = resp.forms[0].submit().follow() assert pub.snapshot_class.select(order_by='-timestamp')[0].comment == 'New field "foobar"' + resp.forms[0]['label'] = 'foo' * 30 + resp.forms[0]['type'] = 'string' + resp = resp.forms[0].submit().follow() + assert ( + pub.snapshot_class.select(order_by='-timestamp')[0].comment + == 'New field "foofoofoofoofoofoofoofoofoo(…)"' + ) + def test_form_snapshot_history(pub, formdef_with_history): create_superuser(pub) diff --git a/wcs/admin/fields.py b/wcs/admin/fields.py index d448e5c44..ac0b414fc 100644 --- a/wcs/admin/fields.py +++ b/wcs/admin/fields.py @@ -113,7 +113,7 @@ class FieldDefPage(Directory): if not widget: continue setattr(self.field, f.replace('-', '_'), widget.parse()) - self.objectdef.store(comment=_('Modification of field "%s"') % self.field.unhtmled_label) + self.objectdef.store(comment=_('Modification of field "%s"') % self.field.ellipsized_label) def get_deletion_extra_warning(self): return _('Warning: this field data will be permanently deleted.') @@ -174,7 +174,7 @@ class FieldDefPage(Directory): del self.objectdef.fields[index] # delete current field del self.objectdef.fields[current_field_index] - self.objectdef.store(comment=_('Deletion of field "%s"') % self.field.unhtmled_label) + self.objectdef.store(comment=_('Deletion of field "%s"') % self.field.ellipsized_label) # redirect to the field that was above this one if self.objectdef.fields: if current_field_index == 0: @@ -553,7 +553,7 @@ class FieldsDirectory(Directory): label=label, type=field_type, id=self.objectdef.get_new_field_id() ) self.objectdef.fields.insert(insertion_point, field) - self.objectdef.store(comment=_('New field "%s"') % field.unhtmled_label) + self.objectdef.store(comment=_('New field "%s"') % field.ellipsized_label) elif form.get_widget('form') and form.get_widget('form').parse(): formdef = FormDef.get(form.get_widget('form').parse()) for j, field in enumerate(formdef.fields): diff --git a/wcs/fields.py b/wcs/fields.py index dbe7e72f0..03e9db0b4 100644 --- a/wcs/fields.py +++ b/wcs/fields.py @@ -286,6 +286,10 @@ class Field: def unhtmled_label(self): return force_str(html.unescape(force_text(re.sub('<.*?>', ' ', self.label or ''))).strip()) + @property + def ellipsized_label(self): + return ellipsize(self.unhtmled_label) + def get_admin_attributes(self): return ['label', 'type', 'condition']