コード例 #1
0
def discussion_admin(request):
    user_id = authenticated_userid(request)

    if not user_id:
        return HTTPFound(location='/login?next=/admin/discussions/')

    session = User.default_db

    context = dict(get_default_context(request),
                   discussions=session.query(Discussion))

    if request.method == 'POST':

        g = lambda x: request.POST.get(x, None)

        (topic, slug, name, host, port, ssl, folder, password, username,
         homepage) = (g('topic'), g('slug'), g('mbox_name'), g('host'),
                      g('port'), True if g('ssl') == 'on' else False,
                      g('folder'), g('password'), g('username'), g('homepage'))

        discussion = Discussion(topic=topic, creator_id=user_id, slug=slug)

        # Could raise an exception if there is no/incorrect scheme passed
        discussion.homepage = homepage
        session.add(discussion)
        discussion.apply_side_effects_without_json(request=request)
        discussion.invoke_callbacks_after_creation()

        create_default_permissions(discussion)
        mailbox_class = (MailingList
                         if g('mailing_list_address') else IMAPMailbox)
        mailbox = mailbox_class(
            name=name,
            host=host,
            port=int(port),
            username=username,
            use_ssl=ssl,
            folder=folder,
            password=password,
        )

        if (g('mailing_list_address')):
            mailbox.post_email_address = g('mailing_list_address')
        mailbox.discussion = discussion

    return render_to_response('admin/discussions.jinja2',
                              context,
                              request=request)