Browse Source

added readonly fields that show IP address

Rafał Pitoń 8 years ago
parent
commit
01c2e2f34b

+ 7 - 0
misago/project_template/project_name/settings.py

@@ -358,4 +358,11 @@ MISAGO_PROFILE_FIELDS = [
             'misago.users.profilefields.default.WebsiteField',
             'misago.users.profilefields.default.WebsiteField',
         ],
         ],
     },
     },
+    {
+        'name': _("IP address"),
+        'fields': [
+            'misago.users.profilefields.default.JoinIpField',
+            'misago.users.profilefields.default.LastIpField',
+        ],
+    },
 ]
 ]

+ 1 - 1
misago/users/profilefields/basefields.py

@@ -62,7 +62,7 @@ class ProfileField(object):
 
 
     def get_display_data(self, request, user):
     def get_display_data(self, request, user):
         value = user.profile_fields.get(self.fieldname, '')
         value = user.profile_fields.get(self.fieldname, '')
-        if not len(value):
+        if not self.readonly and not len(value):
             return None
             return None
 
 
         data = self.get_value_display_data(request, user, value)
         data = self.get_value_display_data(request, user, value)

+ 28 - 0
misago/users/profilefields/default.py

@@ -61,3 +61,31 @@ class TwitterHandleField(basefields.TextProfileField):
         if data and not re.search('^[A-Za-z0-9_]+$', data):
         if data and not re.search('^[A-Za-z0-9_]+$', data):
             raise ValidationError(ugettext("This is not a valid twitter handle."))
             raise ValidationError(ugettext("This is not a valid twitter handle."))
         return data
         return data
+
+
+class JoinIpField(basefields.TextProfileField):
+    fieldname = 'join_ip'
+    label = _("Join IP")
+    readonly = True
+
+    def get_value_display_data(self, request, user, value):
+        if not request.user.acl_cache.get('can_see_users_ips'):
+            return None
+
+        return {
+            'text': user.joined_from_ip
+        }
+
+
+class LastIpField(basefields.TextProfileField):
+    fieldname = 'last_ip'
+    label = _("Last IP")
+    readonly = True
+
+    def get_value_display_data(self, request, user, value):
+        if not request.user.acl_cache.get('can_see_users_ips'):
+            return None
+
+        return {
+            'text': user.last_ip
+        }