def submit_text_post(request): """ Save a new text post from user to database """ error = None if request.method == 'POST': form = SubmitTextPost(request.POST) if form.is_valid(): try: data = form.cleaned_data post = Post.submit_post(request.app_user, data['title'], data['tags'], description=data['description']) return HttpResponseRedirect( reverse('app_post', args=[post.post_id, post.slug])) except TangleOnError as e: error = e.message else: form = SubmitTextPost(initial={'tags': request.GET.get('tags', None)}) top_tags = Tag.top_tags() return render_response( request, 'app/submit_text_post.html', { 'form': form, 'error': error, 'markdown_help_text': MARK_DOWN_TEXT, 'top_tags': top_tags })
def tag_posts(request, tag_name, by_new=False, page_index=0): """ Display posts were tag found in title or tags field """ source = { 'title': tag_name, 'absolute_url': reverse('app_tag', args=[tag_name]), 'absolute_url_by_new': reverse('app_tag_new', args=[tag_name]), 'active': 'new' if by_new else 'top' } posts = Post.tag_posts(tag_name, int(page_index), settings.PAGE_SIZE, by_new, request.app_user) try: tag = Tag.objects.get(name__iexact=tag_name) pin = None if request.app_user.is_anonymous() else Pin.objects.get( user=request.app_user, tag=tag) except Tag.DoesNotExist: tag = {'name': tag_name, 'pin_count': 0} pin = None except Pin.DoesNotExist: pin = None top_tags = Tag.top_tags() prev_url, next_url = paginated_url(request.resolver_match.url_name, posts, [tag_name, page_index]) return render_response(request, 'app/tag.html', locals())
def submit_link_post(request): """ Save a new link post from user to database """ error = None if request.method == 'POST': form = SubmitLinkPost(request.POST) if form.is_valid(): try: data = form.cleaned_data post = Post.submit_post(request.app_user, data['title'], data['tags'], data['url']) return HttpResponseRedirect( reverse('app_post', args=[post.post_id, post.slug])) except TangleOnError as e: error = e.message else: form = SubmitLinkPost( initial={ 'url': request.GET.get('url', None), 'title': request.GET.get('title', None), 'tags': request.GET.get('tags', None) }) top_tags = Tag.top_tags() return render_response(request, 'app/submit_link_post.html', { 'form': form, 'error': error, 'top_tags': top_tags })
def search(request, by_new=False, page_index=0): """ Search for query text in title and tags fields of post """ q = request.REQUEST.get('q', None) if q: channels_q = Channel.objects.filter(title__iexact=q)[:1] if channels_q: return HttpResponseRedirect(reverse('app_channel', args=[channels_q[0].channel_id])) tags_q = Tag.objects.filter(name__iexact=q)[:1] if tags_q: return HttpResponseRedirect(reverse('app_tag', args=[tags_q[0].name])) users_q = User.objects.filter(username__iexact=q)[:1] if users_q: return HttpResponseRedirect(reverse('app_user', args=[users_q[0].username])) params = { 'q': q.encode('utf-8')} query = '?' + urllib.urlencode(params) source = {'title': q, 'absolute_url': reverse('app_search') + query, 'absolute_url_by_new': reverse('app_search_new') + query, 'active': 'new' if by_new else 'top'} posts = Post.tag_posts(q, int(page_index), settings.PAGE_SIZE, by_new, request.app_user) top_tags = Tag.top_tags() top_channels = Channel.top_channels() prev_url, next_url = paginated_url(request.resolver_match.url_name, posts, [page_index], params) return render_response(request, 'app/search.html', locals()) return HttpResponseRedirect(reverse('app_index'))
def index(request, by_new=False, page_index=0): """ Display hot or new posts of all channels and users """ now = datetime.datetime.now() page_index = int(page_index) source = {'title': 'All', 'absolute_url': reverse('app_index'), 'absolute_url_by_new': reverse('app_index_new'), 'active': 'new' if by_new else 'top'} posts = Post.get_posts(int(page_index), settings.PAGE_SIZE, by_new, request.app_user) top_tags = Tag.top_tags() top_channels = Channel.top_channels() prev_url, next_url = paginated_url(request.resolver_match.url_name, posts, [page_index]) response = render_response(request, 'app/index.html', locals()) return response
def submit_text_post(request): """ Save a new text post from user to database """ error = None if request.method == 'POST': form = SubmitTextPost(request.POST) if form.is_valid(): try: data = form.cleaned_data post = Post.submit_post(request.app_user, data['title'], data['tags'], description=data['description']) return HttpResponseRedirect(reverse('app_post', args=[post.post_id, post.slug])) except TangleOnError as e: error = e.message else: form = SubmitTextPost(initial={'tags': request.GET.get('tags', None)}) top_tags = Tag.top_tags() return render_response(request, 'app/submit_text_post.html', {'form': form, 'error': error, 'markdown_help_text': MARK_DOWN_TEXT, 'top_tags': top_tags })
def submit_link_post(request): """ Save a new link post from user to database """ error = None if request.method == 'POST': form = SubmitLinkPost(request.POST) if form.is_valid(): try: data = form.cleaned_data post = Post.submit_post(request.app_user, data['title'], data['tags'], data['url']) return HttpResponseRedirect(reverse('app_post', args=[post.post_id, post.slug])) except TangleOnError as e: error = e.message else: form = SubmitLinkPost(initial={'url': request.GET.get('url', None), 'title': request.GET.get('title', None), 'tags': request.GET.get('tags', None)}) top_tags = Tag.top_tags() return render_response(request, 'app/submit_link_post.html', {'form': form, 'error': error, 'top_tags': top_tags})
def search(request, by_new=False, page_index=0): """ Search for query text in title and tags fields of post """ q = request.REQUEST.get('q', None) if q: channels_q = Channel.objects.filter(title__iexact=q)[:1] if channels_q: return HttpResponseRedirect( reverse('app_channel', args=[channels_q[0].channel_id])) tags_q = Tag.objects.filter(name__iexact=q)[:1] if tags_q: return HttpResponseRedirect( reverse('app_tag', args=[tags_q[0].name])) users_q = User.objects.filter(username__iexact=q)[:1] if users_q: return HttpResponseRedirect( reverse('app_user', args=[users_q[0].username])) params = {'q': q.encode('utf-8')} query = '?' + urllib.urlencode(params) source = { 'title': q, 'absolute_url': reverse('app_search') + query, 'absolute_url_by_new': reverse('app_search_new') + query, 'active': 'new' if by_new else 'top' } posts = Post.tag_posts(q, int(page_index), settings.PAGE_SIZE, by_new, request.app_user) top_tags = Tag.top_tags() top_channels = Channel.top_channels() prev_url, next_url = paginated_url(request.resolver_match.url_name, posts, [page_index], params) return render_response(request, 'app/search.html', locals()) return HttpResponseRedirect(reverse('app_index'))
def index(request, by_new=False, page_index=0): """ Display hot or new posts of all channels and users """ now = datetime.datetime.now() page_index = int(page_index) source = { 'title': 'All', 'absolute_url': reverse('app_index'), 'absolute_url_by_new': reverse('app_index_new'), 'active': 'new' if by_new else 'top' } posts = Post.get_posts(int(page_index), settings.PAGE_SIZE, by_new, request.app_user) top_tags = Tag.top_tags() top_channels = Channel.top_channels() prev_url, next_url = paginated_url(request.resolver_match.url_name, posts, [page_index]) response = render_response(request, 'app/index.html', locals()) return response
def tag_posts(request, tag_name, by_new=False, page_index=0): """ Display posts were tag found in title or tags field """ source = {'title': tag_name, 'absolute_url': reverse('app_tag', args=[tag_name]), 'absolute_url_by_new': reverse('app_tag_new', args=[tag_name]), 'active': 'new' if by_new else 'top'} posts = Post.tag_posts(tag_name, int(page_index), settings.PAGE_SIZE, by_new, request.app_user) try: tag = Tag.objects.get(name__iexact=tag_name) pin = None if request.app_user.is_anonymous() else Pin.objects.get(user=request.app_user, tag=tag) except Tag.DoesNotExist: tag = {'name': tag_name, 'pin_count': 0 } pin = None except Pin.DoesNotExist: pin = None top_tags = Tag.top_tags() prev_url, next_url = paginated_url(request.resolver_match.url_name, posts, [tag_name, page_index]) return render_response(request, 'app/tag.html', locals())