Esempio n. 1
0
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
Esempio n. 2
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