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
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
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
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)
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
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
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)
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
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))
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)
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)
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))
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)
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"))
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)
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
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)