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})
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 })
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})
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})
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})
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) })
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) })
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})
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})
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})
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)})
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]))