]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/user.py
SPLUNK-196, making filtration to the summary and headline properties of the Node...
[osqa.git] / forum / models / user.py
index d3b2c6f0042cf70206929b25cd2597cad20a787a..e7365388eb2efce62bfba607f9b8be18f06839e5 100644 (file)
@@ -5,6 +5,8 @@ from django.contrib.contenttypes.models import ContentType
 from django.contrib.auth.models import User as DjangoUser, AnonymousUser as DjangoAnonymousUser
 from django.db.models import Q
 
+from forum.settings import TRUNCATE_LONG_USERNAMES, TRUNCATE_USERNAMES_LONGER_THAN
+
 import string
 from random import Random
 
@@ -146,12 +148,17 @@ class User(BaseModel, DjangoUser):
 
     @property
     def decorated_name(self):
+        username = self.username
+
+        if len(username) > TRUNCATE_USERNAMES_LONGER_THAN and TRUNCATE_LONG_USERNAMES:
+            username = '%s...' % username[:TRUNCATE_USERNAMES_LONGER_THAN-3]
+
         if settings.SHOW_STATUS_DIAMONDS:
             if self.is_superuser:
-                return u"%s \u2666\u2666" % self.username
+                return u"%s \u2666\u2666" % username
 
             if self.is_staff:
-                return u"%s \u2666" % self.username
+                return u"%s \u2666" % username
 
         return self.username
 
@@ -282,9 +289,9 @@ class User(BaseModel, DjangoUser):
     def can_delete_comment(self, comment):
         return self == comment.author or self.reputation >= int(settings.REP_TO_DELETE_COMMENTS)
 
-    @true_if_is_super_or_staff
     def can_convert_comment_to_answer(self, comment):
-        return self == comment.author or self.reputation >= int(settings.REP_TO_CONVERT_COMMENTS_TO_ANSWERS)
+        return (comment.parent.node_type in ('question', 'answer')) and (self.is_superuser or self.is_staff or (
+            self == comment.author) or (self.reputation >= int(settings.REP_TO_CONVERT_COMMENTS_TO_ANSWERS)))
 
     def can_convert_to_comment(self, answer):
         return (not answer.marked) and (self.is_superuser or self.is_staff or answer.author == self or self.reputation >= int