X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fmodels%2Fuser.py;h=8bbc79770060f063da2781359f3488cd4a77929f;hb=refs%2Fheads%2Fsite-controller;hp=4f723b749c13851d79e2edd14e727052f4e0889e;hpb=2324878e481a9bdae70be7a2ff02732864c9d0ba;p=plstackapi.git diff --git a/planetstack/core/models/user.py b/planetstack/core/models/user.py index 4f723b7..8bbc797 100644 --- a/planetstack/core/models/user.py +++ b/planetstack/core/models/user.py @@ -2,6 +2,7 @@ import os import datetime import sys from collections import defaultdict +from django.forms.models import model_to_dict from django.db import models from django.db.models import F, Q from core.models import PlCoreBase,Site, DashboardView, DiffModelMixIn @@ -81,7 +82,36 @@ class DeletedUserManager(UserManager): def get_query_set(self): return self.get_queryset() -class User(AbstractBaseUser, DiffModelMixIn): +class User(AbstractBaseUser): # , DiffModelMixIn): + + # ---- copy stuff from DiffModelMixin ---- + + @property + def _dict(self): + return model_to_dict(self, fields=[field.name for field in + self._meta.fields]) + + @property + def diff(self): + d1 = self._initial + d2 = self._dict + diffs = [(k, (v, d2[k])) for k, v in d1.items() if v != d2[k]] + return dict(diffs) + + @property + def has_changed(self): + return bool(self.diff) + + @property + def changed_fields(self): + return self.diff.keys() + + def has_field_changed(self, field_name): + return field_name in self.diff.keys() + + def get_field_diff(self, field_name): + return self.diff.get(field_name, None) + # ---- end copy stuff from DiffModelMixin ---- class Meta: app_label = "core"