コード例 #1
0
ファイル: discussion.py プロジェクト: pombredanne/idealoom
def discussion2(request, test_session, default_preferences,
                test_adminuser_webrequest):
    """An non-empty Discussion fixture with default preferences"""
    from assembl.models import Discussion
    d = Discussion(topic=u"Second discussion",
                   slug="testdiscussion2",
                   creator=None)
    test_session.add(d)
    test_session.flush()
    d.apply_side_effects_without_json(
        request=test_adminuser_webrequest._base_pyramid_request)
    test_session.flush()

    def fin():
        print("finalizer discussion2")
        test_session.delete(d.table_of_contents)
        test_session.delete(d.root_idea)
        test_session.delete(d.next_synthesis)
        for ut in d.user_templates:
            for ns in ut.notification_subscriptions:
                ns.delete()
            ut.delete()
        preferences = d.preferences
        d.preferences = None
        test_session.delete(preferences)
        test_session.delete(d)
        test_session.flush()

    request.addfinalizer(fin)
    return d
コード例 #2
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)
コード例 #3
0
ファイル: discussion.py プロジェクト: pombredanne/idealoom
def discussion(request, test_session, default_preferences,
               test_adminuser_webrequest):
    """An empty Discussion fixture with default preferences"""
    from assembl.models import Discussion
    from assembl.models.auth import create_default_permissions
    d = Discussion(topic=u"Jack Layton",
                   slug="jacklayton2",
                   subscribe_to_notifications_on_signup=False,
                   creator=None)
    test_session.add(d)
    test_session.flush()
    d.apply_side_effects_without_json(
        request=test_adminuser_webrequest._base_pyramid_request)
    d.discussion_locales = ['en', 'fr', 'de']
    create_default_permissions(d)
    test_session.flush()

    def fin():
        print("finalizer discussion")
        discussion = d
        if inspect(discussion).detached:
            # How did this happen?
            discussion = test_session.query(Discussion).get(d.id)
        for acl in discussion.acls:
            test_session.delete(acl)
        test_session.delete(discussion.table_of_contents)
        test_session.delete(discussion.root_idea)
        test_session.delete(discussion.next_synthesis)
        preferences = discussion.preferences
        discussion.preferences = None
        discussion.preferences_id = None
        for ut in discussion.user_templates:
            for ns in ut.notification_subscriptions:
                ns.delete()
            ut.delete()
        test_session.delete(preferences)
        test_session.delete(discussion)
        test_session.flush()

    request.addfinalizer(fin)
    return d