示例#1
0
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
    })
示例#2
0
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
        })
示例#3
0
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'))
示例#4
0
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())
示例#5
0
def bootstrip(request):
    """
    Setting basic context variables
    """
    user_messages = None
    new_messages = None
    last_message_id = None
    signup_form = None
    followings = None
    
    if request.app_user.is_authenticated():
        tags = request.app_user.get_tags()
        channels = request.app_user.get_channels()
        user_messages = request.app_user.get_messages()
        followings = request.app_user.get_followings()
        new_messages = len([msg for msg in user_messages if msg.viewed_on == None])
        last_message_id = max(user_messages, key=lambda msg: msg.message_id).message_id if len(user_messages) else None
    else:
        tags = Tag.get_tags()
        channels = Channel.get_channels()
        signup_form = SignUp()
        
    return {
            'app_user': request.app_user,
            'tags': tags,
            'channels': channels,
            'user_messages': user_messages,
            'new_messages': new_messages,
            'last_message_id': last_message_id,
            'followings': followings,            
            'signup_form': signup_form,
            'utc_now': datetime.datetime.now(),
            'STATIC_CONTENT_VERSION': settings.STATIC_CONTENT_VERSION
            }
示例#6
0
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
示例#7
0
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 })
示例#8
0
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})
示例#9
0
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'))
示例#10
0
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
示例#11
0
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())