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)