Exemple #1
0
def del_comment(c):
	if not isinstance(c, Comment):
		return False
	
	if c.is_visible:
		c.is_visible = False
		c.save()
	
	obj = c.content_object
	obj.n_comment -= 1
	obj.save()
	topics = obj.topics.all()
	if isinstance(obj, Link):
		for t in topics:
			topic_ship_update(topic=t, user=c.user,
				              domain=obj.domain, is_comment=True, num=-1)
	elif isinstance(obj, Discuss):
		for t in topics:
			topic_ship_update(topic=t, user=c.user,
			                  is_comment=True, num=-1)
	
	data = c.user.userdata
	data.n_comments -= 1
	data.save()
	
	if c.parent_comment:
		c.parent_comment.n_comment -= 1
		c.parent_comment.save()
	
	return True
Exemple #2
0
def vote_obj(user, obj):
    '''
	'''
    v = Vote.objects.filter(user=user, object_id=obj.id)
    if v:
        return v[0]

    if not isinstance(obj, Link) and \
       not isinstance(obj, Discuss) and \
       not isinstance(obj, Comment):
        return False

    if user == obj.user:
        return True

    data = obj.user.userdata
    data.honor += 1

    now = timezone.now()
    if is_this_month(now, data.this_month_start_time):
        data.this_month_vote += 1
    elif is_last_month(now, data.this_month_start_time):
        if not is_last2_month(now, data.last_month_start_time):
            data.last_month_half_votes = 0
        data.this_month_vote = (data.this_month_vote -
                                data.last_month_half_votes) / 2
        data.last_month_half_votes = data.this_month_vote
        data.last_month_start_time = data.this_month_start_time
        data.this_month_start_time = now

        data.this_month_vote += 1
    else:
        data.this_month_vote = 1
        data.this_month_start_time = now
    data.save()

    if isinstance(obj, Link):
        for topic in obj.topics.all():
            topic_ship_update(topic, obj.user, domain=obj.domain, is_vote=True)
    elif isinstance(obj, Discuss):
        for topic in obj.topics.all():
            topic_ship_update(topic, obj.user, is_vote=True)

    obj.n_supporter += 1

    if isinstance(obj, Link):

        average_sum = 0

        for topic in obj.topics.all():
            if FILTER:
                hot_filter(obj, topic, topic.link_average_votes,
                           WAY_LINK_TOPIC_POST)

            average_sum += topic.link_average_votes

        count = obj.topics.count()
        if count:
            average = average_sum * 1.0 / count
        else:
            average = get_averages().link_average_votes

        if obj.n_supporter >= int(BOUTIQUE_RATE * average) + 1:
            if average != 0:
                obj.is_boutique = True

    elif isinstance(obj, Discuss):

        average_sum = 0

        for topic in obj.topics.all():
            if filter:
                hot_filter(obj, topic, topic.discuss_average_votes,
                           WAY_DISCUSS_TOPIC_POST)

            average_sum += topic.discuss_average_votes

        count = obj.topics.count()
        if count:
            average = average_sum * 1.0 / count
        else:
            average = get_averages().discuss_average_votes

        if obj.n_supporter >= int(BOUTIQUE_RATE * average) + 1:
            if average != 0:
                obj.is_boutique = True

    else:

        average_sum = 0

        for topic in obj.content_object.topics.all():
            average_sum += topic.comment_average_votes

        count = obj.content_object.topics.count()
        if count:
            average = average_sum * 1.0 / count
        else:
            average = get_averages().comment_average_votes

        if obj.n_supporter >= int(BOUTIQUE_RATE * average) + 1:
            if average != 0:
                obj.is_boutique = True

    UserData.objects.filter(user=user).update(n_supports=F('n_supports') + 1)

    obj.save()
    vote = Vote.objects.create(user=user, content_object=obj)

    return vote
Exemple #3
0
def post_comment(user, content, obj, parent=None):
	'''
	'''
	comment = Comment(id=get_available_id(),
	                  user=user,
	                  content=content,
	                  content_object=obj)
	
	if parent and isinstance(parent, Comment):
		comment.parent_comment = parent
		parent.n_comment += 1
		parent.save()
	
	topics = obj.topics.all()
	if isinstance(obj, Link):
		comment.way = 'l'
		for topic in topics:
			topic_ship_update(topic=topic, user=user,
			                  domain=obj.domain, is_comment=True)
	elif isinstance(obj, Discuss):
		comment.way = 'd'
		for topic in topics:
			topic_ship_update(topic=topic, user=user,
			                  is_comment=True)
	else:
		return False
	
	comment.save()
	
	if parent and isinstance(parent, Comment):
		if user != parent.user:
			creat_remind(parent.user, user, REMIND_NEW_COMMENT, comment)
	else:
		if user != obj.user:
			creat_remind(obj.user, user, REMIND_NEW_COMMENT, comment)
	
	if isinstance(obj, Link):
		Dynamic.objects.create(column=user.userprofile.get_column(),
		                       way=WAY_LINK_COMMENT,
		                       content_object=comment,
		                       comment_object=obj)
	
	elif isinstance(obj, Discuss):
		Dynamic.objects.create(column=user.userprofile.get_column(),
		                       way=WAY_DISCUSS_COMMENT,
		                       content_object=comment,
		                       comment_object=obj)
		
		DiscussIndex.objects.filter(discuss=obj).update(
		                            last_active_time=timezone.now(),
		                            last_active_user=user)
		
		obj.last_active_time = timezone.now()
		obj.last_active_user = user
		
		if not user.userdata.discusses.filter(id=obj.id).count():
			user.userdata.discusses.add(obj)
		
	else:
		pass
	
	obj.n_comment += 1
	obj.save()
	
	UserData.objects.filter(user=user).update(n_comments=F('n_comments') + 1)
	
	return comment
Exemple #4
0
def vote_obj(user, obj):
    """
	"""
    v = Vote.objects.filter(user=user, object_id=obj.id)
    if v:
        return v[0]

    if not isinstance(obj, Link) and not isinstance(obj, Discuss) and not isinstance(obj, Comment):
        return False

    if user == obj.user:
        return True

    data = obj.user.userdata
    data.honor += 1

    now = timezone.now()
    if is_this_month(now, data.this_month_start_time):
        data.this_month_vote += 1
    elif is_last_month(now, data.this_month_start_time):
        if not is_last2_month(now, data.last_month_start_time):
            data.last_month_half_votes = 0
        data.this_month_vote = (data.this_month_vote - data.last_month_half_votes) / 2
        data.last_month_half_votes = data.this_month_vote
        data.last_month_start_time = data.this_month_start_time
        data.this_month_start_time = now

        data.this_month_vote += 1
    else:
        data.this_month_vote = 1
        data.this_month_start_time = now
    data.save()

    if isinstance(obj, Link):
        for topic in obj.topics.all():
            topic_ship_update(topic, obj.user, domain=obj.domain, is_vote=True)
    elif isinstance(obj, Discuss):
        for topic in obj.topics.all():
            topic_ship_update(topic, obj.user, is_vote=True)

    obj.n_supporter += 1

    if isinstance(obj, Link):

        average_sum = 0

        for topic in obj.topics.all():
            if FILTER:
                hot_filter(obj, topic, topic.link_average_votes, WAY_LINK_TOPIC_POST)

            average_sum += topic.link_average_votes

        count = obj.topics.count()
        if count:
            average = average_sum * 1.0 / count
        else:
            average = get_averages().link_average_votes

        if obj.n_supporter >= int(BOUTIQUE_RATE * average) + 1:
            if average != 0:
                obj.is_boutique = True

    elif isinstance(obj, Discuss):

        average_sum = 0

        for topic in obj.topics.all():
            if filter:
                hot_filter(obj, topic, topic.discuss_average_votes, WAY_DISCUSS_TOPIC_POST)

            average_sum += topic.discuss_average_votes

        count = obj.topics.count()
        if count:
            average = average_sum * 1.0 / count
        else:
            average = get_averages().discuss_average_votes

        if obj.n_supporter >= int(BOUTIQUE_RATE * average) + 1:
            if average != 0:
                obj.is_boutique = True

    else:

        average_sum = 0

        for topic in obj.content_object.topics.all():
            average_sum += topic.comment_average_votes

        count = obj.content_object.topics.count()
        if count:
            average = average_sum * 1.0 / count
        else:
            average = get_averages().comment_average_votes

        if obj.n_supporter >= int(BOUTIQUE_RATE * average) + 1:
            if average != 0:
                obj.is_boutique = True

    UserData.objects.filter(user=user).update(n_supports=F("n_supports") + 1)

    obj.save()
    vote = Vote.objects.create(user=user, content_object=obj)

    return vote