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')
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())
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')
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())
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)
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)
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')
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')
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')
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)
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)
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')
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)
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')
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')
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')
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')