Ejemplo n.º 1
0
def reply(request, bits, context):
    """
    If called without parameters will display a list of questions
    (via rendering page/content_type/interviews.interview/reply.html template).

    Can be also called as reply/PK/ which will then display a ReplyForm for the given question.

    Raises Http404 on any error or missing permissions.
    """
    interview = context['object']

    interviewees = interview.get_interviewees(request.user)
    context['interviewees'] = interviewees

    if not interviewees:
        # no permission
        raise Http404

    if not bits:
        # list of all questions
        qset = interview.question_set.all()
        context.update(paginate_qset(request, qset))
        return render_to_response(
            get_templates_from_placement('reply.html', context['placement']),
            context,
            context_instance=RequestContext(request)
        )
    elif len(bits) != 1 or request.method != 'POST':
        # some bogus URL
        raise Http404()


    # no point in caching individual questions
    question = get_object_or_404(
            Question,
            pk=bits[0],
            interview=interview
        )

    form = ReplyForm(interview, interviewees, question, request, request.POST)
    if form.is_valid():
        form.save()
        # go back to the question list
        return HttpResponseRedirect('..')

    context['form'] = form
    context['question'] = question

    return render_to_response(
        get_templates_from_placement('answer_form.html', context['placement']),
        context,
        context_instance=RequestContext(request)
    )
Ejemplo n.º 2
0
def result_details(request, context):
    quiz = context['object']
    if not quiz.has_correct_answers:
        raise Http404
    results = request.GET.get(RESULT_FIELD, '').split('|')
    if len(results) != len(quiz.questions):
        raise Http404

    questions = []
    for question, q_res in zip(quiz.questions, results):
        q_id, id_list = q_res.split(':')
        choices = question.choices
        if question.allow_multiple:
            cl = set(id_list.split(','))
            for ch in choices:
                if str(ch.id) in cl:
                    ch.chosen = True
        else:
            for ch in choices:
                if str(ch.id) == id_list:
                    ch.chosen = True
                    break
        questions.append((question, choices))

    context['questions'] = questions

    return render_to_response(
            get_templates_from_placement('result_detail.html', context['placement']),
            context,
            context_instance=RequestContext(request)
        )
Ejemplo n.º 3
0
def list_comments(request, context):
    # basic queryset
    qs = comments.get_model().objects.for_model(context['object']).order_by('tree_path')

    # only individual branches requested
    if 'ids' in request.GET:
        ids = request.GET.getlist('ids')
        # branch is everything whose tree_path begins with the same prefix
        qs = qs.filter(reduce(operator.or_, map(lambda x: Q(tree_path__startswith=x.zfill(10)), ids)))

    # pagination
    if 'p' in request.GET and request.GET['p'].isdigit():
        page_no = int(request.GET['p'])
    else:
        page_no = 1

    paginate_by = getattr(settings, 'COMMENTS_PAGINATE_BY', 50)
    paginator = Paginator(qs, paginate_by)

    if page_no > paginator.num_pages or page_no < 1:
        raise Http404()

    page = paginator.page(page_no)
    context.update({
        'comment_list': page.object_list,
        'page': page,
        'is_paginated': paginator.num_pages > 1,
        'results_per_page': paginate_by,
    })

    return render_to_response(
        get_templates_from_placement('comment_list.html', context['placement']),
        context,
        RequestContext(request)
    )
Ejemplo n.º 4
0
Archivo: views.py Proyecto: whit/ella
def result_details(request, context):
    quiz = context['object']
    if not quiz.has_correct_answers:
        raise Http404
    results = request.GET.get(RESULT_FIELD, '').split('|')
    if len(results) != len(quiz.questions):
        raise Http404

    questions = []
    for question, q_res in zip(quiz.questions, results):
        q_id, id_list = q_res.split(':')
        choices = question.choices
        if question.allow_multiple:
            cl = set(id_list.split(','))
            for ch in choices:
                if str(ch.id) in cl:
                    ch.chosen = True
        else:
            for ch in choices:
                if str(ch.id) == id_list:
                    ch.chosen = True
                    break
        questions.append((question, choices))

    context['questions'] = questions

    return render_to_response(get_templates_from_placement(
        'result_detail.html', context['placement']),
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 5
0
Archivo: views.py Proyecto: whit/ella
def detail(request, context):
    """ Custom object detail function that adds a QuestionForm to the context. """
    interview = context['object']
    page_no = get_page_no(request)
    qset = interview.get_questions()
    paginator = QuerySetPaginator(qset,
                                  interviews_settings.PAGINATION_PER_PAGE)

    if page_no > paginator.num_pages or page_no < 1:
        raise Http404

    page = paginator.page(page_no)

    interviewees = interview.get_interviewees(request.user)
    context.update({
        'interviewees': interviewees,
        'is_paginated': paginator.num_pages > 1,
        'results_per_page': interviews_settings.PAGINATION_PER_PAGE,
        'page': page,
        'form': QuestionForm(request),
        'questions': page.object_list,
    })

    return render_to_response(get_templates_from_placement(
        'object.html', context['placement']),
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 6
0
def detail(request, context):
    """ Custom object detail function that adds a QuestionForm to the context. """
    interview = context['object']
    page_no = get_page_no(request)
    qset = interview.get_questions()
    paginator = QuerySetPaginator(qset, INTERVIEW_PAGINATION_PER_PAGE)

    if page_no > paginator.num_pages or page_no < 1:
        raise Http404

    page = paginator.page(page_no)

    interviewees = interview.get_interviewees(request.user)
    context.update({
        'interviewees': interviewees,
        'is_paginated': paginator.num_pages > 1,
        'results_per_page': INTERVIEW_PAGINATION_PER_PAGE,
        'page': page,
        'form' : QuestionForm(request=request),
        'questions' : page.object_list,
})

    return render_to_response(
        get_templates_from_placement('object.html', context['placement']),
        context,
        context_instance=RequestContext(request)
)
Ejemplo n.º 7
0
Archivo: views.py Proyecto: whit/ella
def contest_finish(request, context, qforms, contestant_form):
    contest = context['object']
    email = contestant_form.cleaned_data['email']
    if Contestant.objects.filter(email=email, contest=contest).count() > 0:
        context.update({
            'duplicate': True,
            'forms': qforms,
            'contestant_form': contestant_form,
        })
        return render_to_response(get_templates_from_placement(
            'form.html', context['placement']),
                                  context,
                                  context_instance=RequestContext(request))

    choices = '|'.join(
        '%d:%s' % (question.id, question.allow_multiple and ','.join(
            str(c.id)
            for c in sorted(f.cleaned_data['choice'], key=lambda ch: ch.id))
                   or f.cleaned_data['choice'].id)
        for question, f in sorted(qforms, key=lambda q: q[0].id))
    c = Contestant(contest=contest,
                   choices=choices,
                   **contestant_form.cleaned_data)
    if request.user.is_authenticated():
        c.user = request.user
    c.save()
    return HttpResponseRedirect(contest.get_absolute_url() +
                                slugify(ugettext('result')) + u'/')
Ejemplo n.º 8
0
def contest_finish(request, context, qforms, contestant_form):
    contest = context['object']
    email = contestant_form.cleaned_data['email']
    if Contestant.objects.filter(email=email, contest=contest).count() > 0:
        context.update({
                'duplicate' : True,
                'forms' : qforms,
                'contestant_form' : contestant_form,
            })
        return render_to_response(
            get_templates_from_placement('form.html', context['placement']),
            context,
            context_instance=RequestContext(request)
        )

    choices = '|'.join(
            '%d:%s' % (
                    question.id,
                    question.allow_multiple and ','.join(str(c.id) for c in sorted(f.cleaned_data['choice'], key=lambda ch: ch.id)) or f.cleaned_data['choice'].id)
                for question, f in sorted(qforms,key=lambda q: q[0].id)
        )
    c = Contestant(
            contest=contest,
            choices=choices,
            **contestant_form.cleaned_data
        )
    if request.user.is_authenticated():
        c.user = request.user
    c.save()
    return HttpResponseRedirect(contest.get_absolute_url() +slugify(ugettext('result')) + u'/')
Ejemplo n.º 9
0
    def done(self, request, form_list):
        points = 0
        questions = []
        results = []
        for question, f in zip(self.quiz.questions, form_list):
            choices = question.choices
            if not question.allow_no_choice:
                if question.allow_multiple:
                    points += sum(c.points for c in f.cleaned_data['choice'])
                    results.append('%d:%s' % (question.id, ','.join(str(c.id) for c in f.cleaned_data['choice'])))
                else:
                    points += f.cleaned_data['choice'].points
                    results.append('%d:%s' % (question.id, f.cleaned_data['choice'].id))

        results = '|'.join(results)

        result = self.quiz.get_result(points)
        result.count += 1
        result.save()
        self.extra_context.update(
                {
                    'result' : result,
                    'points' : points,
                    'results' : results,
                    'result_field': RESULT_FIELD,
                    'result_action' : self.quiz.get_absolute_url() + slugify(_('results')) + '/'
                }
            )
        return render_to_response(
                get_templates_from_placement('result.html', self.extra_context['placement']),
                self.extra_context,
                context_instance=RequestContext(request)
            )
Ejemplo n.º 10
0
Archivo: views.py Proyecto: whit/ella
def mail_success(request, context):
    if request.is_ajax():
        tpl = 'sendmail/ajax-success.html'
    else:
        tpl = 'sendmail/success.html'

    templates = get_templates_from_placement(tpl, context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 11
0
def mail_success(request, context):
    if request.is_ajax():
        tpl = 'sendmail/ajax-success.html'
    else:
        tpl = 'sendmail/success.html'

    templates = get_templates_from_placement(tpl, context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 12
0
def contest_conditions(request, bits, context):
    if bits:
        raise Http404

    return render_to_response(
        get_templates_from_placement('conditions.html', context['placement']),
        context,
        context_instance=RequestContext(request)
    )
Ejemplo n.º 13
0
Archivo: views.py Proyecto: whit/ella
def mail_error(request, context):
    "Problem in SMTP server, mail didn't sent"

    if request.is_ajax():
        tpl = 'sendmail/ajax-error.html'
    else:
        tpl = 'sendmail/sending-error.html'

    templates = get_templates_from_placement(tpl, context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 14
0
def mail_error(request, context):
    "Problem in SMTP server, mail didn't sent"

    if request.is_ajax():
        tpl = 'sendmail/ajax-error.html'
    else:
        tpl = 'sendmail/sending-error.html'

    templates = get_templates_from_placement(tpl, context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 15
0
Archivo: views.py Proyecto: whit/ella
def unanswered(request, context):
    """ Display unanswered questions via rendering page/content_type/interviews.interview/unanswered.html template. """
    interview = context['object']
    interviewees = interview.get_interviewees(request.user)
    context['interviewees'] = interviewees
    context['form'] = QuestionForm(request)
    # result pagination
    qset = interview.unanswered_questions()
    context.update(paginate_qset(request, qset))
    return render_to_response(get_templates_from_placement(
        'unanswered.html', context['placement']),
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 16
0
def unanswered(request, context):
    """ Display unanswered questions via rendering page/content_type/interviews.interview/unanswered.html template. """
    interview = context['object']
    interviewees = interview.get_interviewees(request.user)
    context['interviewees'] = interviewees
    context['form'] = QuestionForm(request)
    # result pagination
    qset = interview.unanswered_questions()
    context.update(paginate_qset(request, qset))
    return render_to_response(
        get_templates_from_placement('unanswered.html', context['placement']),
        context,
        context_instance=RequestContext(request)
    )
Ejemplo n.º 17
0
Archivo: views.py Proyecto: whit/ella
def new_mail(request, context):
    init_props = {
        'target': '%d:%d' % (context['content_type'].id, context['object']._get_pk_val()),
    }
    form = SendMailForm(init_props=init_props)
    context['form'] = form

    if request.is_ajax():
        tpl = 'sendmail/ajax-form.html'
    else:
        tpl = 'sendmail/form.html'

    templates = get_templates_from_placement(tpl, context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 18
0
def new_mail(request, context):
    init_props = {
        'target': '%d:%d' % (context['content_type'].id, context['object']._get_pk_val()),
    }
    form = SendMailForm(init_props=init_props)
    context['form'] = form

    if request.is_ajax():
        tpl = 'sendmail/ajax-form.html'
    else:
        tpl = 'sendmail/form.html'

    templates = get_templates_from_placement(tpl, context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 19
0
def new_comment(request, context, reply=None):
    """new comment for specified object"""
    init_props = {
        'target': '%d:%d' % (context['content_type'].id, context['object']._get_pk_val()),
        'options' : FORM_OPTIONS['UNAUTHORIZED_ONLY'],
}
    if reply:
        init_props['parent'] = reply
        context.update({
                'reply' : True,
                'parent' : get_cached_object_or_404(Comment, pk=reply, target_ct=context['content_type'], target_id=context['object']._get_pk_val()),
})
    form = CommentForm(init_props=init_props)
    context['form'] = form
    templates = get_templates_from_placement('comments/form.html', context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 20
0
def reply(request, context, question_id):
    """

    Can be also called as reply/PK/ which will then display a ReplyForm for the given question.

    Raises Http404 on any error or missing permissions.
    """
    interview = context['object']

    interviewees = interview.get_interviewees(request.user)
    context['interviewees'] = interviewees

    if not interviewees:
        # no permission
        raise Http404

    # no point in caching individual questions
    question = get_object_or_404(
            Question,
            pk=question_id,
            interview=interview
        )

    if request.method.upper() == 'POST':
        form = ReplyForm(interview, interviewees, question, request, request.POST)
        if form.is_valid():
            form.save()
            # go back to the question list
            return HttpResponseRedirect('..')
        else:
            # stay on form
            pass
    else:
        form = ReplyForm(interview, interviewees, question, request)

    context['form'] = form
    context['question'] = question

    return render_to_response(
        get_templates_from_placement('answer_form.html', context['placement']),
        context,
        context_instance=RequestContext(request)
    )
Ejemplo n.º 21
0
Archivo: views.py Proyecto: whit/ella
def list_comments(request, context):
    """list comments for specified object"""
    comment_list = Comment.objects.get_list_for_object(context['object'])
    if 'ids' in request.GET:
        ids = set(request.GET.getlist('ids'))
        new_comment_list = []
        for c in comment_list:
            if str(c.id) in ids:
                new_comment_list.append(c)
            elif '/' in c.path and c.path[0:c.path.find('/')] in ids:
                new_comment_list.append(c)
        comment_list = new_comment_list

    context.update({
            'comment_count' : Comment.objects.get_count_for_object(context['object']),
            'comment_list' : comment_list,
        })
    templates = get_templates_from_placement('comments/list.html', context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 22
0
Archivo: views.py Proyecto: whit/ella
def list_comments(request, context):

    # basic queryset
    qs = comments.get_model().objects.for_model(
        context['object']).order_by('tree_path')

    # XXX factor out into a manager
    qs = qs.filter(is_public=True)
    if getattr(settings, 'COMMENTS_HIDE_REMOVED', False):
        qs = qs.filter(is_removed=False)

    # only individual branches requested
    if 'ids' in request.GET:
        ids = request.GET.getlist('ids')
        # branch is everything whose tree_path begins with the same prefix
        qs = qs.filter(
            reduce(operator.or_,
                   map(lambda x: Q(tree_path__startswith=x.zfill(10)), ids)))

    # pagination
    if 'p' in request.GET and request.GET['p'].isdigit():
        page_no = int(request.GET['p'])
    else:
        page_no = 1

    paginate_by = getattr(settings, 'COMMENTS_PAGINATE_BY', 50)
    paginator = Paginator(qs, paginate_by)

    if page_no > paginator.num_pages or page_no < 1:
        raise Http404()

    page = paginator.page(page_no)
    context.update({
        'comment_list': page.object_list,
        'page': page,
        'is_paginated': paginator.num_pages > 1,
        'results_per_page': paginate_by,
    })

    return render_to_response(
        get_templates_from_placement('comment_list.html',
                                     context['placement']), context,
        RequestContext(request))
Ejemplo n.º 23
0
Archivo: views.py Proyecto: whit/ella
def new_comment(request, context, reply=None):
    """new comment for specified object"""
    init_props = {
        'target': '%d:%d' % (context['content_type'].id, context['object']._get_pk_val()),
        'options' : FORM_OPTIONS['UNAUTHORIZED_ONLY'],
    }
    if reply:
        init_props['parent'] = reply
        context.update({
                'reply' : True,
                'parent' : get_cached_object_or_404(
                        Comment,
                        pk=reply,
                        target_ct=context['content_type'],
                        target_id=context['object']._get_pk_val()
                    ),
            })
    form = CommentForm(init_props=init_props)
    context['form'] = form
    templates = get_templates_from_placement('comments/form.html', context['placement'])
    return render_to_response(templates, context, context_instance=RequestContext(request))
Ejemplo n.º 24
0
Archivo: views.py Proyecto: whit/ella
def list_questions(request, context):
    """
    Displays a list of questions (via rendering
    page/content_type/interviews.interview/reply.html template).
    """
    interview = context['object']

    interviewees = interview.get_interviewees(request.user)
    context['interviewees'] = interviewees

    if not interviewees:
        # no permission
        raise Http404

    # list of all questions
    qset = interview.question_set.all()
    context.update(paginate_qset(request, qset))
    return render_to_response(get_templates_from_placement(
        'reply.html', context['placement']),
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 25
0
def list_questions(request, context):
    """
    Displays a list of questions (via rendering
    page/content_type/interviews.interview/reply.html template).
    """
    interview = context['object']

    interviewees = interview.get_interviewees(request.user)
    context['interviewees'] = interviewees

    if not interviewees:
        # no permission
        raise Http404

    # list of all questions
    qset = interview.question_set.all()
    context.update(paginate_qset(request, qset))
    return render_to_response(
        get_templates_from_placement('reply.html', context['placement']),
        context,
        context_instance=RequestContext(request)
    )
Ejemplo n.º 26
0
Archivo: views.py Proyecto: whit/ella
def reply(request, context, question_id):
    """

    Can be also called as reply/PK/ which will then display a ReplyForm for the given question.

    Raises Http404 on any error or missing permissions.
    """
    interview = context['object']

    interviewees = interview.get_interviewees(request.user)
    context['interviewees'] = interviewees

    if not interviewees:
        # no permission
        raise Http404

    # no point in caching individual questions
    question = get_object_or_404(Question, pk=question_id, interview=interview)

    if request.method.upper() == 'POST':
        form = ReplyForm(interview, interviewees, question, request,
                         request.POST)
        if form.is_valid():
            form.save()
            # go back to the question list
            return HttpResponseRedirect('..')
        else:
            # stay on form
            pass
    else:
        form = ReplyForm(interview, interviewees, question, request)

    context['form'] = form
    context['question'] = question

    return render_to_response(get_templates_from_placement(
        'answer_form.html', context['placement']),
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 27
0
Archivo: views.py Proyecto: whit/ella
    def done(self, request, form_list):
        points = 0
        questions = []
        results = []
        for question, f in zip(self.quiz.questions, form_list):
            choices = question.choices
            if not question.allow_no_choice:
                if question.allow_multiple:
                    points += sum(c.points for c in f.cleaned_data['choice'])
                    results.append('%d:%s' % (question.id, ','.join(
                        str(c.id) for c in f.cleaned_data['choice'])))
                else:
                    points += f.cleaned_data['choice'].points
                    results.append('%d:%s' %
                                   (question.id, f.cleaned_data['choice'].id))

        results = '|'.join(results)

        result = self.quiz.get_result(points)
        result.count += 1
        result.save()
        self.extra_context.update({
            'result':
            result,
            'points':
            points,
            'results':
            results,
            'result_field':
            RESULT_FIELD,
            'result_action':
            self.quiz.get_absolute_url() + slugify(_('results')) + '/'
        })
        return render_to_response(get_templates_from_placement(
            'result.html', self.extra_context['placement']),
                                  self.extra_context,
                                  context_instance=RequestContext(request))
Ejemplo n.º 28
0
Archivo: views.py Proyecto: whit/ella
def contest_vote(request, context):

    contest = context['object']

    forms = []
    forms_are_valid = True
    # question forms
    for question in contest.questions:
        form = QuestionForm(question)(request.POST or None,
                                      prefix=str(question.id))
        if not form.is_valid():
            forms_are_valid = False
        forms.append((question, form))
    # contestant form
    initial = {}
    if request.user.is_authenticated():
        initial['name'] = request.user.first_name
        initial['surname'] = request.user.last_name
        initial['email'] = request.user.email
    contestant_form = ContestantForm(request.POST or None, initial=initial)
    if not contestant_form.is_valid():
        forms_are_valid = False
    # saving contestant
    if forms_are_valid and contest.is_active():
        return contest_finish(request, context, forms, contestant_form)
    context.update({
        'forms': forms,
        'contestant_form': contestant_form,
        'activity_not_yet_active': polls_settings.ACTIVITY_NOT_YET_ACTIVE,
        'activity_active': polls_settings.ACTIVITY_ACTIVE,
        'activity_closed': polls_settings.ACTIVITY_CLOSED
    })
    return render_to_response(get_templates_from_placement(
        'form.html', context['placement']),
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 29
0
def contest_vote(request, context):

    contest = context['object']

    forms = []
    forms_are_valid = True
    # question forms
    for question in contest.questions:
        form = QuestionForm(question)(request.POST or None, prefix=str(question.id))
        if not form.is_valid():
            forms_are_valid = False
        forms.append((question, form))
    # contestant form
    initial = {}
    if request.user.is_authenticated():
        initial['name'] = request.user.first_name
        initial['surname'] = request.user.last_name
        initial['email'] = request.user.email
    contestant_form = ContestantForm(request.POST or None, initial=initial)
    if not contestant_form.is_valid():
        forms_are_valid = False
    # saving contestant
    if forms_are_valid and contest.is_active():
        return contest_finish(request, context, forms, contestant_form)
    context.update({
            'forms' : forms,
            'contestant_form' : contestant_form,
            'activity_not_yet_active' : polls_settings.ACTIVITY_NOT_YET_ACTIVE,
            'activity_active' : polls_settings.ACTIVITY_ACTIVE,
            'activity_closed' : polls_settings.ACTIVITY_CLOSED
        })
    return render_to_response(
        get_templates_from_placement('form.html', context['placement']),
        context,
        context_instance=RequestContext(request)
    )
Ejemplo n.º 30
0
Archivo: views.py Proyecto: whit/ella
def post_comment(request, context, parent_id=None):
    'Mostly copy-pasted from django.contrib.comments.views.comments'
    opts = CommentOptionsObject.objects.get_for_object(context['object'])
    if opts.blocked:
        raise Http404('Comments are blocked for this object.')
    context['opts'] = opts

    parent = None
    if parent_id:
        parent = get_object_or_404(comments.get_model(), pk=parent_id)

    ip_address = request.META.get('REMOTE_ADDR', None)
    try:
        ip_ban = BannedIP.objects.get(ip_address=ip_address)
    except BannedIP.DoesNotExist:
        ip_ban = None

    if request.method != 'POST' or ip_ban:
        initial = {}
        if parent:
            if parent.title.startswith('Re:'):
                initial['title'] = parent.title
            else:
                initial['title'] = u'Re: %s' % parent.title
        form = comments.get_form()(context['object'],
                                   parent=parent_id,
                                   initial=initial)
        context.update({
            'parent': parent,
            'form': form,
            'ip_ban': ip_ban,
        })
        return render_to_response(
            get_templates_from_placement('comment_form.html',
                                         context['placement']), context,
            RequestContext(request))

    # Fill out some initial data fields from an authenticated user, if present
    data = request.POST.copy()

    if request.user.is_authenticated():
        if not data.get('name', ''):
            data["name"] = request.user.get_full_name(
            ) or request.user.username
        if not data.get('email', ''):
            data["email"] = request.user.email

    # construct the form
    form = comments.get_form()(context['object'], data=data, parent=parent_id)

    # Check security information
    if form.security_errors():
        return CommentPostBadRequest(
            "The comment form failed security verification: %s" % \
                escape(str(form.security_errors())))

    # Do we want to preview the comment?
    preview = "preview" in data

    # Check to see if the POST data overrides the view's next argument.
    next = data.get(
        "next", "%s%s/" %
        (context['placement'].get_absolute_url(), slugify(_('comments'))))

    # If there are errors or if we requested a preview show the comment
    if form.errors or preview:
        context.update({
            "form": form,
            'parent': parent,
            "next": next,
        })
        return render_to_response(
            get_templates_from_placement(
                form.errors and 'comment_form.html' or 'comment_preview.html',
                context['placement']), context, RequestContext(request))

    # Otherwise create the comment
    comment = form.get_comment_object()
    comment.ip_address = request.META.get("REMOTE_ADDR", None)
    if request.user.is_authenticated():
        comment.user = request.user

    # Signal that the comment is about to be saved
    responses = signals.comment_will_be_posted.send(sender=comment.__class__,
                                                    comment=comment,
                                                    request=request)

    for (receiver, response) in responses:
        if response == False:
            return CommentPostBadRequest(
                "comment_will_be_posted receiver %r killed the comment" %
                receiver.__name__)

    if opts.premoderated:
        comment.is_public = False

    # Save the comment and signal that it was saved
    comment.save()
    signals.comment_was_posted.send(sender=comment.__class__,
                                    comment=comment,
                                    request=request)

    return HttpResponseRedirect(next)
Ejemplo n.º 31
0
 def form_template(self):
     if self.request.is_ajax():
         tpl = 'sendmail/ajax-form.html'
     else:
         tpl = 'sendmail/form.html'
     return get_templates_from_placement(tpl, self.state['placement'])
Ejemplo n.º 32
0
Archivo: views.py Proyecto: whit/ella
def contest_conditions(request, context):
    return render_to_response(get_templates_from_placement(
        'conditions.html', context['placement']),
                              context,
                              context_instance=RequestContext(request))
Ejemplo n.º 33
0
        position = item_index + 1

    context['object'] = target

    context.update({
            'gallery': gallery,
            'item': item,
            'object' : target,
            'item_list' : item_sorted_dict.values(),
            'next' : next,
            'previous' : previous,
            'count' : count,
            'count_str' : count_str,
            'position' : position,
    })

    return render_to_response(
        get_templates_from_placement('item.html', context['placement']),
        context,
        context_instance=RequestContext(request),
    )

def items(request, bits, context):
    " Wrapper around gallery_item_detail. "
    if len(bits) != 1:
        raise Http404()

    return gallery_item_detail(request, context, bits[0])


Ejemplo n.º 34
0
 def form_template(self):
     return get_templates_from_placement('ask_form.html', self.state['placement'])
Ejemplo n.º 35
0
Archivo: views.py Proyecto: Almad/ella
def post_comment(request, context, parent_id=None):
    'Mostly copy-pasted from django.contrib.comments.views.comments'
    opts = CommentOptionsObject.objects.get_for_object(context['object'])
    if opts.blocked:
        raise Http404('Comments is blocked for this object.')

    parent = None
    if parent_id:
        parent = get_object_or_404(comments.get_model(), pk=parent_id)

    if request.method != 'POST':
        initial = {}
        if parent:
            if parent.title.startswith('Re:'):
                initial['title'] = parent.title
            else:
                initial['title'] = u'Re: %s' % parent.title
        form = comments.get_form()(context['object'], parent=parent_id, initial=initial)
        context.update({
                'parent': parent,
                'form': form,
            })
        return render_to_response(
            get_templates_from_placement('comment_form.html', context['placement']),
            context,
            RequestContext(request)
        )

    # Fill out some initial data fields from an authenticated user, if present
    data = request.POST.copy()

    if request.user.is_authenticated():
        if not data.get('name', ''):
            data["name"] = request.user.get_full_name() or request.user.username
        if not data.get('email', ''):
            data["email"] = request.user.email

    # construct the form
    form = comments.get_form()(context['object'], data=data, parent=parent_id)

    # Check security information
    if form.security_errors():
        return CommentPostBadRequest(
            "The comment form failed security verification: %s" % \
                escape(str(form.security_errors())))

    # Do we want to preview the comment?
    preview = "preview" in data

    # Check to see if the POST data overrides the view's next argument.
    next = data.get("next", "%s%s/" % (context['placement'].get_absolute_url(), slugify(_('comments'))))

    # If there are errors or if we requested a preview show the comment
    if form.errors or preview:
        context.update({
                "form" : form,
                'parent': parent,
                "next": next,
            })
        return render_to_response(
            get_templates_from_placement(form.errors and 'comment_form.html' or 'comment_preview.html', context['placement']),
            context,
            RequestContext(request)
        )

    # Otherwise create the comment
    comment = form.get_comment_object()
    comment.ip_address = request.META.get("REMOTE_ADDR", None)
    if request.user.is_authenticated():
        comment.user = request.user

    # Signal that the comment is about to be saved
    responses = signals.comment_will_be_posted.send(
        sender  = comment.__class__,
        comment = comment,
        request = request
    )

    for (receiver, response) in responses:
        if response == False:
            return CommentPostBadRequest(
                "comment_will_be_posted receiver %r killed the comment" % receiver.__name__)

    # Save the comment and signal that it was saved
    comment.save()
    signals.comment_was_posted.send(
        sender  = comment.__class__,
        comment = comment,
        request = request
    )

    return HttpResponseRedirect(next)
Ejemplo n.º 36
0
Archivo: views.py Proyecto: whit/ella
 def get_template(self, step):
     return get_templates_from_placement('step.html',
                                         self.extra_context['placement'])
Ejemplo n.º 37
0
Archivo: views.py Proyecto: whit/ella
 def form_template(self):
     return get_templates_from_placement('comments/form.html', placement=self.state['placement'])
Ejemplo n.º 38
0
def contest_result(request, context):
    return render_to_response(
        get_templates_from_placement('result.html', context['placement']),
        context,
        context_instance=RequestContext(request)
    )
Ejemplo n.º 39
0
Archivo: views.py Proyecto: whit/ella
 def form_template(self):
     return get_templates_from_placement('ask_form.html',
                                         self.state['placement'])
Ejemplo n.º 40
0
Archivo: views.py Proyecto: whit/ella
 def preview_template(self):
     return get_templates_from_placement('ask_preview.html',
                                         self.state['placement'])
Ejemplo n.º 41
0
            'gallery': gallery,
            'item': item,
            'object' : target,
            'item_list' : item_sorted_dict.values(),
            'next' : next,
            'previous' : previous,
            'count' : count,
            'count_str' : count_str,
            'position' : position,
    })

    if request.is_ajax():
        template_name = "item-ajax.html"
    else:
        template_name = "item.html"

    return render_to_response(
        get_templates_from_placement(template_name, context['placement']),
        context,
        context_instance=RequestContext(request),
    )

def items(request, bits, context):
    " Wrapper around gallery_item_detail. "
    if len(bits) != 1:
        raise Http404()

    return gallery_item_detail(request, context, bits[0])


Ejemplo n.º 42
0
 def preview_template(self):
     return get_templates_from_placement('ask_preview.html', self.state['placement'])
Ejemplo n.º 43
0
Archivo: views.py Proyecto: whit/ella
 def form_template(self):
     if self.request.is_ajax():
         tpl = 'sendmail/ajax-form.html'
     else:
         tpl = 'sendmail/form.html'
     return get_templates_from_placement(tpl, self.state['placement'])
Ejemplo n.º 44
0
 def get_template(self, step):
     return get_templates_from_placement('step.html', self.extra_context['placement'])
Ejemplo n.º 45
0
Archivo: views.py Proyecto: whit/ella
 def preview_template(self):
     return get_templates_from_placement('comments/preview.html', placement=self.state['placement'])
Ejemplo n.º 46
0
 def get_template(self):
     if (self.step + 1) < len(self.form_list):
         return get_templates_from_placement('step.html', self.extra_context['placement'])
     return get_templates_from_placement('contest_form', self.extra_context['placement'])
Ejemplo n.º 47
0
        position = item_index + 1

    context['object'] = target

    context.update({
            'gallery': gallery,
            'item': item,
            'object' : target,
            'item_list' : item_sorted_dict.values(),
            'next' : next,
            'previous' : previous,
            'count' : count,
            'count_str' : count_str,
            'position' : position,
    })

    if request.is_ajax():
        template_name = "item-ajax.html"
    else:
        template_name = "item.html"

    response = render_to_response(
        get_templates_from_placement(template_name, context['placement']),
        context,
        context_instance=RequestContext(request),
    )

    patch_vary_headers( response, ('X-Requested-With',) )
    return response