def save_reply(cls, user, snippet_id, comment_id, comment_text): """ Save user comments for the post in database """ from badges import Badge, UserBadge if Snippet.objects.filter(id=snippet_id).update(comments_count=F("comments_count") + 1) == 1: UserGraph.objects.filter(user=user).update(comments_count=F("comments_count") + 1) cls.objects.filter(id=comment_id).update(replies_count=F("replies_count") + 1) comment = cls.objects.create( snippet_id=snippet_id, reply_to_id=comment_id, user=user, comment_text=comment_text, updated_by=str(user), created_by=str(user), ) if ( not UserBadge.objects.filter(user=user, badge=Badge.get_commentator()).exists() and UserGraph.objects.filter(user=user, comments_count__gte=10).exists() ): # User earned a commentator badge UserBadge.award(user, Badge.get_commentator()) # Message.add_reply_msg(comment, user) return comment
def save_reply(cls, user, snippet_id, comment_id, comment_text): """ Save user comments for the post in database """ from badges import Badge, UserBadge if Snippet.objects.filter(id=snippet_id).update( comments_count=F('comments_count') + 1) == 1: UserGraph.objects.filter(user=user).update( comments_count=F('comments_count') + 1) cls.objects.filter(id=comment_id).update( replies_count=F('replies_count') + 1) comment = cls.objects.create(snippet_id=snippet_id, reply_to_id=comment_id, user=user, comment_text=comment_text, updated_by=str(user), created_by=str(user)) if not UserBadge.objects.filter(user=user, badge=Badge.get_commentator()).exists() \ and UserGraph.objects.filter(user=user, comments_count__gte=10).exists(): # User earned a commentator badge UserBadge.award(user, Badge.get_commentator()) #Message.add_reply_msg(comment, user) return comment
def sign_up(cls, username, email, password, gender, hometown=None, location=None, locale=None, has_fb_account=False, is_verified=False): """ Creates a new non-admin user in database """ from badges import Badge, UserBadge try: user = cls.objects.get(Q(username=username) | Q(email=email)) if user.username == username: raise HunkitError('Username "%s" already registered with us, if you forgotten your password? <a href="%s">Request new one</a> or choose a different username.' % (username, reverse('app_forgot_password'))) raise HunkitError('Its seems to be that you are already registered with this email address, if you forgotten your password? <a href="%s">Request new one.</a>' % reverse('app_forgot_password')) except cls.DoesNotExist: verification_code = None if not is_verified: verification_code = _random_digest() if hometown: hometown = Location.get_or_create(hometown, username) if location: location = Location.get_or_create(location, username) user = cls.objects.create_user(username=username, email=email, password=password, gender= gender, hometown=hometown, location=location, locale=locale, is_verified=is_verified, verification_code=verification_code, has_fb_account=has_fb_account, updated_by=username, created_by=username) UserGraph.objects.create(user=user, created_by=username) # Create subscriptions to default languages langs = [] for lang in Language.objects.filter(is_default=True): langs.append(lang.id) Subscription.objects.create(user=user,language=lang, created_by=username) if langs: LanguageGraph.objects.filter(language_id__in=langs).update(readers_count=F('readers_count') + 1) # Awarding Freshman badge UserBadge.award(user, Badge.get_freshman()) return user
def get_badges(self): """ Returns list of user's earned badges """ from badges import UserBadge return UserBadge.get_badges(self)