def delete_topic_parent_action(user_id, topic_id, parent_id): """return 0(int) if succeeded, otherwise return error message""" topic_parent = Topic_Parent.objects.filter(topic__id=topic_id, parent__id=parent_id) topic_parent.delete() refs = Topic_Revision.objects.filter(topic__id=topic_id, parent__id=parent_id, operation='ap').order_by('-pk') if refs: reference = refs[0] if reference.user_id != user_id: notification = Notification(operation='dp') notification.user_id = reference.user_id notification.related_user_id = user_id notification.topic_id = topic_id notification.incr_count_in_profile() notification.save() update_user_topic_fame(topic_id, user_id, reference.user_id) else: reference = None update_user_topic_fame(topic_id, user_id) topic_revision = Topic_Revision(operation='dp', reference=reference) topic_revision.topic_id = topic_id topic_revision.parent_id = parent_id topic_revision.user_id = user_id topic_revision.save() return 0
def add_topic_parent_action(user_id, topic_id, parent_id=0, parent_name=''): """ Return parent_id(long) if succeed, otherwise return error message @attention: Haoliang modified the return value """ #if paernt_id is passed, we use it directly later on; Otherwise we need to add topic and get parent_id if not parent_id and not parent_name: return '上级话题不能为空' if parent_name: parent_set = Topic.objects.filter(name=parent_name) if parent_set and not parent_set[0].deleted: parent_id = parent_set[0].pk else: return_value = add_topic_action(user_id, topic_name=parent_name) if return_value['error_message']: return return_value['error_message'] else: parent_id = int(return_value['topic_id']) if topic_id == parent_id: return '不能将自身话题作为上级话题' topic_childs = Topic_Parent.objects.filter(parent__id=topic_id) for tc in topic_childs: if parent_id == tc.topic_id: return '不能将此话题下层话题作为上层话题' topic_parent = Topic_Parent.objects.filter(topic__id=topic_id, parent__id=parent_id) if topic_parent: return '请勿输入重复的父母话题' topic_parent = Topic_Parent() topic_parent.topic_id = topic_id topic_parent.parent_id = parent_id topic_parent.save() refs = Topic_Revision.objects.filter(topic__id=topic_id, parent__id=parent_id, operation='dp').order_by('-pk') if refs: reference = refs[0] if reference.user_id != user_id: notification = Notification(operation='ap') notification.user_id = reference.user_id notification.related_user_id = user_id notification.topic_id = topic_id notification.incr_count_in_profile() notification.save() update_user_topic_fame(topic_id, user_id, reference.user_id) else: reference = None update_user_topic_fame(topic_id, user_id) topic_revision = Topic_Revision(operation='ap', reference=reference) topic_revision.topic_id = topic_id topic_revision.parent_id = parent_id topic_revision.user_id = user_id topic_revision.save() return parent_id