def article_delete(context, request): """ Delete an article """ check_owner(context, request) c = ArticleLib() page_id = request.matchdict.get('page_id') try: c.delete(request, c.show_page(page_id)) request.session.flash(s.show_setting("INFO_DELETED") % page_id, INFO) return redirect(request, "article_list") except PageNotFound: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "article_list")
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)
def article_read(context, request): """ Display an article """ c = ArticleLib() result = {} page_id = request.matchdict.get('page_id') or "Front_Page" revision_id = request.matchdict.get('revision') try: page = c.show_page(page_id) if revision_id: revision = c.show_revision(page, revision_id) else: revision = page.revisions[0] if page.private and not has_permission("set_private", context, request): raise HTTPForbidden else: result.update({ 'page': page, 'revision': revision, "revision_id": revision_id, "thread_enabled": False }) if (request.query_string.startswith("comments") and page.thread_id != -1): from pyracms_forum.views import get_thread result.update(get_thread(context, request, page.thread_id)) result.update({"thread_enabled": True}) return result except PageNotFound: return redirect(request, "article_create", page_id=page_id)
def delete_forum(context, request): """ Delete a forum """ forum = bb.get_forum(request.matchdict.get('forum_id')) category_id = forum.category.name bb.delete_forum(forum) return redirect(request, 'list_forum', category_id=category_id)
def article_switch_renderer(context, request): """ Use another rendering engine for the page """ c = ArticleLib() page_id = request.matchdict.get('page_id') c.switch_renderer(page_id) return redirect(request, "article_read", page_id=page_id)
def article_set_private(context, request): """ Make page private """ c = ArticleLib() page_id = request.matchdict.get('page_id') c.set_private(request, page_id) return redirect(request, "article_read", page_id=page_id)
def article_hide_display_name(context, request): """ Hide display name header """ c = ArticleLib() page_id = request.matchdict.get('page_id') c.hide_display_name(page_id) return redirect(request, "article_read", page_id=page_id)
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)
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)
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)
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)
def article_revert(context, request): """ Revert an old revision, basically makes a new revision with old contents """ check_owner(context, request) c = ArticleLib() matchdict_get = request.matchdict.get try: page = c.show_page(matchdict_get('page_id')) c.revert(request, page, c.show_revision(page, matchdict_get('revision')), u.show(get_username(request))) request.session.flash(s.show_setting("INFO_REVERT") % page.name, INFO) return redirect(request, "article_read", page_id=page.name) except PageNotFound: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % matchdict_get('page_id'), ERROR) return redirect(request, "article_list")
def gamedep_delete(context, request): check_owner(context, request) page_id = request.matchdict.get('page_id') gamedeptype = request.matchdict.get('type') g = GameDepLib(gamedeptype) if g.exists(page_id): g.delete(page_id, request) request.session.flash(s.show_setting("INFO_DELETED") % page_id, INFO) else: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedeplist", type=gamedeptype)
def gamedep_delete(context, request): check_owner(context, request) page_id = request.matchdict.get('page_id') gamedeptype = request.matchdict.get('type') g = GameDepLib(gamedeptype) if g.exists(page_id): g.delete(page_id, request) request.session.flash(s.show_setting("INFO_DELETED") % page_id, INFO) else: request.session.flash(s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedeplist", type=gamedeptype)
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)
def forum_add_vote(context, request): """ Add a vote to a post """ vote_id = request.matchdict.get('vote_id') like = request.matchdict.get('like').lower() == "true" post = bb.get_post(vote_id) try: bb.add_vote(post, u.show(get_username(request)), like) request.session.flash(s.show_setting("INFO_VOTE"), INFO) except AlreadyVoted: request.session.flash(s.show_setting("ERROR_VOTE"), ERROR) return redirect(request, "article_read", page_id=vote_id)
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)
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)
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)
def article_list_revisions(context, request): """ Show a list of article revisions, every time a change is made, a revision is added """ c = ArticleLib() page_id = request.matchdict.get('page_id') try: page = c.show_page(page_id) except PageNotFound: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "article_list") return {'page': page}
def article_add_vote(context, request): """ Add a vote to an article """ vote_id = request.matchdict.get('vote_id') like = request.matchdict.get('like').lower() == "true" a = ArticleLib() article = a.show_page(vote_id) try: a.add_vote(article, u.show(get_username(request)), like) request.session.flash(s.show_setting("INFO_VOTE"), INFO) except AlreadyVoted: request.session.flash(s.show_setting("ERROR_VOTE"), ERROR) return redirect(request, "article_read", page_id=vote_id)
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')
def gamedep_add_vote(context, request): """ Add a vote to a gamedep """ vote_id = request.matchdict.get('vote_id') like = request.matchdict.get('like').lower() == "true" gamedeptype = request.matchdict.get('type') gd_lib = GameDepLib(gamedeptype) gd = gd_lib.show(vote_id, no_revision_error=False)[0] try: gd_lib.add_vote(gd, u.show(get_username(request)), like) request.session.flash(s.show_setting("INFO_VOTE"), INFO) except AlreadyVoted: request.session.flash(s.show_setting("ERROR_VOTE"), ERROR) return redirect(request, "article_read", page_id=vote_id)
def gamedep_add_vote(context, request): """ Add a vote to a gamedep """ vote_id = request.matchdict.get('vote_id') like = request.matchdict.get('like').lower() == "true" gamedeptype = request.matchdict.get('type') gd_lib = GameDepLib(gamedeptype) gd = gd_lib.show(vote_id, no_revision_error=False)[0] try: gd_lib.add_vote(gd, u.show(get_username(request)), like) request.session.flash(s.show_setting("INFO_VOTE"), INFO) except AlreadyVoted: request.session.flash(s.show_setting("ERROR_VOTE"), ERROR) return redirect(request, "article_read", page_id=vote_id)
def gamedep_delete_dependency(context, request): check_owner(context, request) gamedeptype = request.matchdict.get('type') depid = request.matchdict.get('depid') g = GameDepLib(gamedeptype) page_id = request.matchdict.get('page_id') try: dep_name = g.show_dependency(g.show(page_id)[0], depid).page_obj.name g.delete_dependency(page_id, depid) request.session.flash( s.show_setting("INFO_DEPENDENCY_DELETED") % dep_name, INFO) except GameDepNotFound: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype)
def gamedep_delete_dependency(context, request): check_owner(context, request) gamedeptype = request.matchdict.get('type') depid = request.matchdict.get('depid') g = GameDepLib(gamedeptype) page_id = request.matchdict.get('page_id') try: dep_name = g.show_dependency(g.show(page_id)[0], depid).page_obj.name g.delete_dependency(page_id, depid) request.session.flash(s.show_setting("INFO_DEPENDENCY_DELETED") % dep_name, INFO) except GameDepNotFound: request.session.flash(s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype)
def gamedep_delete_binary(context, request): check_owner(context, request) gamedeptype = request.matchdict.get('type') binid = request.matchdict.get('binary_id') g = GameDepLib(gamedeptype) page_id = request.matchdict.get('page_id') revision = request.matchdict.get('revision') try: with DBSession.no_autoflush: bin_name = g.show_binary(binid).file_obj.name g.delete_binary(page_id, revision, binid) request.session.flash( s.show_setting("INFO_BINARY_DELETED") % bin_name, INFO) except GameDepNotFound: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype)
def gamedep_delete_binary(context, request): check_owner(context, request) gamedeptype = request.matchdict.get('type') binid = request.matchdict.get('binary_id') g = GameDepLib(gamedeptype) page_id = request.matchdict.get('page_id') revision = request.matchdict.get('revision') try: with DBSession.no_autoflush: bin_name = g.show_binary(binid).file_obj.name g.delete_binary(page_id, revision, binid) request.session.flash(s.show_setting("INFO_BINARY_DELETED") % bin_name, INFO) except GameDepNotFound: request.session.flash(s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype)
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)
def gamedep_delete_revision(context, request): check_owner(context, request) page_id = request.matchdict.get('page_id') revision = request.matchdict.get('revision') gamedeptype = request.matchdict.get('type') g = GameDepLib(gamedeptype) if g.exists(page_id): caption = "Version %s" % g.show(page_id, revision)[1].version try: g.delete_revision(page_id, revision, request) request.session.flash( s.show_setting("INFO_DELETED") % caption, INFO) except GameDepNotFound: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) else: request.session.flash( s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype)
def gamedep_delete_revision(context, request): check_owner(context, request) page_id = request.matchdict.get('page_id') revision = request.matchdict.get('revision') gamedeptype = request.matchdict.get('type') g = GameDepLib(gamedeptype) if g.exists(page_id): caption = "Version %s" % g.show(page_id, revision)[1].version try: g.delete_revision(page_id, revision, request) request.session.flash(s.show_setting("INFO_DELETED") % caption, INFO) except GameDepNotFound: request.session.flash(s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) else: request.session.flash(s.show_setting("ERROR_NOT_FOUND") % page_id, ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype)
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)
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)
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)
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)
def gamedep_add_binary(context, request): check_owner(context, request) gamedeptype = request.matchdict.get('type') g = GameDepLib(gamedeptype) page_id = request.matchdict.get('page_id') binary_id = request.matchdict.get('binary_id') revision = request.matchdict.get('revision') edittype = request.matchdict.get('edittype') try: bin_obj = g.show_binary(binary_id) except GameDepNotFound: bin_obj = None if binary_id and edittype: pass # Initialise form library if not binary_id and not edittype: schema = AddBinarySchema() elif binary_id and edittype == "1": schema = EditBinarySchema() elif binary_id and edittype == "2": schema = EditOSArchSchema() else: request.session.flash(s.show_setting("ERROR_INVALID_BINARY_ID"), ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype) schema = schema.bind(gamedep_type=gamedeptype, bin_obj=bin_obj, req_file_folder=["%s/" % page_id]) myform = Form(schema, buttons=['submit']) reqts = myform.get_widget_resources() if 'submit' in request.POST: controls = request.POST.items() try: deserialized = myform.validate(controls) except ValidationFailure as e: # Failed validation return { 'page_id': page_id, 'form': e.render(), 'js_links': reqts['js'] } # Form submitted, all validated! binary = deserialized.get("binary") operatingsystem = deserialized.get("operatingsystem") architecture = deserialized.get("architecture") if not binary_id and not edittype: g.create_binary(page_id, revision, operatingsystem, architecture, binary['fp'], binary['mimetype'], binary['filename'], request) request.session.flash( s.show_setting("INFO_BINARY_ADDED") % binary['filename'], INFO) else: g.update_binary(page_id, revision, binary_id, operatingsystem, architecture, binary, request) request.session.flash( s.show_setting("INFO_BINARY_UPDATED") % binary['filename'], INFO) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype) # Display default form return { 'page_id': page_id, 'form': myform.render(), 'js_links': reqts['js'] }
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")
def gamedep_add_binary(context, request): check_owner(context, request) gamedeptype = request.matchdict.get('type') g = GameDepLib(gamedeptype) page_id = request.matchdict.get('page_id') binary_id = request.matchdict.get('binary_id') revision = request.matchdict.get('revision') edittype = request.matchdict.get('edittype') try: bin_obj = g.show_binary(binary_id) except GameDepNotFound: bin_obj = None if binary_id and edittype: pass # Initialise form library if not binary_id and not edittype: schema = AddBinarySchema() elif binary_id and edittype == "1": schema = EditBinarySchema() elif binary_id and edittype == "2": schema = EditOSArchSchema() else: request.session.flash(s.show_setting("ERROR_INVALID_BINARY_ID"), ERROR) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype) schema = schema.bind(gamedep_type=gamedeptype, bin_obj=bin_obj, req_file_folder=["%s/" % page_id]) myform = Form(schema, buttons=['submit']) reqts = myform.get_widget_resources() if 'submit' in request.POST: controls = request.POST.items() try: deserialized = myform.validate(controls) except ValidationFailure as e: # Failed validation return {'page_id': page_id, 'form': e.render(), 'js_links': reqts['js']} # Form submitted, all validated! binary = deserialized.get("binary") operatingsystem = deserialized.get("operatingsystem") architecture = deserialized.get("architecture") if not binary_id and not edittype: g.create_binary(page_id, revision, operatingsystem, architecture, binary['fp'], binary['mimetype'], binary['filename'], request) request.session.flash(s.show_setting("INFO_BINARY_ADDED") % binary['filename'], INFO) else: g.update_binary(page_id, revision, binary_id, operatingsystem, architecture, binary, request) request.session.flash(s.show_setting("INFO_BINARY_UPDATED") % binary['filename'], INFO) return redirect(request, "gamedep_item", page_id=page_id, type=gamedeptype) # Display default form return {'page_id': page_id, 'form': myform.render(), 'js_links': reqts['js']}