def from_json(self, request, data): u = UserLib() data = json.loads(data) def convert_date(date): if isinstance(date, str): date = date.split(".")[0] date_format = "%Y-%m-%dT%H:%M:%S" try: return datetime.datetime.strptime(date, date_format) except TypeError: return datetime.datetime(1900, 1, 1) except ValueError: return datetime.datetime(1900, 1, 1) # Convert the dates back for k, dummy in enumerate(data): data[k]['created'] = convert_date(data[k]['created']) for k2, dummy in enumerate(data[k]['revisions']): data[k]['revisions'][k2]['created'] = \ convert_date(data[k]['revisions'][k2]['created']) # Delete all articles for page in DBSession.query(ArticlePage): DBSession.delete(page) self.s.delete_from_index( request.route_url("article_read", page_id=page.name)) # Add articles back again for row in data: # Delete revisions and store in memory for later use revisions = row['revisions'] del (row['revisions']) # Create page page = ArticlePage() for k, v in row.items(): try: setattr(page, k, v) except: pass if not page.user_id: page.user_id = 1 DBSession.add(page) page = self.show_page(row['name']) user = None # Add revisions for row2 in revisions: revision = ArticleRevision() for k, v in row2.items(): try: setattr(revision, k, v) except: pass page.revisions.append(revision) user = u.show_by_id(revision.user_id) self.update_article_index(request, page, revision, user.name) if user: page = self.add_addons(page, row['name'], row['display_name'], user)
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: # Add Groups u = UserLib() u.create_group("forum_moderator", "Ability to Edit " + "and Delete forum posts/threads.") u.create_group("forum", "Ability to Add forum posts/threads.") # Default ACL acl = RootFactory(session=DBSession) acl.__acl__.append((Allow, Everyone, 'forum_view')) acl.__acl__.append((Allow, "group:admin", 'edit_board')) acl.__acl__.append((Allow, "group:forum", "group:forum")) acl.__acl__.append((Allow, "group:forum", 'forum_reply')) acl.__acl__.append((Allow, "group:forum", 'forum_edit')) acl.__acl__.append((Allow, "group:forum", 'forum_delete')) acl.__acl__.append( (Allow, "group:forum_moderator", "group:forum_moderator")) acl.__acl__.append((Allow, "group:forum_moderator", 'forum_mod_edit')) acl.__acl__.append( (Allow, "group:forum_moderator", 'forum_mod_delete')) # Add Menu Items m = MenuLib() m.add_menu_item_route("Forum", "category_list", 10, m.show_group("main_menu"), Everyone) group = m.show_group("admin_area") m.add_menu_item_route("Forum Categories", "edit_forum_category", 20, group, 'edit_menu') m.add_menu_item_route("Edit Forums", "list_forum_category", 21, group, 'edit_menu') # Append CSS s = SettingsLib() s.update("CSS", s.show_setting("CSS") + css) s.create("INFO_FORUM_CATEGORY_UPDATED", "The list of forum categories has been updated.") s.create("PYRACMS_FORUM") s.update("DEFAULTGROUPS", s.show_setting("DEFAULTGROUPS") + "forum\n")
from pyracms.deform_schemas.userarea_admin import RestoreBackupSchema from pyracms.lib.helperlib import (redirect, get_username, rapid_deform, display_json) from pyracms.lib.settingslib import SettingsLib from pyracms.lib.taglib import TagLib, ARTICLE from pyracms.lib.userlib import UserLib from pyracms.views import ERROR, INFO from pyracms_article.deform_schemas.article import EditArticleSchema from pyracms_article.lib.articlelib import (ArticleLib, PageNotFound, AlreadyVoted) from pyracms_article.models import ArticleTags from pyramid.httpexceptions import HTTPForbidden from pyramid.security import has_permission from pyramid.view import view_config u = UserLib() s = SettingsLib() def check_owner(context, request): page_id = request.matchdict.get('page_id') g = ArticleLib() page = g.show_page(page_id) if (has_permission('article_mod', context, request) or page.user == u.show(get_username(request))): return True else: raise HTTPForbidden @view_config(route_name='article_read',
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: # Add Operating Systems DBSession.add(OperatingSystems("pi", "Platform Independent")) DBSession.add(OperatingSystems("win", "Windows")) DBSession.add(OperatingSystems("mac", "Mac OS X")) DBSession.add(OperatingSystems("lin", "Linux")) DBSession.add(OperatingSystems("sol", "Solaris")) DBSession.add(OperatingSystems("fbsd", "FreeBSD")) DBSession.add(OperatingSystems("nbsd", "NetBSD")) DBSession.add(OperatingSystems("obsd", "OpenBSD")) # Add Architectures DBSession.add(Architectures("pi", "Platform Independent")) DBSession.add(Architectures("i386", "32bit X86")) DBSession.add(Architectures("x86_64", "64bit X86")) DBSession.add(Architectures("arm", "ARM Little Endian")) DBSession.add(Architectures("armeb", "ARM Big Endian")) DBSession.add(Architectures("ppc", "32bit PowerPC")) DBSession.add(Architectures("ppc64", "64bit PowerPC")) DBSession.add(Architectures("sparc", "32bit SPARC")) DBSession.add(Architectures("sparc64", "64bit SPARC")) # Default Groups u = UserLib() u.create_group("gamedep", "Ability to Add, Edit and Delete" + " games and dependencies.") # Default ACL acl = RootFactory() acl.__acl__.append((Allow, Everyone, 'gamedep_view')) acl.__acl__.append((Allow, Everyone, 'gamedep_list')) acl.__acl__.append((Allow, "group:admin", 'gamedep_mod')) acl.__acl__.append((Allow, "group:gamedep", "group:gamedep")) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_view')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_list')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_publish')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_edit')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_delete')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_picture')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_delete_picture')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_source')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_binary')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_edit_binary')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_delete_binary')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_dependency')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_delete_dependency')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_edit_revision')) s = SettingsLib() s.update("DEFAULTGROUPS", s.show_setting("DEFAULTGROUPS") + "gamedep\n") s.create("INFO_PIC_ADDED", "Your picture (%s) has been added.") s.create("INFO_PIC_DELETED", "Your picture (%s) has been deleted.") s.create("INFO_BINARY_ADDED", "Your binary (%s) has been added.") s.create("INFO_BINARY_UPDATED", "Your binary (%s) has been updated.") s.create("INFO_BINARY_DELETED", "Your binary (%s) has been deleted.") s.create("INFO_SOURCE_UPLOADED", "The source code (%s) has been " "successfully uploaded.") s.create("INFO_DEPENDENCY_ADDED", "Your dependency (%s) has been added.") s.create("INFO_DEPENDENCY_DELETED", "Your dependency (%s) has been deleted.") s.create("INFO_REVISION_UPDATED", "A new version (%s) has been " "updated for %s.") s.create("INFO_REVISION_CREATED", "A new version (%s) has been " "created for %s.") s.create("ERROR_INVALID_BINARY_ID", "Invalid Binary ID and/or Edit Type.") s.create("ERROR_NOT_UPLOADED_BINARY", "You have not uploaded any binaries.") s.create("ERROR_NOT_UPLOADED_SOURCE_CODE", "You have not uploaded any source code.") s.create("HYPERNUCLEUS_SERVER") m = MenuLib() group = m.show_group("main_menu") m.add_menu_item_route("Games", "gamedeplist", 3, group, Everyone, {"type": GAME}) m.add_menu_item_route("Dependencies", "gamedeplist", 4, group, Everyone, {"type": DEP})
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: # Add Operating Systems DBSession.add(OperatingSystems("pi", "Platform Independent")) DBSession.add(OperatingSystems("win", "Windows")) DBSession.add(OperatingSystems("mac", "Mac OS X")) DBSession.add(OperatingSystems("lin", "Linux")) DBSession.add(OperatingSystems("sol", "Solaris")) DBSession.add(OperatingSystems("fbsd", "FreeBSD")) DBSession.add(OperatingSystems("nbsd", "NetBSD")) DBSession.add(OperatingSystems("obsd", "OpenBSD")) # Add Architectures DBSession.add(Architectures("pi", "Platform Independent")) DBSession.add(Architectures("i386", "32bit X86")) DBSession.add(Architectures("x86_64", "64bit X86")) DBSession.add(Architectures("arm", "ARM Little Endian")) DBSession.add(Architectures("armeb", "ARM Big Endian")) DBSession.add(Architectures("ppc", "32bit PowerPC")) DBSession.add(Architectures("ppc64", "64bit PowerPC")) DBSession.add(Architectures("sparc", "32bit SPARC")) DBSession.add(Architectures("sparc64", "64bit SPARC")) # Default Groups u = UserLib() u.create_group( "gamedep", "Ability to Add, Edit and Delete" + " games and dependencies.") # Default ACL acl = RootFactory() acl.__acl__.append((Allow, Everyone, 'gamedep_view')) acl.__acl__.append((Allow, Everyone, 'gamedep_list')) acl.__acl__.append((Allow, "group:admin", 'gamedep_mod')) acl.__acl__.append((Allow, "group:gamedep", "group:gamedep")) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_view')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_list')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_publish')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_edit')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_delete')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_picture')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_delete_picture')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_source')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_binary')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_edit_binary')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_delete_binary')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_add_dependency')) acl.__acl__.append( (Allow, "group:gamedep", 'gamedep_delete_dependency')) acl.__acl__.append((Allow, "group:gamedep", 'gamedep_edit_revision')) s = SettingsLib() s.update("DEFAULTGROUPS", s.show_setting("DEFAULTGROUPS") + "gamedep\n") s.create("INFO_PIC_ADDED", "Your picture (%s) has been added.") s.create("INFO_PIC_DELETED", "Your picture (%s) has been deleted.") s.create("INFO_BINARY_ADDED", "Your binary (%s) has been added.") s.create("INFO_BINARY_UPDATED", "Your binary (%s) has been updated.") s.create("INFO_BINARY_DELETED", "Your binary (%s) has been deleted.") s.create("INFO_SOURCE_UPLOADED", "The source code (%s) has been " "successfully uploaded.") s.create("INFO_DEPENDENCY_ADDED", "Your dependency (%s) has been added.") s.create("INFO_DEPENDENCY_DELETED", "Your dependency (%s) has been deleted.") s.create("INFO_REVISION_UPDATED", "A new version (%s) has been " "updated for %s.") s.create("INFO_REVISION_CREATED", "A new version (%s) has been " "created for %s.") s.create("ERROR_INVALID_BINARY_ID", "Invalid Binary ID and/or Edit Type.") s.create("ERROR_NOT_UPLOADED_BINARY", "You have not uploaded any binaries.") s.create("ERROR_NOT_UPLOADED_SOURCE_CODE", "You have not uploaded any source code.") s.create("HYPERNUCLEUS_SERVER") m = MenuLib() group = m.show_group("main_menu") m.add_menu_item_route("Games", "gamedeplist", 3, group, Everyone, {"type": GAME}) m.add_menu_item_route("Dependencies", "gamedeplist", 4, group, Everyone, {"type": DEP})
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: # Add Groups u = UserLib() u.create_group( "article", "Ability to Add, Edit, Delete, " + "Revert and Protect Articles.") # Default ACL acl = RootFactory(session=DBSession) acl.__acl__.append((Allow, "group:admin", "switch_renderer")) acl.__acl__.append((Allow, "group:admin", "set_private")) acl.__acl__.append((Allow, "group:admin", "article_mod")) acl.__acl__.append((Allow, Authenticated, "article_list_revisions")) acl.__acl__.append((Allow, Everyone, "article_view")) acl.__acl__.append((Allow, Everyone, "article_list")) acl.__acl__.append((Allow, "group:article", "group:article")) acl.__acl__.append((Allow, "group:article", "article_view")) acl.__acl__.append((Allow, "group:article", "article_list")) acl.__acl__.append((Allow, "group:article", "article_create")) acl.__acl__.append((Allow, "group:article", "article_update")) acl.__acl__.append((Allow, "group:article", "article_delete")) acl.__acl__.append((Allow, "group:article", "article_revert")) # Add settings s = SettingsLib() s.create("PYRACMS_ARTICLE") s.update("DEFAULTGROUPS", s.show_setting("DEFAULTGROUPS") + "article\n") # Add Menu Items m = MenuLib() group = m.show_group("main_menu") m.add_menu_item_route("Articles", "article_list", 2, group, Everyone) group = m.show_group("admin_area") m.add_menu_item_route("Backup Articles", "userarea_admin_backup_articles", 8, group, 'backup') m.add_menu_item_route("Restore Articles", "userarea_admin_restore_articles", 9, group, 'backup') group = MenuGroup("article_not_revision") m.add_menu_item_url("Comments", "/article/item/%(page_id)s?comments", 1, group, 'forum_view') m.add_menu_item_route("Gallery", "show_album", 2, group, 'show_album') m.add_menu_item_route("Edit", "article_update", 3, group, 'article_update') m.add_menu_item_route("Delete", "article_delete", 4, group, 'article_delete') m.add_menu_item_route("Switch Renderer [%(renderer)s]", "article_switch_renderer", 5, group, 'switch_renderer') m.add_menu_item_route("Make %(private)s", "article_set_private", 6, group, 'set_private') m.add_menu_item_route("%(hideshow)s Display Name", "article_hide_display_name", 7, group, 'set_private') m.add_menu_item_url("Vote Up (%(up_count)s)", "/vote/article/%(page_id)s/True", 8, group, 'vote') m.add_menu_item_url("Vote Down (%(down_count)s)", "/vote/article/%(page_id)s/False", 9, group, 'vote') m.add_menu_item_route("List Revisions", "article_list_revisions", 10, group, 'article_list_revisions') group = MenuGroup("article_revision") m.add_menu_item_route("List Revisions", "article_list_revisions", 1, group, 'article_list_revisions') m.add_menu_item_route("Revert", "article_revert", 2, group, "article_revert") # Add Renderers DBSession.add(ArticleRenderers("HTML")) DBSession.add(ArticleRenderers("BBCODE")) DBSession.add(ArticleRenderers("RESTRUCTUREDTEXT")) DBSession.add(ArticleRenderers("MARKDOWN"))