def modify_journey(self, journey, user, journey_title, journey_content, ip='127.0.0.1', is_hide_user=None): try: # 防止xss漏洞 journey_title = utils.filter_script(journey_title) journey_content = utils.filter_script(journey_content) errcode, errmsg = self.validate_journey_element( journey_title, journey_content) if not errcode == 0: transaction.rollback(using=JOURNEY_DB) return errcode, errmsg journey.title = journey_title journey.content = journey_content journey.ip = ip if is_hide_user: journey.is_hide_user = True journey.save() # 更新summary self.get_journey_summary_by_id(journey, must_update_cache=True) transaction.commit(using=JOURNEY_DB) return 0, journey except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=JOURNEY_DB) return 99900, dict_err.get(99900)
def create_kit(self, user_id, kit_title, kit_content, ip='127.0.0.1', is_hide_user=None): try: # 防止xss漏洞 kit_title = utils.filter_script(kit_title) kit_content = utils.filter_script(kit_content) errcode, errmsg = self.validate_kit_element(kit_title, kit_content) if not errcode == 0: transaction.rollback(using=KIT_DB) return errcode, errmsg is_hide_user = True if is_hide_user else False kit = Kit.objects.create(user_id=user_id, title=kit_title, content=kit_content, last_answer_time=datetime.datetime.now(), ip=ip, is_hide_user=is_hide_user) # 更新用户话题数信息 # UserCountBase().update_user_count(user_id=user_id, code='user_kit_count') transaction.commit(using=KIT_DB) return 0, kit except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=KIT_DB) return 99900, dict_err.get(99900)
def modify_kit(self, kit, user, kit_title, kit_content, ip='127.0.0.1', is_hide_user=None): try: # 防止xss漏洞 kit_title = utils.filter_script(kit_title) kit_content = utils.filter_script(kit_content) errcode, errmsg = self.validate_kit_element(kit_title, kit_content) if not errcode == 0: transaction.rollback(using=KIT_DB) return errcode, errmsg kit.title = kit_title kit.content = kit_content kit.ip = ip if is_hide_user: kit.is_hide_user = True kit.save() # 更新summary self.get_kit_summary_by_id(kit, must_update_cache=True) transaction.commit(using=KIT_DB) return 0, kit except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=KIT_DB) return 99900, dict_err.get(99900)
def create_activity(self, user_id, title, content, start_date, end_date, sign_up_end_date, addr, assembly_point, activity_cover): try: content = utils.filter_script(content) if not all((user_id, title, content, start_date, end_date, sign_up_end_date, activity_cover, addr, assembly_point)): transaction.rollback(using=ACTIVITY_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_journey_element(title, content, min_title_len=5) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg # 检测时间是否正常 errcode, errmsg = self.check_date(start_date, end_date, sign_up_end_date) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg activity = Activity.objects.create(user_id=user_id, title=title, content=content, start_date=start_date, end_date=end_date, sign_up_end_date=sign_up_end_date, activity_cover=activity_cover, addr=addr, assembly_point=assembly_point) transaction.commit(using=ACTIVITY_DB) return 0, activity except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ACTIVITY_DB) return 99900, dict_err.get(99900)
def create_question(self, user_id, question_title, question_content, ip='127.0.0.1', is_hide_user=None, topic_ids=[]): try: # 防止xss漏洞 question_title = utils.filter_script(question_title) question_content = utils.filter_script(question_content) errcode, errmsg = self.validate_question_element( question_title, question_content) if not errcode == 0: transaction.rollback(using=QUESTION_DB) return errcode, errmsg is_hide_user = True if is_hide_user else False question = Question.objects.create( user_id=user_id, title=question_title, content=question_content, last_answer_time=datetime.datetime.now(), ip=ip, is_hide_user=is_hide_user, is_silence=self.get_question_is_silence_by_tags(topic_ids)) # 创建话题和topics关系 TopicBase().create_topic_question_relation(question, topic_ids) # 更新用户话题数信息 UserCountBase().update_user_count(user_id=user_id, code='user_question_count') # 发送feed if not is_hide_user and not question.is_silence: FeedBase().create_feed(user_id, feed_type=1, obj_id=question.id) transaction.commit(using=QUESTION_DB) return 0, question except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=QUESTION_DB) return 99900, dict_err.get(99900)
def create_answer(self, obj, obj_type, from_user_id, content, ip=None): try: obj_type = str(obj_type) content = utils.filter_script(content) if not all((obj, obj_type, from_user_id, content)): transaction.rollback(using=ANSWER_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_content(content) if not errcode == 0: transaction.rollback(using=ANSWER_DB) return errcode, errmsg to_user_id = obj.user_id answer = Answer.objects.create(from_user_id=from_user_id, to_user_id=to_user_id, content=content, obj_id=obj.id, obj_type=obj_type, ip=ip) from_user = UserBase().get_user_by_id(from_user_id) # 添加at信息 if content.find('@') != -1: at_usernicks = utils.select_at(content) for nick in at_usernicks: at_user = UserBase().get_user_by_nick(nick) if at_user: # 自己@自己的关系不进行存储 if at_user.id != from_user_id: AtAnswer.objects.create(answer=answer, user_id=at_user.id) if at_user.id != to_user_id: # 更新@未读消息数 UnreadCountBase().update_unread_count(at_user.id, code='at_answer') # 发送提醒邮件 context = dict(user=from_user, answer=answer) # async_send_email(at_user.email, u'%s 在且行户外回答中@了你' % (from_user.nick, ), utils.render_email_template('email/at.html', context), 'html') # 更新未读消息 if from_user_id != to_user_id: UnreadCountBase().update_unread_count(to_user_id, code='received_answer') # 发送提醒邮件 to_user = UserBase().get_user_by_id(to_user_id) context = dict(user=from_user, answer=answer) # async_send_email(to_user.email, u'%s 在且行户外回答了你的提问' % (from_user.nick, ), utils.render_email_template('email/answer.html', context), 'html') # 更新用户回答统计总数 UserCountBase().update_user_count(user_id=from_user_id, code='user_answer_count') # 更新回答数冗余信息 obj.answer_count += 1 obj.last_answer_time = datetime.datetime.now() obj.save() transaction.commit(using=ANSWER_DB) return 0, answer except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ANSWER_DB) return 99900, dict_err.get(99900)
def add_article(self, title, content, city_id, department_id=None, sort_num=0): if not (title and content and CityBase().get_city_by_id(city_id)): return 99800, dict_err.get(99800) content = utils.filter_script(content) article = Article.objects.create(title=title, content=content, city_id=city_id, department_id=department_id, sort_num=sort_num) return 0, article
def modify_question(self, question, user, question_title, question_content, ip='127.0.0.1', is_hide_user=None, topic_ids=[]): try: # 防止xss漏洞 question_title = utils.filter_script(question_title) question_content = utils.filter_script(question_content) errcode, errmsg = self.validate_question_element( question_title, question_content) if not errcode == 0: transaction.rollback(using=QUESTION_DB) return errcode, errmsg question.title = question_title question.content = question_content question.ip = ip if is_hide_user: question.is_hide_user = True question.is_silence = self.get_question_is_silence_by_tags( topic_ids) question.save() # 创建话题和topics关系 TopicBase().create_topic_question_relation(question, topic_ids) # 更新summary self.get_question_summary_by_id(question, must_update_cache=True) transaction.commit(using=QUESTION_DB) return 0, question except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=QUESTION_DB) return 99900, dict_err.get(99900)
def format_quesitons(self, questions, need_question_type=False, need_question_topics=False): for question in questions: question.user = question.get_user() question.content = utils.filter_script(question.content) if need_question_type: question.question_type = TopicBase( ).get_topic_level1_by_question(question) if need_question_topics: question.question_topics = TopicBase().get_topics_by_question( question) return questions
def modify_activity(self, activity, user, title, content, start_date, end_date, sign_up_end_date, addr, assembly_point, activity_cover=None): try: content = utils.filter_script(content) if not all((title, content, start_date, end_date, sign_up_end_date, addr, assembly_point)): transaction.rollback(using=ACTIVITY_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_journey_element( title, content, min_title_len=5) if not errcode == 0: return errcode, errmsg # 检测时间是否正常 errcode, errmsg = self.check_date(start_date, end_date, sign_up_end_date) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg activity.title = title activity.content = content activity.start_date = start_date activity.end_date = end_date activity.sign_up_end_date = sign_up_end_date if activity_cover: activity.activity_cover = activity_cover activity.addr = addr activity.assembly_point = assembly_point activity.save() # 更新summary self.get_activity_summary_by_id(activity, must_update_cache=True) transaction.commit(using=ACTIVITY_DB) return 0, activity except Exception, e: transaction.rollback(using=ACTIVITY_DB) debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_article(self, article_id, **kwargs): if not article_id: return 99800, dict_err.get(99800) article = self.get_article_by_id(article_id) if not article: return 50104, dict_err.get(50104) try: kwargs["content"] = utils.filter_script(kwargs["content"]) for k, v in kwargs.items(): setattr(article, k, v) article.save() except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def create_activity(self, user_id, title, content, start_date, end_date, sign_up_end_date, addr, assembly_point, activity_cover): try: content = utils.filter_script(content) if not all( (user_id, title, content, start_date, end_date, sign_up_end_date, activity_cover, addr, assembly_point)): transaction.rollback(using=ACTIVITY_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_journey_element( title, content, min_title_len=5) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg # 检测时间是否正常 errcode, errmsg = self.check_date(start_date, end_date, sign_up_end_date) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg activity = Activity.objects.create( user_id=user_id, title=title, content=content, start_date=start_date, end_date=end_date, sign_up_end_date=sign_up_end_date, activity_cover=activity_cover, addr=addr, assembly_point=assembly_point) transaction.commit(using=ACTIVITY_DB) return 0, activity except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ACTIVITY_DB) return 99900, dict_err.get(99900)
def modify_answer(self, answer, user, content): try: content = utils.filter_script(content) if not content: return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_content(content) if not errcode == 0: return errcode, errmsg answer.content = content answer.save() # 更新summary self.get_answer_summary_by_id(answer, must_update_cache=True) return 0, answer except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_answer(self, answer, user, content): try: content = utils.filter_script(content) if not content: return 99800, dict_err.get(99800) errcode, errmsg = QuestionBase().validate_content(content) if not errcode == 0: return errcode, errmsg answer.content = content answer.save() # 更新summary self.get_answer_summary_by_id(answer, must_update_cache=True) return 0, answer except Exception, e: debug.get_debug_detail(e) return 99900, dict_err.get(99900)
def modify_activity(self, activity, user, title, content, start_date, end_date, sign_up_end_date, addr, assembly_point, activity_cover=None): try: content = utils.filter_script(content) if not all((title, content, start_date, end_date, sign_up_end_date, addr, assembly_point)): transaction.rollback(using=ACTIVITY_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_journey_element(title, content, min_title_len=5) if not errcode == 0: return errcode, errmsg # 检测时间是否正常 errcode, errmsg = self.check_date(start_date, end_date, sign_up_end_date) if not errcode == 0: transaction.rollback(using=ACTIVITY_DB) return errcode, errmsg activity.title = title activity.content = content activity.start_date = start_date activity.end_date = end_date activity.sign_up_end_date = sign_up_end_date if activity_cover: activity.activity_cover = activity_cover activity.addr = addr activity.assembly_point = assembly_point activity.save() # 更新summary self.get_activity_summary_by_id(activity, must_update_cache=True) transaction.commit(using=ACTIVITY_DB) return 0, activity except Exception, e: transaction.rollback(using=ACTIVITY_DB) debug.get_debug_detail(e) return 99900, dict_err.get(99900)
return 10101, dict_err.get(10101) errcode, errmsg = self.check_gender(gender) if errcode != 0: return errcode, errmsg errcode, errmsg = self.check_birthday(birthday) if errcode != 0: return errcode, errmsg # user = self.get_user_by_id(user_id) user.nick = nick user.gender = int(gender) user.birthday = birthday if des: user.des = utils.filter_script(des)[:128] if state is not None: user_login = User.objects.get(id=user.id) user_login.state = state user_login.save() user.save() # 更新缓存 self.get_user_by_id(user.id, state=[0, 1, 2], must_update_cache=True) return 0, user def change_pwd(self, user, old_password, new_password_1, new_password_2): ''' @note: 密码修改
return 10101, dict_err.get(10101) errcode, errmsg = self.check_gender(gender) if errcode != 0: return errcode, errmsg errcode, errmsg = self.check_birthday(birthday) if errcode != 0: return errcode, errmsg user = self.get_user_by_id(user_id) user.nick = nick user.gender = int(gender) user.birthday = birthday if des: user.des = utils.filter_script(des)[:128] if state is not None: user_login = self.get_user_login_by_id(user.id) user_login.state = state user_login.save() user.save() # 更新缓存 self.get_user_by_id(user.id, must_update_cache=True) return 0, user def change_pwd(self, user, old_password, new_password_1, new_password_2): ''' @note: 密码修改
def format_kits(self, kits): for kit in kits: kit.user = kit.get_user() kit.content = utils.filter_script(kit.content) return kits
def create_answer(self, question, from_user_id, content, ip=None): try: content = utils.filter_script(content) if not all((question, from_user_id, content)): transaction.rollback(using=QUESTION_DB) return 99800, dict_err.get(99800) errcode, errmsg = QuestionBase().validate_content(content) if not errcode == 0: transaction.rollback(using=QUESTION_DB) return errcode, errmsg to_user_id = question.user_id answer = Answer.objects.create(from_user_id=from_user_id, to_user_id=to_user_id, content=content, question=question, ip=ip) from_user = UserBase().get_user_by_id(from_user_id) # 添加at信息 if content.find('@') != -1: at_usernicks = utils.select_at(content) for nick in at_usernicks: at_user = UserBase().get_user_by_nick(nick) if at_user: # 自己@自己的关系不进行存储 if at_user.id != from_user_id: AtAnswer.objects.create(answer=answer, user_id=at_user.id) if at_user.id != to_user_id: # 更新@未读消息数 UnreadCountBase().update_unread_count( at_user.id, code='at_answer') # 发送提醒邮件 context = dict(user=from_user, answer=answer) async_send_email( at_user.email, u'%s 在智选回答中@了你' % (from_user.nick, ), utils.render_email_template( 'email/at.html', context), 'html') # 更新未读消息 if from_user_id != to_user_id: UnreadCountBase().update_unread_count(to_user_id, code='received_answer') # 发送提醒邮件 to_user = UserBase().get_user_by_id(to_user_id) context = dict(user=from_user, answer=answer) async_send_email( to_user.email, u'%s 在智选回答了你的提问' % (from_user.nick, ), utils.render_email_template('email/answer.html', context), 'html') # 更新用户回答统计总数 UserCountBase().update_user_count(user_id=from_user_id, code='user_answer_count') # 更新回答数冗余信息 question.answer_count += 1 question.last_answer_time = datetime.datetime.now() question.save() # 发送feed if not question.is_silence: FeedBase().create_feed(from_user_id, feed_type=3, obj_id=answer.id) # 更新summary QuestionBase().get_question_summary_by_id(question, must_update_cache=True) transaction.commit(using=QUESTION_DB) return 0, answer except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=QUESTION_DB) return 99900, dict_err.get(99900)
def format_journeys(self, journeys): for journey in journeys: journey.user = journey.get_user() journey.content = utils.filter_script(journey.content) return journeys
def create_answer(self, obj, obj_type, from_user_id, content, ip=None): try: obj_type = str(obj_type) content = utils.filter_script(content) if not all((obj, obj_type, from_user_id, content)): transaction.rollback(using=ANSWER_DB) return 99800, dict_err.get(99800) errcode, errmsg = JourneyBase().validate_content(content) if not errcode == 0: transaction.rollback(using=ANSWER_DB) return errcode, errmsg to_user_id = obj.user_id answer = Answer.objects.create(from_user_id=from_user_id, to_user_id=to_user_id, content=content, obj_id=obj.id, obj_type=obj_type, ip=ip) from_user = UserBase().get_user_by_id(from_user_id) # 添加at信息 if content.find('@') != -1: at_usernicks = utils.select_at(content) for nick in at_usernicks: at_user = UserBase().get_user_by_nick(nick) if at_user: # 自己@自己的关系不进行存储 if at_user.id != from_user_id: AtAnswer.objects.create(answer=answer, user_id=at_user.id) if at_user.id != to_user_id: # 更新@未读消息数 UnreadCountBase().update_unread_count( at_user.id, code='at_answer') # 发送提醒邮件 context = dict(user=from_user, answer=answer) # async_send_email(at_user.email, u'%s 在且行户外回答中@了你' % (from_user.nick, ), utils.render_email_template('email/at.html', context), 'html') # 更新未读消息 if from_user_id != to_user_id: UnreadCountBase().update_unread_count(to_user_id, code='received_answer') # 发送提醒邮件 to_user = UserBase().get_user_by_id(to_user_id) context = dict(user=from_user, answer=answer) # async_send_email(to_user.email, u'%s 在且行户外回答了你的提问' % (from_user.nick, ), utils.render_email_template('email/answer.html', context), 'html') # 更新用户回答统计总数 UserCountBase().update_user_count(user_id=from_user_id, code='user_answer_count') # 更新回答数冗余信息 obj.answer_count += 1 obj.last_answer_time = datetime.datetime.now() obj.save() transaction.commit(using=ANSWER_DB) return 0, answer except Exception, e: debug.get_debug_detail(e) transaction.rollback(using=ANSWER_DB) return 99900, dict_err.get(99900)