コード例 #1
0
def add_forum(context, request):
    """
    Display add forum form
    """
    def add_forum_submit(context, request, deserialized, bind_params):
        """
        Add the forum to the database
        """
        category = bind_params.get("category")
        bb.add_forum(deserialized.get("name"), deserialized.get("description"),
                     category)
        request.session.flash(s.show_setting("INFO_ACL_UPDATED"), INFO)
        return redirect(request, 'list_forum', category_id=category.name)

    category = bb.get_category(request.matchdict.get('category_id'))
    forum_id = request.matchdict.get('forum_id')
    result = rapid_deform(context,
                          request,
                          EditForum,
                          add_forum_submit,
                          name=forum_id,
                          category=category,
                          cache=False)
    if isinstance(result, dict):
        message = "Adding a Forum"
        result.update({"title": message, "header": message})
    return result
コード例 #2
0
def create_thread(context, request):
    """
    Display create thread form
    """
    def create_thread_submit(context, request, deserialized, bind_params):
        """
        Add submitted thread and post to database
        """
        user = u.show(get_username(request))
        thread = bb.add_thread(deserialized.get("title"),
                               deserialized.get("description"),
                               deserialized.get("body"), user,
                               bind_params['forum'])
        return redirect(request, 'thread', threadid=thread.id)

    forum = bb.get_forum(request.matchdict.get('forumid'))
    result = rapid_deform(context,
                          request,
                          ThreadSchema,
                          create_thread_submit,
                          forum=forum)
    if isinstance(result, dict):
        message = "Create Thread"
        result.update({"title": message, "header": message})
    return result
コード例 #3
0
def edit_post(context, request):
    """
    Display edit post form
    """
    def edit_post_submit(context, request, deserialized, bind_params):
        """
        Save edited post to database
        """
        bind_params['post'].name = deserialized['title']
        bind_params['post'].article = deserialized['body']
        return redirect(request,
                        'thread',
                        threadid=bind_params['post'].thread.id)

    post = bb.get_post(request.matchdict.get('postid'))
    if (has_permission('forum_mod_edit', context, request)
            or post.user == u.show(get_username(request))):
        result = rapid_deform(context,
                              request,
                              PostSchema,
                              edit_post_submit,
                              thread_name=post.name,
                              body=post.article,
                              post=post)
        if isinstance(result, dict):
            message = "Editing Post From " + post.name
            result.update({"title": message, "header": message})
        return result
    else:
        raise HTTPForbidden
コード例 #4
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_add_dependency(context, request):
    check_owner(context, request)
    def gamedep_add_dependency_submit(context, request, deserialized,
                                      bind_params):
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        page_id = request.matchdict.get('page_id')
        dep_id = request.matchdict.get('depid')
        form_rev_id = deserialized.get("revision")
        form_dep_id = deserialized.get("dependency")
        if not form_rev_id:
            return HTTPFound(location=current_route_url(request)
                                      + "/%s" % form_dep_id)
        else:
            if form_rev_id == "-1":
                g.create_dependency(page_id, dep_id)
            else:
                g.create_dependency(page_id, dep_id, form_rev_id)
            dep_name = g.show_dependency(g.show(page_id,
                                                no_revision_error=False)[0],
                                         dep_id).page.name
            request.session.flash(s.show_setting("INFO_DEPENDENCY_ADDED")
                                  % dep_name, INFO)
            return redirect(request, "gamedep_item", page_id=page_id,
                            type=gamedeptype)

    depid = request.matchdict.get('depid')
    gamedeptype = request.matchdict.get('type')
    if not depid:
        schema = EditDependencySchemaOne
    else:
        schema = EditDependencySchemaTwo
    return rapid_deform(context, request, schema,
                        gamedep_add_dependency_submit,
                        gamedep_type=gamedeptype, depid=depid)
コード例 #5
0
def edit_forum_category(context, request):
    """
    Display edit forum category form
    """
    def edit_forum_category_submit(context, request, deserialized,
                                   bind_params):
        """
        Save edited forum category to database
        """
        groups = set([g for g in bind_params["forum_categories"]])
        deserialized_groups = set(deserialized['forum_categories'])
        for item in deserialized_groups - groups:
            bb.add_category(item)
        for item in groups - deserialized_groups:
            bb.delete_category(item)
        request.session.flash(s.show_setting("INFO_FORUM_CATEGORY_UPDATED"),
                              INFO)
        return redirect(request, 'category_list')

    groups = bb.list_categories().all()
    result = rapid_deform(
        context,
        request,
        ForumCategory,
        edit_forum_category_submit,
        forum_categories=[x['name'] for x in serialize_relation(groups)])
    if isinstance(result, dict):
        message = "Editing Forum Categorys"
        result.update({"title": message, "header": message})
    return result
コード例 #6
0
def edit_forum(context, request):
    """
    Display edit forum form
    """
    def edit_forum_submit(context, request, deserialized, bind_params):
        """
        Save edited forum to database
        """
        forum = bind_params.get("forum")
        forum.name = deserialized.get("name")
        forum.description = deserialized.get("description")
        request.session.flash(s.show_setting("INFO_ACL_UPDATED"), INFO)
        return redirect(request, 'list_forum', category_id=forum.category.name)

    forum = bb.get_forum(request.matchdict.get('forum_id'))
    result = rapid_deform(context,
                          request,
                          EditForum,
                          edit_forum_submit,
                          forum=forum,
                          cache=False)
    if isinstance(result, dict):
        message = "Editing Forum"
        result.update({"title": message, "header": message})
    return result
コード例 #7
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_edit_revision(context, request):
    check_owner(context, request)

    def gamedep_edit_revision_submit(context, request, deserialized,
                                     bind_params):
        page_id, revision = get_pageid_revision(request)
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        frmversion = deserialized.get("version")
        frmmodule_type = deserialized.get("moduletype")
        if bind_params['update']:
            g.update_revision(page_id, revision, frmversion, frmmodule_type)
            request.session.flash(
                s.show_setting("INFO_REVISION_UPDATED") %
                (frmversion, page_id), INFO)
        else:
            try:
                g.create_revision(page_id, frmversion, frmmodule_type)
                request.session.flash(
                    s.show_setting("INFO_REVISION_CREATED") %
                    (frmversion, page_id), INFO)
            except GameDepFound:
                request.session.flash(
                    s.show_setting("ERROR_FOUND") % frmversion, ERROR)

        return redirect(request,
                        "gamedep_item",
                        page_id=page_id,
                        type=gamedeptype)

    gamedeptype = request.matchdict.get('type')
    g = GameDepLib(gamedeptype)
    page_id = request.matchdict.get('page_id')
    revision = request.matchdict.get('revision')
    update = False
    if revision:
        update = True
        dbrevision = g.show(page_id, revision)[1]
        dbversion = dbrevision.version
        dbmoduletype_name = dbrevision.moduletype
    else:
        dbrevision = None
        dbversion = 0.1
        dbmoduletype_name = "file"
    return rapid_deform(context,
                        request,
                        EditRevisionSchema,
                        gamedep_edit_revision_submit,
                        version=dbversion,
                        moduletype=dbmoduletype_name,
                        gamedep_type=gamedeptype,
                        update=update)
コード例 #8
0
def userarea_admin_restore_articles(context, request):
    def restore_backup_submit(context, request, deserialized, bind_params):
        a = ArticleLib()
        a.from_json(request, deserialized['restore_backup_json_file']
        ['fp'].read().decode())
        return redirect(request, "article_list")

    result = rapid_deform(context, request, RestoreBackupSchema,
                          restore_backup_submit)
    if isinstance(result, dict):
        message = "Restore Articles from JSON File"
        result.update({"title": message, "header": message})
    return result
コード例 #9
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_edit(context, request):
    check_owner(context, request)

    def gamedep_edit_submit(context, request, deserialized, bind_params):
        page_id = get_pageid_revision(request)[0]
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        name = deserialized.get("name")
        display_name = deserialized.get("display_name")
        description = deserialized.get("description")
        tags = deserialized.get("tags")
        if g.exists(page_id):
            g.update(page_id, name, display_name, description, tags)
            request.session.flash(
                s.show_setting("INFO_UPDATED") % page_id, INFO)
        else:
            g.create(name, display_name, description, tags,
                     u.show(get_username(request)), request)
            request.session.flash(
                s.show_setting("INFO_CREATED") % page_id, INFO)
        return redirect(request,
                        "gamedep_item",
                        page_id=name,
                        type=gamedeptype)

    gamedeptype = request.matchdict.get('type')
    g = GameDepLib(gamedeptype)
    page_id = request.matchdict.get('page_id')
    t = taglib.TagLib(GameDepTags, taglib.GAMEDEP)
    try:
        dbpage = g.show(page_id)[0]
        dbdescription = dbpage.description
        dbname = dbpage.name
        dbdisplay_name = dbpage.display_name
    except GameDepNotFound:
        dbpage = None
        dbdescription = ""
        dbname = page_id
        dbdisplay_name = ""
    return rapid_deform(context,
                        request,
                        EditGameDepSchema,
                        gamedep_edit_submit,
                        name=dbname,
                        display_name=dbdisplay_name,
                        description=dbdescription,
                        tags=t.get_tags(dbpage))
コード例 #10
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_edit_revision(context, request):
    check_owner(context, request)
    def gamedep_edit_revision_submit(context, request, deserialized,
                                     bind_params):
        page_id, revision = get_pageid_revision(request)
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        frmversion = deserialized.get("version")
        frmmodule_type = deserialized.get("moduletype")
        if bind_params['update']:
            g.update_revision(page_id, revision, frmversion, frmmodule_type)
            request.session.flash(s.show_setting("INFO_REVISION_UPDATED")
                                  % (frmversion, page_id), INFO)
        else:
            try:
                g.create_revision(page_id, frmversion, frmmodule_type)
                request.session.flash(s.show_setting("INFO_REVISION_CREATED")
                                        % (frmversion, page_id), INFO)
            except GameDepFound:
                request.session.flash(s.show_setting("ERROR_FOUND")
                                        % frmversion, ERROR)

        return redirect(request, "gamedep_item", page_id=page_id,
                        type=gamedeptype)

    gamedeptype = request.matchdict.get('type')
    g = GameDepLib(gamedeptype)
    page_id = request.matchdict.get('page_id')
    revision = request.matchdict.get('revision')
    update = False
    if revision:
        update = True
        dbrevision = g.show(page_id, revision)[1]
        dbversion = dbrevision.version
        dbmoduletype_name = dbrevision.moduletype
    else:
        dbrevision = None
        dbversion = 0.1
        dbmoduletype_name = "file"
    return rapid_deform(context, request, EditRevisionSchema,
                        gamedep_edit_revision_submit,
                        version=dbversion, moduletype=dbmoduletype_name,
                        gamedep_type=gamedeptype, update=update)
コード例 #11
0
def article_update(context, request):
    """
    Display edit article form
    """
    check_owner(context, request)
    c = ArticleLib()

    def article_update_submit(context, request, deserialized, bind_params):
        """
        Add a article revision to the database
        """
        page = bind_params.get("page")
        name = request.matchdict.get("page_id")
        article = deserialized.get("article")
        summary = deserialized.get("summary")
        tags = deserialized.get("tags")
        page.display_name = deserialized.get("display_name")
        c.update(request, page, article, summary,
                 u.show(get_username(request)), tags)
        return redirect(request, "article_read", page_id=name)

    page_id = request.matchdict.get('page_id')
    page = c.show_page(page_id)
    revision = c.show_revision(page, request.matchdict.get('revision'))
    t = TagLib(ArticleTags, ARTICLE)
    display_name = page_id
    article = ""
    tags = ""
    if page:
        display_name = page.display_name
        article = page.revisions[0].article
        tags = t.get_tags(page)
    return rapid_deform(context,
                        request,
                        EditArticleSchema,
                        article_update_submit,
                        page=page,
                        revision=revision,
                        article=article,
                        display_name=display_name,
                        tags=tags)
コード例 #12
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_edit(context, request):
    check_owner(context, request)
    def gamedep_edit_submit(context, request, deserialized, bind_params):
        page_id = get_pageid_revision(request)[0]
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        name = deserialized.get("name")
        display_name = deserialized.get("display_name")
        description = deserialized.get("description")
        tags = deserialized.get("tags")
        if g.exists(page_id):
            g.update(page_id, name, display_name, description, tags)
            request.session.flash(s.show_setting("INFO_UPDATED")
                                  % page_id, INFO)
        else:
            g.create(name, display_name, description, tags,
                     u.show(get_username(request)), request)
            request.session.flash(s.show_setting("INFO_CREATED")
                                  % page_id, INFO)
        return redirect(request, "gamedep_item", page_id=name,
                        type=gamedeptype)

    gamedeptype = request.matchdict.get('type')
    g = GameDepLib(gamedeptype)
    page_id = request.matchdict.get('page_id')
    t = taglib.TagLib(GameDepTags, taglib.GAMEDEP)
    try:
        dbpage = g.show(page_id)[0]
        dbdescription = dbpage.description
        dbname = dbpage.name
        dbdisplay_name = dbpage.display_name
    except GameDepNotFound:
        dbpage = None
        dbdescription = ""
        dbname = page_id
        dbdisplay_name = ""
    return rapid_deform(context, request, EditGameDepSchema,
                        gamedep_edit_submit, name=dbname,
                        display_name=dbdisplay_name,
                        description=dbdescription,
                        tags=t.get_tags(dbpage))
コード例 #13
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_add_dependency(context, request):
    check_owner(context, request)

    def gamedep_add_dependency_submit(context, request, deserialized,
                                      bind_params):
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        page_id = request.matchdict.get('page_id')
        dep_id = request.matchdict.get('depid')
        form_rev_id = deserialized.get("revision")
        form_dep_id = deserialized.get("dependency")
        if not form_rev_id:
            return HTTPFound(location=current_route_url(request) +
                             "/%s" % form_dep_id)
        else:
            if form_rev_id == "-1":
                g.create_dependency(page_id, dep_id)
            else:
                g.create_dependency(page_id, dep_id, form_rev_id)
            dep_name = g.show_dependency(
                g.show(page_id, no_revision_error=False)[0], dep_id).page.name
            request.session.flash(
                s.show_setting("INFO_DEPENDENCY_ADDED") % dep_name, INFO)
            return redirect(request,
                            "gamedep_item",
                            page_id=page_id,
                            type=gamedeptype)

    depid = request.matchdict.get('depid')
    gamedeptype = request.matchdict.get('type')
    if not depid:
        schema = EditDependencySchemaOne
    else:
        schema = EditDependencySchemaTwo
    return rapid_deform(context,
                        request,
                        schema,
                        gamedep_add_dependency_submit,
                        gamedep_type=gamedeptype,
                        depid=depid)
コード例 #14
0
def article_create(context, request):
    """
    Display create a new article form
    """
    c = ArticleLib()

    def article_create_submit(context, request, deserialized, bind_params):
        """
        Save new article to the database
        """
        name = request.matchdict.get("page_id")
        display_name = deserialized.get("display_name")
        article = deserialized.get("article")
        summary = deserialized.get("summary")
        tags = deserialized.get("tags")
        c.create(request, name, display_name, article, summary,
                 u.show(get_username(request)), tags)
        return redirect(request, "article_read", page_id=name)

    return rapid_deform(context, request, EditArticleSchema,
                        article_create_submit,
                        page_id=request.matchdict.get("page_id"))
コード例 #15
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_add_source(context, request):
    check_owner(context, request)

    def gamedep_add_source_submit(context, request, deserialized, bind_params):
        page_id, revision = get_pageid_revision(request)
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        source = deserialized.get("source")
        g.create_source(page_id, revision, source['fp'], source['mimetype'],
                        source['filename'], request)
        request.session.flash(
            s.show_setting("INFO_SOURCE_UPLOADED") % source['filename'], INFO)
        return redirect(request,
                        "gamedep_item",
                        page_id=page_id,
                        type=gamedeptype)

    gamedeptype = request.matchdict.get('type')
    g = GameDepLib(gamedeptype)
    page_id = request.matchdict.get('page_id')
    revision = request.matchdict.get('revision')
    moduletype = g.show(page_id, revision)[1].moduletype

    # Block people from adding source to a dependency
    if gamedeptype != "game":
        return NotFound(request.url)

    # Figure out required files/folders
    req_file_folder = []
    if moduletype == "file":
        req_file_folder.append("%s/%s.py" % (page_id, page_id))
    else:
        req_file_folder.append("%s/__init__.py" % page_id)

    return rapid_deform(context,
                        request,
                        AddSourceSchema,
                        gamedep_add_source_submit,
                        req_file_folder=req_file_folder)
コード例 #16
0
def get_thread(context, request, threadid=None):
    """
    List all posts in a thread
    """
    threadid = threadid or request.matchdict.get('threadid')
    thread = bb.get_thread(threadid)
    thread.view_count += 1
    user = u.show(get_username(request))

    def get_thread_submit(context, request, deserialized, bind_params):
        """
        Handle "Quick Reply" box. Add post to database.
        """
        threadid = bind_params.get('threadid')
        if has_permission('forum_reply', context, request):
            title = "Re: " + deserialized.get('title')
            body = deserialized.get('body')
            if not title == '' and not body == '':
                bb.add_post(thread, title, body, user)
                transaction.commit()
            raise HTTPFound(location=request.path_qs)
        else:
            raise HTTPForbidden

    result_dict = rapid_deform(context,
                               request,
                               QuickReplySchema,
                               get_thread_submit,
                               thread_name=thread.name,
                               threadid=threadid)
    result_dict.update({'thread': thread, 'user': user})
    if has_permission('forum_reply', context, request):
        result_dict['forum_reply'] = True
    if (has_permission('forum_mod_edit', context, request)
            and has_permission('forum_mod_delete', context, request)):
        result_dict['forum_moderator'] = True
    return result_dict
コード例 #17
0
ファイル: views.py プロジェクト: Rich43/hypernucleus_server
def gamedep_add_source(context, request):
    check_owner(context, request)
    def gamedep_add_source_submit(context, request, deserialized,
                                  bind_params):
        page_id, revision = get_pageid_revision(request)
        gamedeptype = request.matchdict.get('type')
        g = GameDepLib(gamedeptype)
        source = deserialized.get("source")
        g.create_source(page_id, revision, source['fp'],
                        source['mimetype'], source['filename'],
                        request)
        request.session.flash(s.show_setting("INFO_SOURCE_UPLOADED")
                              % source['filename'], INFO)
        return redirect(request, "gamedep_item", page_id=page_id,
                        type=gamedeptype)

    gamedeptype = request.matchdict.get('type')
    g = GameDepLib(gamedeptype)
    page_id = request.matchdict.get('page_id')
    revision = request.matchdict.get('revision')
    moduletype = g.show(page_id, revision)[1].moduletype

    # Block people from adding source to a dependency
    if gamedeptype != "game":
        return NotFound(request.url)

    # Figure out required files/folders
    req_file_folder = []
    if moduletype == "file":
        req_file_folder.append("%s/%s.py" % (page_id, page_id))
    else:
        req_file_folder.append("%s/__init__.py" % page_id)

    return rapid_deform(context, request, AddSourceSchema,
                        gamedep_add_source_submit,
                        req_file_folder=req_file_folder)