def create_invite(self, from_user_id, to_user_id, question_id): try: from www.question.interface import QuestionBase ub = UserBase() try: from_user = ub.get_user_by_id(from_user_id) to_user = ub.get_user_by_id(to_user_id) question = QuestionBase().get_question_by_id(question_id) assert from_user and to_user and question except: transaction.rollback(using=DEFAULT_DB) return 99800, dict_err.get(99800) if from_user_id == to_user_id: transaction.rollback(using=DEFAULT_DB) return 40100, dict_err.get(40100) # 同一个问题最多邀请6个人 if InviteAnswerIndex.objects.filter(from_user_id=from_user_id, question_id=question_id).count() >= 6: transaction.rollback(using=DEFAULT_DB) return 40101, dict_err.get(40101) # 重复邀请给出提示 if InviteAnswerIndex.objects.filter(from_user_id=from_user_id, to_user_id=to_user_id, question_id=question_id): transaction.rollback(using=DEFAULT_DB) return 40102, dict_err.get(40102) try: ia = InviteAnswer.objects.create(from_user_ids=json.dumps([from_user_id, ]), to_user_id=to_user_id, question_id=question_id) need_update_unread_count = True except: ia = InviteAnswer.objects.get(to_user_id=to_user_id, question_id=question_id) from_user_ids = json.loads(ia.from_user_ids) if from_user_id not in from_user_ids: from_user_ids.append(from_user_id) ia.from_user_ids = json.dumps(from_user_ids) ia.save() need_update_unread_count = True if ia.is_read else False # 建立索引 InviteAnswerIndex.objects.create(from_user_id=from_user_id, to_user_id=to_user_id, question_id=question_id) # 更新未读消息,新邀请或者邀请已读才更新未读数 if need_update_unread_count: UnreadCountBase().update_unread_count(to_user_id, code='invite_answer') # 发送提醒邮件 context = dict(user=from_user, question=question) async_send_email(to_user.email, u'%s 在智选邀请你回答问题' % (from_user.nick, ), utils.render_email_template('email/invite.html', context), 'html') transaction.commit(using=DEFAULT_DB) return 0, dict_err.get(0) except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=DEFAULT_DB) return 99900, dict_err.get(99900)
def authenticate(self, username=None, password=None): ub = UserBase() user = ub.get_user_by_email(username) if not user: user = ub.get_user_by_mobilenumber(username) if user and ub.check_password(password, user.password): # 更新最后登录时间 user_login = user.user_login user_login.last_login = datetime.datetime.now() user_login.save() user.save = _save # 更新缓存 ub.get_user_by_id(user.id, must_update_cache=True) return user
def format_user_received_invites(self, user_received_invites): from www.question.interface import QuestionBase ub = UserBase() for uri in user_received_invites: uri.question = QuestionBase().get_question_summary_by_id(uri.question_id) uri.from_users = [ub.get_user_by_id(user_id) for user_id in json.loads(uri.from_user_ids)] uri.from_users.reverse() return user_received_invites