Esempio n. 1
0
def story(request, base62_id):
    action_keys = filter(lambda i: i in ['delete', 'publish'], request.POST)
    action_key = action_keys[0] if action_keys else None
    if action_key:
        method = {u'delete': _delete_story,
                  u'publish': _publish_story}.get(action_key)
        if method:
            story = get_object_or_404(Story, id=base62.to_decimal(base62_id),
                                      owner=request.user)
            return method(request, story)
    statuses_in = [Story.DRAFT, Story.PUBLISHED] if request.user.is_authenticated() \
        else [Story.PUBLISHED]
    story = get_object_or_404(Story, id=base62.to_decimal(base62_id),
                              status__in=statuses_in, owner__is_active=True)
    story_is_visible = story.is_visible_for(request.user)
    comments = Comment.objects\
        .filter(story=story, status=Comment.PUBLISHED, owner__is_active=True)\
        .select_related('owner__profile')
    comments = paginated(request, comments, settings.COMMENTS_PER_PAGE)
    if request.user.is_authenticated():
        if request.method == 'POST' and request.POST.get('action') ==\
           'create_comment':
            comment_form = CommentForm(request.POST, owner=request.user,
                                       story=story)
            if comment_form.is_valid():
                comment = comment_form.save()
                return HttpResponseRedirect(comment.get_absolute_url())
        else:
            comment_form = CommentForm(owner=request.user, story=story)
    else:
        comment_form = None
    return render(request, 'story/story_detail.html',
                  {'story': story, 'current_site': Site.objects.get_current(),
                   'story_is_visible': story_is_visible, 'comments': comments,
                   'comment_form': comment_form})
Esempio n. 2
0
def story(request, base62_id):
    action_keys = filter(lambda i: i in ['delete', 'publish'], request.POST)
    action_key = action_keys[0] if action_keys else None
    if action_key:
        method = {
            u'delete': _delete_story,
            u'publish': _publish_story
        }.get(action_key)
        if method:
            story = get_object_or_404(Story,
                                      id=base62.to_decimal(base62_id),
                                      owner=request.user)
            return method(request, story)
    statuses_in = [Story.DRAFT, Story.PUBLISHED] if request.user.is_authenticated() \
        else [Story.PUBLISHED]
    story = get_object_or_404(Story,
                              id=base62.to_decimal(base62_id),
                              status__in=statuses_in,
                              owner__is_active=True)
    story_is_visible = story.is_visible_for(request.user)
    comments = Comment.objects\
        .filter(story=story, status=Comment.PUBLISHED, owner__is_active=True)\
        .select_related('owner__profile')
    comments = paginated(request, comments, settings.COMMENTS_PER_PAGE)
    if request.user.is_authenticated():
        if request.method == 'POST' and request.POST.get('action') ==\
           'create_comment':
            comment_form = CommentForm(request.POST,
                                       owner=request.user,
                                       story=story)
            if comment_form.is_valid():
                comment = comment_form.save()
                return HttpResponseRedirect(comment.get_absolute_url())
        else:
            comment_form = CommentForm(owner=request.user, story=story)
    else:
        comment_form = None
    return render(
        request, 'story/story_detail.html', {
            'story': story,
            'current_site': Site.objects.get_current(),
            'story_is_visible': story_is_visible,
            'comments': comments,
            'comment_form': comment_form
        })
Esempio n. 3
0
def update_details(request, base62_id):
    story = get_object_or_404(Story, id=base62.to_decimal(base62_id),
                              owner=request.user)
    if request.method == "POST":
        update_captions_form = UpdateCaptionsForm(request.POST, story=story)
        if update_captions_form.is_valid():
            update_captions_form.save(slot_data=request.POST)
            return HttpResponseRedirect(story.get_absolute_url())
    update_captions_form = UpdateCaptionsForm(story=story)
    return render(request, 'story/update_captions.html',
                  {'captions_form': update_captions_form})
Esempio n. 4
0
def update_details(request, base62_id):
    story = get_object_or_404(Story,
                              id=base62.to_decimal(base62_id),
                              owner=request.user)
    if request.method == "POST":
        update_captions_form = UpdateCaptionsForm(request.POST, story=story)
        if update_captions_form.is_valid():
            update_captions_form.save(slot_data=request.POST)
            return HttpResponseRedirect(story.get_absolute_url())
    update_captions_form = UpdateCaptionsForm(story=story)
    return render(request, 'story/update_captions.html',
                  {'captions_form': update_captions_form})
Esempio n. 5
0
def create_story(request, base62_id):
    mid = base62.to_decimal(base62_id)
    meta = get_object_or_404(QuestionMeta, id=mid)
    if request.POST:
        story_form = StoryForm(request.POST, owner=request.user, meta=meta)
        if story_form.is_valid():
            story = story_form.save()
            return HttpResponseRedirect(story.get_absolute_url())
    else:
        story_form = StoryForm(owner=request.user, meta=meta, initial={
            'question': request.GET.get('qid')})
    return render(request, 'story/create_story.html',
                  {'story_form': story_form})
Esempio n. 6
0
def create_story(request, base62_id):
    mid = base62.to_decimal(base62_id)
    meta = get_object_or_404(QuestionMeta, id=mid)
    if request.POST:
        story_form = StoryForm(request.POST, owner=request.user, meta=meta)
        if story_form.is_valid():
            story = story_form.save()
            return HttpResponseRedirect(story.get_absolute_url())
    else:
        story_form = StoryForm(owner=request.user,
                               meta=meta,
                               initial={'question': request.GET.get('qid')})
    return render(request, 'story/create_story.html',
                  {'story_form': story_form})
Esempio n. 7
0
def question(request, base62_id, order=None, show_delete=False, **kwargs):
    qmeta = get_object_or_404(QuestionMeta, id=base62.to_decimal(base62_id))

    order = {
        'popular': '-like_count',
        'featured': 'is_featured',
        'recent': '-created_at'
    }.get(order, '-created_at')

    stories = Story.objects\
        .from_question_meta(qmeta)\
        .filter(status=Story.PUBLISHED,
                visible_for=Story.VISIBLE_FOR_EVERYONE).order_by(order)

    if request.user.is_authenticated():
        request_answer_form = RequestAnswerForm(questioner=request.user,
                                                qmeta=qmeta)
        if request.method == 'POST':
            request_answer_form = RequestAnswerForm(
                request.POST,
                questioner=request.user,
                qmeta=qmeta,
            )
            if request_answer_form.is_valid():
                usernames = request_answer_form.save()
                if usernames:
                    messages.success(
                        request,
                        'Your question sent to: %s' % ', '.join(usernames))
                else:
                    messages.error(request, 'Could\'t find any users to send.')
                return HttpResponseRedirect(qmeta.get_absolute_url())
    else:
        request_answer_form = None

    if request.user.is_authenticated():
        is_following = QuestionFollow.objects\
            .filter(target=qmeta,
                    follower=request.user,
                    status=QuestionFollow.FOLLOWING).exists()
    else:
        is_following = False

    return render(
        request, "question/question_detail.html", {
            'question': qmeta,
            'is_following': is_following,
            'request_answer_form': request_answer_form,
            'stories': paginated(request, stories, settings.STORIES_PER_PAGE)
        })
Esempio n. 8
0
def question(request, base62_id, ordering=None, show_delete=False, **kwargs):
    qmeta = get_object_or_404(QuestionMeta, id=base62.to_decimal(base62_id))

    if qmeta.status == QuestionMeta.REDIRECTED and qmeta.redirected_to:
        return HttpResponseRedirect(qmeta.redirected_to.get_absolute_url())

    stories = Story.objects.build(frm=qmeta, ordering=ordering)

    if not ordering:
        ordering = 'recent'

    if request.user.is_authenticated():
        request_answer_form = RequestAnswerForm(questioner=request.user,
                                                qmeta=qmeta)
        if request.method == 'POST':
            request_answer_form = RequestAnswerForm(
                request.POST,
                questioner=request.user,
                qmeta=qmeta,
            )
            if request_answer_form.is_valid():
                usernames = request_answer_form.save()
                if usernames:
                    messages.success(
                        request,
                        'Your question sent to: %s' % ', '.join(usernames))
                else:
                    messages.error(request, 'Could\'t find any users to send.')
                return HttpResponseRedirect(qmeta.get_absolute_url())
    else:
        request_answer_form = None

    if request.user.is_authenticated():
        is_following = QuestionFollow.objects\
            .filter(target=qmeta,
                    follower=request.user,
                    status=QuestionFollow.FOLLOWING).exists()
    else:
        is_following = False

    return render(
        request, "question/question_detail.html", {
            'question': qmeta,
            'is_following': is_following,
            'request_answer_form': request_answer_form,
            'ordering': ordering,
            'stories': paginated(request, stories, settings.STORIES_PER_PAGE)
        })
Esempio n. 9
0
def complain_question(request, base62_id):
    qmeta = get_object_or_404(QuestionMeta, id=base62.to_decimal(base62_id))
    complain_form = ComplainQuestionMetaForm(
        qmeta=qmeta)
    descriptions = json.dumps(
        ComplainQuestionMetaForm._meta.model.DESCRIPTION_MAP)
    if request.method == "POST":
        complain_form = ComplainQuestionMetaForm(request.POST, qmeta=qmeta)
        if complain_form.is_valid():
            complain_form.save(complainer=request.user)
            messages.success(request, _('Your complaint sent to moderation.'))
            return HttpResponseRedirect(qmeta.get_absolute_url())

    return render(request, 'moderation/complain_qmeta.html', {
        'complain_form': complain_form,
        'descriptions': descriptions})
Esempio n. 10
0
def update_story(request, base62_id):
    story = get_object_or_404(Story, id=base62.to_decimal(base62_id),
                              owner=request.user)
    if request.method == "POST":
        story_form = StoryForm(request.POST, instance=story,
                               owner=request.user, meta=story.question_meta)
        if story_form.is_valid():
            story_form.save()
            messages.success(request, _('Your story updated'))
            return HttpResponseRedirect(story.get_absolute_url())
        else:
            return render(request, 'story/create_story.html',
                          {'story_form': story_form})
    story_form = StoryForm(instance=story, owner=request.user,
                           meta=story.question_meta)
    return render(request, 'story/create_story.html',
                  {'story_form': story_form})
Esempio n. 11
0
def update_story(request, base62_id):
    story = get_object_or_404(Story,
                              id=base62.to_decimal(base62_id),
                              owner=request.user)
    if request.method == "POST":
        story_form = StoryForm(request.POST,
                               instance=story,
                               owner=request.user)
        if story_form.is_valid():
            story_form.save()
            messages.success(request, _('Your story updated'))
            return HttpResponseRedirect(story.get_absolute_url())
        else:
            return render(request, 'story/create_story.html',
                          {'story_form': story_form})
    story_form = StoryForm(instance=story, owner=request.user)
    return render(request, 'story/create_story.html',
                  {'story_form': story_form})
Esempio n. 12
0
def question(request, base62_id, ordering=None, show_delete=False, **kwargs):
    qmeta = get_object_or_404(QuestionMeta, id=base62.to_decimal(base62_id))

    if qmeta.redirected_to:
        return HttpResponseRedirect(qmeta.redirected_to.get_absolute_url())

    stories = Story.objects.build(frm=qmeta, ordering=ordering)

    if not ordering:
        ordering = 'recent'

    if request.user.is_authenticated():
        request_answer_form = RequestAnswerForm(questioner=request.user,
                                                qmeta=qmeta)
        if request.method == 'POST':
            request_answer_form = RequestAnswerForm(
                request.POST, questioner=request.user, qmeta=qmeta,)
            if request_answer_form.is_valid():
                usernames = request_answer_form.save()
                if usernames:
                    messages.success(request, 'Your question sent to: %s' %
                                              ', '.join(usernames))
                else:
                    messages.error(request, 'Could\'t find any users to send.')
                return HttpResponseRedirect(qmeta.get_absolute_url())
    else:
        request_answer_form = None

    if request.user.is_authenticated():
        is_following = QuestionFollow.objects\
            .filter(target=qmeta,
                    follower=request.user,
                    status=QuestionFollow.FOLLOWING).exists()
    else:
        is_following = False

    return render(request, "question/question_detail.html", {
        'question': qmeta,
        'is_following': is_following,
        'request_answer_form': request_answer_form,
        'ordering': ordering,
        'stories': paginated(request, stories, settings.STORIES_PER_PAGE)})
Esempio n. 13
0
 def get_question(self, url):
     path = urlparse.urlparse(url).path
     if not path.startswith('/q/'):
         raise CommandError('%s is not a question url.' % url)
     return QuestionMeta.objects.get(id=base62.to_decimal(path[3:-1]))