]> git.openstreetmap.org Git - osqa.git/commitdiff
Should allow us to bypass the problem in some database imported from SX whit the...
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 22 Dec 2011 18:28:37 +0000 (18:28 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 22 Dec 2011 18:28:37 +0000 (18:28 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1217 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/models/user.py

index e8871f4187b662532ed489121f6b3bcdc213ebc6..7f15d21dc38db441befcb9c6a5c554eaddd06cd5 100644 (file)
@@ -4,7 +4,7 @@ from django.conf import settings as django_settings
 from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
 from django.contrib.contenttypes.models import ContentType
 from django.contrib.auth.models import User as DjangoUser, AnonymousUser as DjangoAnonymousUser
 from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
 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 django.db.models import Q, Manager
 
 from django.utils.encoding import smart_unicode
 
 
 from django.utils.encoding import smart_unicode
 
@@ -110,6 +110,20 @@ def false_if_validation_required_to(item):
         return decorated
     return decorator
 
         return decorated
     return decorator
 
+class UserManager(CachedManager):
+    def get(self, *args, **kwargs):
+        if not len(args) and len(kwargs) == 1 and 'username' in kwargs:
+            matching_users = self.filter(username=kwargs['username'])
+            
+            if len(matching_users) == 1:
+                return matching_users[0]
+            else:
+                for user in matching_users:
+                    if user.username == kwargs['username']:
+                        return user
+                return matching_users[0]
+        return super(UserManager, self).get(*args, **kwargs)
+
 class User(BaseModel, DjangoUser):
     is_approved = models.BooleanField(default=False)
     email_isvalid = models.BooleanField(default=False)
 class User(BaseModel, DjangoUser):
     is_approved = models.BooleanField(default=False)
     email_isvalid = models.BooleanField(default=False)
@@ -131,6 +145,8 @@ class User(BaseModel, DjangoUser):
     vote_up_count = DenormalizedField("actions", canceled=False, action_type="voteup")
     vote_down_count = DenormalizedField("actions", canceled=False, action_type="votedown")
 
     vote_up_count = DenormalizedField("actions", canceled=False, action_type="voteup")
     vote_down_count = DenormalizedField("actions", canceled=False, action_type="votedown")
 
+    objects = UserManager()
+
     def __unicode__(self):
         return smart_unicode(self.username)
 
     def __unicode__(self):
         return smart_unicode(self.username)