|
@@ -1,3 +1,8 @@
|
|
|
|
+from __future__ import unicode_literals
|
|
|
|
+
|
|
|
|
+import copy
|
|
|
|
+import logging
|
|
|
|
+
|
|
from django.core.exceptions import ValidationError
|
|
from django.core.exceptions import ValidationError
|
|
from django.utils.module_loading import import_string
|
|
from django.utils.module_loading import import_string
|
|
from django.utils.translation import ugettext as _
|
|
from django.utils.translation import ugettext as _
|
|
@@ -8,6 +13,9 @@ from .basefields import *
|
|
from .serializers import serialize_profilefields_data
|
|
from .serializers import serialize_profilefields_data
|
|
|
|
|
|
|
|
|
|
|
|
+logger = logging.getLogger('misago.users.ProfileFields')
|
|
|
|
+
|
|
|
|
+
|
|
class ProfileFields(object):
|
|
class ProfileFields(object):
|
|
def __init__(self, fields_groups):
|
|
def __init__(self, fields_groups):
|
|
self.is_loaded = False
|
|
self.is_loaded = False
|
|
@@ -123,11 +131,22 @@ class ProfileFields(object):
|
|
return cleaned_data
|
|
return cleaned_data
|
|
|
|
|
|
def update_user_profile_fields(self, user, form):
|
|
def update_user_profile_fields(self, user, form):
|
|
- cleaned_profile_fields = {}
|
|
|
|
|
|
+ old_fields = copy.copy(user.profile_fields or {})
|
|
|
|
+
|
|
|
|
+ new_fields = {}
|
|
for fieldname in form._profile_fields:
|
|
for fieldname in form._profile_fields:
|
|
if fieldname in form.cleaned_data:
|
|
if fieldname in form.cleaned_data:
|
|
- cleaned_profile_fields[fieldname] = form.cleaned_data[fieldname]
|
|
|
|
- user.profile_fields = cleaned_profile_fields
|
|
|
|
|
|
+ new_fields[fieldname] = form.cleaned_data[fieldname]
|
|
|
|
+ user.profile_fields = new_fields
|
|
|
|
+
|
|
|
|
+ if old_fields != new_fields:
|
|
|
|
+ logger.info(
|
|
|
|
+ "Changed {}'s (ID: {}) profile fields".format(user.username, user.pk),
|
|
|
|
+ extra={
|
|
|
|
+ 'old_fields': old_fields,
|
|
|
|
+ 'new_fields': new_fields,
|
|
|
|
+ }
|
|
|
|
+ )
|
|
|
|
|
|
def search_users(self, criteria, queryset):
|
|
def search_users(self, criteria, queryset):
|
|
if not self.is_loaded:
|
|
if not self.is_loaded:
|