Exemple #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')
Exemple #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())
Exemple #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')
Exemple #4
0
def top25(request):
    opts = {'header': {'is_loggedin': False, 'is_empty': False}}
    if request.user.is_authenticated:
        opts['header']['is_loggedin'] = True
    opts['blogs'] = []
    blogs = Blog.top25()
    for b in blogs:
        opts['blogs'].append(b.get_obj_min())
    res = render(request, 'top25.html', opts)
    return res
Exemple #5
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())
Exemple #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)
Exemple #7
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)
Exemple #8
0
def top25(request):
    convert_session_to_user(request)
    opts = {'header': {
        'is_loggedin': False, 'is_empty': False}, 'cat': get_catagories(request), 'active_cat': 'popular'}
    if request.user.is_authenticated:
        opts['header']['is_loggedin'] = True
    opts['blogs'] = []
    blogs = Blog.top25()
    for b in blogs:
        opts['blogs'].append(b.get_obj_min())
    res = render(request, 'top25.html', opts)
    return res
Exemple #9
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')
Exemple #10
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')
Exemple #11
0
def create(request):
    if request.method == 'GET':
        res = render(request, 'create.html')
    else:
        if 'title' in request.POST:
            title = request.POST['title'].strip()
            if len(title) > 2:
                b = Blog.create(request.user, title)
                res = redirect(to='/blog/'+str(b.id)+'/edit')
            else:
                res = render(request, 'create.html', {
                             'error': 'Title too small (min 3 characters)'})
        else:
            res = render(request, 'create.html', {
                         'error': 'Title field missing'})
    return res
Exemple #12
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')
Exemple #13
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)
Exemple #14
0
def index(request):
    opts = {'header': {'is_loggedin': False, 'is_empty': False}}
    if request.user.is_authenticated:
        opts['header']['is_loggedin'] = True
    opts['blogs'] = []
    blogs = Blog.top25()
    for b in blogs:
        opts['blogs'].append(b.get_obj_min())
    try:
        featured = Featured.pickOne().blog
    except Exception as e:
        print(e)
        opts['featured_blog'] = None
    else:
        opts['featured_blog'] = featured.get_obj_min()
        opts['featured_blog']['intro'] = featured.content[:300]
    res = render(request, 'index.html', opts)
    return res
Exemple #15
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)
Exemple #16
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)
Exemple #17
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')
Exemple #18
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')
Exemple #19
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')
Exemple #20
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')
Exemple #21
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')