Beispiel #1
0
def blog_comment(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST and 'text' in request.POST and len(
                request.POST['text'].strip()) > 2:
            ref = None
            if 'ref_comment_id' in request.POST:
                ref_id = request.POST['ref_comment_id']
                try:
                    ref = Comment.get_by_id(ref_id)
                except:
                    return apiRespond(400, msg='Reference comment not found')
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Target blog not found')
            else:
                comment = request.user.comment(
                    blog=b, text=request.POST['text'].strip(), reference=ref)
                Alert.create_alert(
                    ref_user=request.user,
                    type=Alert.COMMENT_REPLY if ref else Alert.COMMENT,
                    blog=b)
                return apiRespond(201, comment=comment.get_obj())
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #2
0
def blog(request, slug, id):
    try:
        b = Blog.get_by_id(id)
    except:
        return page404(request)
    else:
        if b.get_slug() == slug:
            if b.is_published or (request.user.is_authenticated
                                  and request.user == b.author):
                opts = {
                    'header': {
                        'is_loggedin': False,
                        'is_empty': True
                    },
                    'blog':
                    b.get_obj(user=request.user if request.user.
                              is_authenticated else None),
                    'html':
                    md.reset().convert(b.content),
                    'is_owner':
                    request.user.is_authenticated and request.user == b.author
                }
                if request.user.is_authenticated:
                    opts['header']['is_loggedin'] = True
                res = render(request, 'blog.html', opts)
                return res
            else:
                return page404(request)
        else:
            return redirect(to=b.get_url())
Beispiel #3
0
def add_blog_topic(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST and 'topic' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Blog not found')
            else:
                if b.author == request.user:
                    topic = request.POST['topic'].strip(
                    ).lower().replace(" ", "")
                    if len(topic) > 1:
                        if topic not in Topic.BANNED:
                            if not b.has_topic(topic):
                                b.add_topic(topic)
                                return apiRespond(201, topic=topic)
                            else:
                                return apiRespond(400, msg='Topic already tagged')
                        else:
                            return apiRespond(400, msg='This topic is disabled')
                    else:
                        return apiRespond(400, msg='Topic name too short')
                else:
                    return apiRespond(400, msg='Access denied')
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #4
0
def blog(request, slug, id):
    convert_session_to_user(request)
    try:
        b = Blog.get_by_id(id)
    except:
        return page404(request)
    else:
        if b.get_slug() == slug:
            if b.is_published or (request.user.is_authenticated
                                  and request.user == b.author):
                htm = bleach.clean(md.reset().convert(b.content),
                                   tags=md_tags,
                                   attributes=markdown_attrs,
                                   styles=all_styles)
                opts = {
                    'header': {
                        'is_loggedin': False,
                        'is_empty': False
                    },
                    'BASE_URL':
                    BASE_URL,
                    'blog':
                    b.get_obj(user=request.user if request.user.
                              is_authenticated else None),
                    'html':
                    htm,
                    'author_bio':
                    b.author.bio,
                    'more_blogs': [],
                    'is_owner':
                    request.user.is_authenticated and request.user == b.author
                }
                ref = get_domain_from_url(request.META.get('HTTP_REFERER', ''))
                if request.user.is_authenticated:
                    opts['header']['is_loggedin'] = True
                    view_key = View.create(user=request.user,
                                           blog=b,
                                           referer=ref)
                    opts['more_blogs'] = b.related_blogs(user=request.user)
                else:
                    request.session['has_views'] = True
                    view_key = View.create(user=None,
                                           blog=b,
                                           session=get_session(request),
                                           referer=ref)
                    opts['more_blogs'] = b.related_blogs(
                        session=get_session(request))
                opts['view_key'] = view_key
                res = render(request, 'blog.html', opts)
                return res
            else:
                return page404(request)
        else:
            return redirect(to=b.get_url())
Beispiel #5
0
def blog_settings(request, id):
    try:
        b = Blog.get_by_id(id)
    except:
        return page404(request)
    else:
        if request.user == b.author:
            opts = {'header': {'is_loggedin': True, 'is_empty': False},
                    'blog': b.get_obj_min()}
            return render(request, 'blogSettings.html', opts)
        else:
            return page404(request)
Beispiel #6
0
def blog_edit(request, id):
    try:
        b = Blog.get_by_id(id)
    except:
        return page404(request)
    else:
        if request.user == b.author:
            opts = {'header': {'is_loggedin': True, 'is_empty': False},
                    'blog': b.get_obj(escape_html=False)}
            return render(request, 'blogEditor.html', opts)
        else:
            return page404(request)
Beispiel #7
0
def blog_unreact(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Target blog not found')
            else:
                res = request.user.unreact(blog=b)
                return apiRespond(201, result=res)
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #8
0
def blog_react(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST and 'reaction' in request.POST and request.POST['reaction'] in Reaction.CODES:
            reaction = request.POST['reaction']
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Target blog not found')
            else:
                obj = request.user.react(blog=b, reaction=reaction)
                return apiRespond(201, result=True)
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #9
0
def delete_blog(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Blog not found')
            else:
                if b.author == request.user:
                    b.remove()
                    return apiRespond(201, removed=True)
                else:
                    return apiRespond(400, msg='Access denied')
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #10
0
def blog_settings(request, id):
    try:
        b = Blog.get_by_id(id)
    except:
        return page404(request)
    else:
        if request.user == b.author:
            blog_opts = b.get_obj_min()
            blog_opts['is_subscribed'] = b.is_subscribed
            opts = {'header': {'is_loggedin': True, 'is_empty': False, 'float': True},
                    'blog': blog_opts}
            topics = []
            for topic in b.get_topics():
                topics.append(topic.name)
            opts['blog']['topics'] = to_json(topics)
            return render(request, 'blogSettings.html', opts)
        else:
            return page404(request)
Beispiel #11
0
def blog_reactions(request, id):
    convert_session_to_user(request)
    try:
        b = Blog.get_by_id(id)
    except:
        return page404(request)
    else:
        if request.user == b.author:
            data = {'header': {'is_loggedin': True, 'float': True},
                    'users': [], 'blog': b.get_obj_min()}
            reactions = b.get_reactions()
            for reaction in reactions:
                obj = reaction.user.get_profile_min()
                obj['reaction'] = reaction.reaction
                data['users'].append(obj)
            return render(request, 'reactions.html', data)
        else:
            return page404(request)
Beispiel #12
0
def set_blog_content(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST and 'content' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Blog not found')
            else:
                if b.author == request.user:
                    content = request.POST['content']
                    b.update_content(content)
                    return apiRespond(201)
                else:
                    return apiRespond(400, msg='Access denied')
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #13
0
def blog_comments(request, blog_id):
    try:
        b = Blog.get_by_id(blog_id)
    except:
        return page404(request)
    else:
        user = request.user if request.user.is_authenticated else None
        if b.is_published or (request.user.is_authenticated and request.user == b.author):
            opts = {'comments': [],
                    'blog': b.get_obj_min(),
                    'is_owner': request.user.is_authenticated and request.user == b.author}
            comments = b.get_comments()
            for comment in comments:
                opts['comments'].append(comment.get_obj(user=user))
            res = render(request, 'comments.html', opts)
            return res
        else:
            return page404(request)
Beispiel #14
0
def unpublish_blog(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Blog not found')
            else:
                if b.author == request.user:
                    b.unpublish()
                    Alert.alerts_for_new_blog(blog=b, delete=True)
                    return apiRespond(201, is_published=b.is_published)
                else:
                    return apiRespond(400, msg='Access denied')
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #15
0
def set_blog_title(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST and 'title' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Blog not found')
            else:
                if b.author == request.user:
                    title = request.POST['title'].strip()
                    if len(title) > 2:
                        b.update_title(title)
                        return apiRespond(201, title=title)
                    else:
                        return apiRespond(400, msg='Title too short')
                else:
                    return apiRespond(400, msg='Access denied')
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #16
0
def set_blog_img(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST and 'img_url' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Blog not found')
            else:
                if b.author == request.user:
                    img_url = request.POST['img_url'].strip()
                    if len(img_url) > 2:
                        b.update_img(img_url)
                        return apiRespond(201, img_url=img_url)
                    else:
                        return apiRespond(400, msg='img_url too short')
                else:
                    return apiRespond(400, msg='Access denied')
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')
Beispiel #17
0
def remove_blog_topic(request):
    if request.user.is_authenticated:
        if 'blog_id' in request.POST and 'topic' in request.POST:
            try:
                b = Blog.get_by_id(request.POST['blog_id'])
            except:
                return apiRespond(400, msg='Blog not found')
            else:
                if b.author == request.user:
                    topic = request.POST['topic'].strip(
                    ).lower().replace(" ", "")
                    if b.remove_topic(topic):
                        return apiRespond(201, topic=topic)
                    else:
                        return apiRespond(400, msg='Could not remove the topic')
                else:
                    return apiRespond(400, msg='Access denied')
        else:
            return apiRespond(400, msg='Required fields missing')
    else:
        return apiRespond(401, msg='User not logged in')