diff --git a/reversion_compare/compare.py b/reversion_compare/compare.py index 20366e24..f0ceeef6 100644 --- a/reversion_compare/compare.py +++ b/reversion_compare/compare.py @@ -14,6 +14,7 @@ from django.contrib.contenttypes.models import ContentType from django.core.exceptions import ObjectDoesNotExist from django.db import models +from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext as _ @@ -23,6 +24,18 @@ logger = logging.getLogger(__name__) +@python_2_unicode_compatible +class FieldVersionDoesNotExist(object): + """ + Sentinel object to handle missing fields + """ + + def __str__(self): + return force_text(_("Field didn't exist!")) + +DOES_NOT_EXIST = FieldVersionDoesNotExist() + + class CompareObject(object): def __init__(self, field, field_name, obj, version, has_int_pk, adapter): self.field = field @@ -32,7 +45,7 @@ def __init__(self, field, field_name, obj, version, has_int_pk, adapter): self.has_int_pk = has_int_pk self.adapter = adapter # try and get a value, if none punt - self.value = version.field_dict.get(field_name, _("Field Didn't exist!")) + self.value = version.field_dict.get(field_name, DOES_NOT_EXIST) def _obj_repr(self, obj): # FIXME: How to create a better representation of the current value? @@ -122,6 +135,9 @@ def get_many_to_many(self): """ if self.field.get_internal_type() != "ManyToManyField": # FIXME! return ([], [], [], []) # TODO: refactory that + elif self.value is DOES_NOT_EXIST: + return ([], [], [], []) # TODO: refactory that + ids = None if self.has_int_pk: ids = [int(v) for v in self.value] # is: version.field_dict[field.name] diff --git a/reversion_compare/locale/el/LC_MESSAGES/django.po b/reversion_compare/locale/el/LC_MESSAGES/django.po index d48ec467..21b3dfed 100644 --- a/reversion_compare/locale/el/LC_MESSAGES/django.po +++ b/reversion_compare/locale/el/LC_MESSAGES/django.po @@ -24,7 +24,7 @@ msgid "Compare %(name)s" msgstr "Σύγκριση %(name)s" #: .\compare.py:34 -msgid "Field Didn't exist!" +msgid "Field didn't exist!" msgstr "Το πεδίο δεν υπήρχε" #: .\templates\reversion-compare\action_list_partial.html:9 diff --git a/reversion_compare/locale/nl/LC_MESSAGES/django.po b/reversion_compare/locale/nl/LC_MESSAGES/django.po index a9726f5c..a8eb9f2c 100644 --- a/reversion_compare/locale/nl/LC_MESSAGES/django.po +++ b/reversion_compare/locale/nl/LC_MESSAGES/django.po @@ -24,7 +24,7 @@ msgid "Compare %(name)s" msgstr "Vergelijk %(name)s" #: .\compare.py:34 -msgid "Field Didn't exist!" +msgid "Field didn't exist!" msgstr "Veld bestond niet!" #: .\templates\reversion-compare\action_list_partial.html:9