diff --git a/ihatemoney/history.py b/ihatemoney/history.py index 9dda3de6..4c958a27 100644 --- a/ihatemoney/history.py +++ b/ihatemoney/history.py @@ -69,11 +69,10 @@ def get_history(project, human_readable_names=True): history = [] for version_list in [person_query.all(), project_query.all(), bill_query.all()]: for version in version_list: - object_type = { - "Person": _("Participant"), - "Bill": _("Bill"), - "Project": _("Project"), - }[parent_class(type(version)).__name__] + object_type = parent_class(type(version)).__name__ + + # The history.html template can only handle objects of these types + assert object_type in ["Person", "Bill", "Project"] # Use the old name if applicable if version.previous: diff --git a/ihatemoney/templates/history.html b/ihatemoney/templates/history.html index 14247bb5..0f0c1f08 100644 --- a/ihatemoney/templates/history.html +++ b/ihatemoney/templates/history.html @@ -31,12 +31,11 @@ {% macro em_surround(text) %}{{ text }}{% endmacro %} -{% macro simple_property_change(event, localized_property_name, from=True) %} +{% macro bill_property_change(event, localized_property_name, from=True) %} {% if from %} {{ - _("{object_type} {object_description}: {property_name} changed from {value_before} to {value_after}").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc), + _("Bill {bill_description}: {property_name} changed from {value_before} to {value_after}").format( + bill_description=em_surround(event.object_desc), property_name=localized_property_name, value_before=em_surround(event.val_before), value_after=em_surround(event.val_after) @@ -44,9 +43,8 @@ }} {% else %} {{ - _("{object_type} {object_description}: {property_name} changed to {value_after}").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc), + _("Bill {bill_description}: {property_name} changed to {value_after}").format( + bill_description=em_surround(event.object_desc), property_name=localized_property_name, value_after=em_surround(event.val_after) ) @@ -101,17 +99,15 @@ {% macro owers_changed(event, add) %} {% if add %} {{ - _("{object_type} {object_description}: added {owers_list_str} to owers list").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc), + _("Bill {bill_description}: added {owers_list_str} to owers list").format( + bill_description=em_surround(event.object_desc), owers_list_str=event.val_after|localize_list|safe ) }} {% else %} {{ - _("{object_type} {object_description}: removed {owers_list_str} from owers list").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc), + _("Bill {bill_description}: removed {owers_list_str} from owers list").format( + bill_description=em_surround(event.object_desc), owers_list_str=event.val_after|localize_list|safe ) }} @@ -213,13 +209,24 @@
{% if event.operation_type == OperationType.INSERT %} - {{ _("{object_type} {object_description} added").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc) - ) - }} + {% if event.object_type == "Project" %} + {{ _("Project {project_name} added").format( + project_name=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Bill" %} + {{ _("Bill {bill_description} added").format( + bill_description=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Person" %} + {{ _("Participant {participant_name} added").format( + participant_name=em_surround(event.object_desc) + ) + }} + {% endif %} {% elif event.operation_type == OperationType.UPDATE %} - {% if event.object_type == _("Project") %} + {% if event.object_type == "Project" %} {% if event.prop_changed == "password" %} {{ _("Project private code changed") }} {% elif event.prop_changed == "logging_preference" %} @@ -239,31 +246,38 @@ {% endif %} {% elif event.prop_changed == "activated" %} {% if event.val_after == False %} - {{ _("{object_type} {object_description} deactivated").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc) + {{ _("Participant {participant_name} deactivated").format( + participant_name=em_surround(event.object_desc) ) }} {% else %} - {{ _("{object_type} {object_description} reactivated").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc) + {{ _("Participant {participant_name} reactivated").format( + participant_name=em_surround(event.object_desc) ) }} {% endif %} - {% elif event.prop_changed == "name" or event.prop_changed == "what" %} - {{ _("{object_type} {object_description} renamed to {new_name}").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc), + {% elif event.prop_changed == "name" %} + {{ _("Participant {participant_name} renamed to {new_name}").format( + participant_name=em_surround(event.object_desc), new_name=em_surround(event.val_after) ) }} + {% elif event.prop_changed == "what" %} + {{ _("Bill {old_description} renamed to {new_description}").format( + old_description=em_surround(event.object_desc), + new_description=em_surround(event.val_after) + ) + }} {% elif event.prop_changed == "weight" %} - {{ simple_property_change(event, _("weight")) }} + {{ _("Participant {participant_name}: weight changed from {old_weight} to {new_weight}").format( + participant_name=em_surround(event.object_desc), + old_weight=em_surround(event.val_before), + new_weight=em_surround(event.val_after) + ) + }} {% elif event.prop_changed == "external_link" %} - {{ _("{object_type} {object_description}: external link changed to {new_link}").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc), + {{ _("Bill {bill_description}: external link changed to {new_link}").format( + bill_description=em_surround(event.object_desc), new_link='{0}'.format(event.val_after|escape)|safe ) }} @@ -272,31 +286,64 @@ {% elif event.prop_changed == "owers_removed" %} {{ owers_changed(event, False)}} {% elif event.prop_changed == "payer" %} - {{ simple_property_change(event, _("payer"))}} + {{ bill_property_change(event, _("payer"))}} {% elif event.prop_changed == "amount" %} - {{ simple_property_change(event, _("amount")) }} + {{ bill_property_change(event, _("amount")) }} {% elif event.prop_changed == "date" %} - {{ simple_property_change(event, _("date")) }} + {{ bill_property_change(event, _("date")) }} {% else %} - {{ _("{object_type} {object_description} modified").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc) + {% if event.object_type == "Project" %} + {{ _("Project {project_name} modified").format( + project_name=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Bill" %} + {{ _("Bill {bill_description} modfied").format( + bill_description=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Person" %} + {{ _("Participant {particpant_name} modified").format( + particpant_name=em_surround(event.object_desc) + ) + }} + {% endif %} + {% endif %} + {% elif event.operation_type == OperationType.DELETE %} + {% if event.object_type == "Project" %} + {{ _("Project {project_name} removed").format( + project_name=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Bill" %} + {{ _("Bill {bill_description} removed").format( + bill_description=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Person" %} + {{ _("Participant {participant_name} removed").format( + participant_name=em_surround(event.object_desc) ) }} {% endif %} - {% elif event.operation_type == OperationType.DELETE %} - {{ _("{object_type} {object_description} removed").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc) - ) - }} {% else %} - {# Should be unreachable #} - {{ _("{object_type} {object_description} changed in an unknown way").format( - object_type=event.object_type, - object_description=em_surround(event.object_desc) - ) - }} + {# Should be unreachable #} + {% if event.object_type == "Project" %} + {{ _("Project {project_name} changed in an unknown way").format( + project_name=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Bill" %} + {{ _("Bill {bill_description} changed in an unknown way").format( + bill_description=em_surround(event.object_desc) + ) + }} + {% elif event.object_type == "Person" %} + {{ _("Participant {participant_name} changed in an unknown way").format( + participant_name=em_surround(event.object_desc) + ) + }} + {% endif %} {% endif %}