Example #1
0
def group_disc_create(request, group_slug):
    group = Group.objects.get(slug=group_slug)
    if not group.is_poster(request.user):
        return forbidden(request)
    if request.method == "POST":
        disc_form = DiscussionCreateForm(request.POST)
        if disc_form.is_valid():
            group = Group.objects.get(slug=group_slug)
            disc = Discussion.objects.create(
                subject=disc_form.cleaned_data['subject'],
                body=disc_form.cleaned_data['body'], 
                parent_id=disc_form.cleaned_data['parent_id'], 
                user=request.user, 
                group=group,
                is_public=not group.moderate_disc(request.user),
                reply_count=None if disc_form.cleaned_data['parent_id'] else 0
            )
            messages.success(request, _("Discussion posted"))
            return_to = (disc_form.cleaned_data['parent_id'] 
                         if disc_form.cleaned_data['parent_id'] 
                         else disc.id)
            return redirect("group_disc_detail", group_slug=group.slug, disc_id=return_to)
    else:
        disc_form = DiscussionCreateForm()
    return render_to_response("groups/group_disc_create.html", locals(), 
                              context_instance=RequestContext(request)) 
def group_disc_create(request, group_slug):
    group = Group.objects.get(slug=group_slug)
    if not group.is_poster(request.user):
        return forbidden(request)
    if request.method == "POST":
        disc_form = DiscussionCreateForm(request.POST)
        if disc_form.is_valid():
            group = Group.objects.get(slug=group_slug)
            disc = Discussion.objects.create(
                subject=disc_form.cleaned_data['subject'],
                body=disc_form.cleaned_data['body'],
                parent_id=disc_form.cleaned_data['parent_id'],
                user=request.user,
                group=group,
                is_public=not group.moderate_disc(request.user),
                reply_count=None if disc_form.cleaned_data['parent_id'] else 0)
            messages.success(request, "Discussion posted")
            return_to = disc_form.cleaned_data[
                'parent_id'] if disc_form.cleaned_data['parent_id'] else disc.id
            return redirect("group_disc_detail",
                            group_slug=group.slug,
                            disc_id=return_to)
    else:
        disc_form = DiscussionCreateForm()
    return render_to_response("groups/group_disc_create.html",
                              locals(),
                              context_instance=RequestContext(request))
Example #3
0
def group_contact_admins(request, group_slug):
    group = Group.objects.get(slug=group_slug)
    from discussions.models import Discussion as GenericDiscussion
    if request.method == "POST":
        disc_form = DiscussionCreateForm(request.POST)
        if disc_form.is_valid():
            disc = GenericDiscussion.objects.create(
                subject="Message to group leaders: %s" % disc_form.cleaned_data['subject'],
                body=disc_form.cleaned_data['body'],
                parent_id=None,
                user=request.user, 
                content_object=group,
                is_public=False,
                disallow_replies=True,
                reply_count=0,
                contact_admin=True,
            )
            messages.success(request, _("Your message has been sent to the group leaders"))
            return redirect(group)
    else:
        disc_form = DiscussionCreateForm()
    return render_to_response("groups/group_disc_contact_admins.html",
                              locals(), 
                              context_instance=RequestContext(request)) 
def group_disc_detail(request, group_slug, disc_id):
    disc = get_object_or_404(Discussion, id=disc_id, parent=None)
    group = Group.objects.get(slug=group_slug)
    is_poster = group.is_poster(request.user)
    is_manager = group.is_user_manager(request.user)
    approve_form = DiscussionApproveForm()
    remove_form = DiscussionRemoveForm()
    discs = Discussion.objects.filter(parent=disc).order_by("created")
    disc_form = DiscussionCreateForm(initial={
        'parent_id': disc.id,
        'subject': "Re: %s" % disc.subject
    })
    return render_to_response("groups/group_disc_detail.html",
                              locals(),
                              context_instance=RequestContext(request))
Example #5
0
            best_choice = part
            break
        if best_choice is None and part.get_content_type() == 'text/html':
            best_choice = part
    if best_choice is None:
        # No text/plain or text/html message was found in the email
        # so we'll just reject it for now.
        # TODO: figure out a sane approach to email content-type handling
        return forbidden(request)
    # TODO: process text/html message differently
    charset = (best_choice.get_content_charset() or best_choice.get_charset()
               or msg.get_content_charset() or msg.get_charset()
               or 'utf-8')
    values['body'] = best_choice.get_payload(decode=True).decode(charset)

    disc_form = DiscussionCreateForm(values)
    if not disc_form.is_valid():
        return forbidden(request)

    values = dict(
        subject=disc_form.cleaned_data['subject'],
        body=disc_form.cleaned_data['body'],
        parent_id=disc_form.cleaned_data['parent_id'],
        user=user,
        group=group,
        is_public=not group.moderate_disc(user),
        reply_count=None if disc_form.cleaned_data['parent_id'] else 0
        )

    new_disc = Discussion.objects.create(**values)