misc: ellipsize field labels used in snapshot descriptions (#52236)

This commit is contained in:
Frédéric Péters 2021-04-13 20:57:41 +02:00
parent b9d7aa9ee4
commit cb8dcdeaaf
3 changed files with 15 additions and 3 deletions

View File

@ -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)

View File

@ -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):

View File

@ -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']