Example #1
0
def delete_object(obj):
    """Delete the object and the related moderation object"""
    moderation = Moderation.objects.get_for_object(obj)
    if moderation:
        moderation.delete()

    # remove possible tag relationship
    if hasattr(obj, 'tags'):
        obj.tags.clear()

    # remove possible comment relationship
    for c in Comment.get_comments_for(obj):
        c.delete()

    ct = ContentType.objects.get_for_model(obj)
    # remove possible project relationship
    for pro in ProjectRelatedObject.objects \
                .filter(content_type=ct, object_id=obj.id):
        pro.delete()

    obj.delete()
Example #2
0
def comments_list(content_object=None,
                  parent_id=None,
                  page=0,
                  root=False,
                  width=settings.KOMOO_COMMENTS_WIDTH,
                  height=settings.KOMOO_COMMENTS_HEIGHT,
                  context=None,
                  comment_class='',
                  wrap=True,
                  *args,
                  **kwargs):
    """
    builds a list o comments recursivelly and returns its rendered template
    params:
        content_object : object that these comments references
            (if Nones gets comments for any objects)
        parent_id : id of the parent for subcomments
            (default: None -> retrieves root comments)
        page : page number
        width: depth of subcomments to be loaded
        height: number of 'root' (in this sub-tree) comments to be loaded
        context: a RequestContext object, needed for csrf purposes
        comment_class: used for controlling the css classes (depth striped) on
            comment-container
        root : flag to identify if its a root comment
        wrap : defines if the comments list renders wrapped by a
            div.comments-list or not
    """
    # logger.debug('accessing Comments > comments_list')
    width = int(width[0]) if isinstance(width, list)\
                    else int(width)
    height = int(height[0]) if isinstance(height, list) \
                    else int(height)
    parent_id = int(parent_id[0]) if parent_id and isinstance(parent_id, list) \
                    else parent_id
    wrap = int(wrap[0]) if wrap and isinstance(wrap, list) \
                    else wrap
    page = int(page[0]) if isinstance(page, list) \
                    else int(page)

    logger.debug('loading comment with parent={} , page={} , width={} , height={}'.\
        format(parent_id, page, width, height))
    start, end = page * height, (page + 1) * height
    comments_query = Comment.get_comments_for(content_object) if content_object \
        else Comment.objects
    if parent_id:
        comments = comments_query.filter(parent=parent_id).\
            order_by('-pub_date')[start:end]
    else:
        comments = comments_query.filter(parent__isnull=True).\
            order_by('-pub_date')[start:end]
    if width:
        for comment in comments:
            if comment.sub_comments > 0:
                comment.sub_comments_list = comments_list(parent_id=comment.id,
                    width=width - 1, context=context,
                    comment_class='inner-comment' if 'odd' in comment_class \
                        else 'inner-comment odd',).content
    if not root:
        comment_class += ' inner-comment'
    return render_to_response('comments/comments_list.html',
                              dict(parent_id=parent_id,
                                   comments=comments,
                                   comment_class=comment_class,
                                   wrap=wrap),
                              context_instance=context)