def init(): # create the database db.configure_mappers() db.create_all() # create the super user u = User(name=settings.SUPER_USER, email=settings.SUPER_USER_EMAIL, password=settings.SUPER_USER_PASSWORD, admin=True, super_user=True) # optionally add super user apikey if getattr(settings, 'SUPER_USER_APIKEY', None): u.apikey = settings.SUPER_USER_APIKEY db_session.add(u) # load sql extensions + functions for sql in load_sql(): db_session.execute(sql) # load built-in sous-chefs for sc in load_sous_chefs(): sc = sous_chef_schema.validate(sc) s = SousChef(**sc) db_session.add(s) # commit db_session.commit()
def org( name=settings.SUPER_USER_ORG, timezone=settings.SUPER_USER_ORG_TIMEZONE, email=settings.SUPER_USER_EMAIL): # create the org and super user org = Org.query.filter_by(name=name).first() if not org: log.info('Creating org: "{}"'.format(name)) org = Org(name=name, timezone=timezone) else: log.warning('Updating org: "{}"'.format(name)) org.timezone = timezone org.name = name org.slug = slug(unicode(name)) # create the super user and add to the org. u = User.query.filter_by(email=email).first() if not u: log.info('Creating super user: "******"'.format(email)) u = User(name=settings.SUPER_USER, email=settings.SUPER_USER_EMAIL, password=settings.SUPER_USER_PASSWORD, admin=True, super_user=True) u.apikey = settings.SUPER_USER_APIKEY else: log.warning('Updating super user: "******"'.format(email)) u.apikey = settings.SUPER_USER_APIKEY u.email = settings.SUPER_USER_EMAIL u.password = settings.SUPER_USER_PASSWORD u.admin = True u.super_user = True org.users.append(u) db.session.add(org) db.session.commit() tags(org) sous_chefs(org) recipes(org) return org
def org(name=settings.SUPER_USER_ORG, timezone=settings.SUPER_USER_ORG_TIMEZONE, email=settings.SUPER_USER_EMAIL): # create the org and super user org = Org.query.filter_by(name=name).first() if not org: log.info('Creating org: "{}"'.format(name)) org = Org(name=name, timezone=timezone) else: log.warning('Updating org: "{}"'.format(name)) org.timezone = timezone org.name = name org.slug = slug(unicode(name)) # create the super user and add to the org. u = User.query.filter_by(email=email).first() if not u: log.info('Creating super user: "******"'.format(email)) u = User(name=settings.SUPER_USER, email=settings.SUPER_USER_EMAIL, password=settings.SUPER_USER_PASSWORD, admin=True, super_user=True) u.apikey = settings.SUPER_USER_APIKEY else: log.warning('Updating super user: "******"'.format(email)) u.apikey = settings.SUPER_USER_APIKEY u.email = settings.SUPER_USER_EMAIL u.password = settings.SUPER_USER_PASSWORD u.admin = True u.super_user = True org.users.append(u) db.session.add(org) db.session.commit() tags(org) sous_chefs(org) recipes(org) return org
def run(opts, **kwargs): # create the database try: with app.app_context(): echo('Creating database "{}"'.format(settings.SQLALCHEMY_DATABASE_URI), no_color=opts.no_color) db.configure_mappers() db.create_all() # create the super user u = User.query.filter_by(email=settings.SUPER_USER_EMAIL).first() if not u: echo('Creating super user "{}"'.format(settings.SUPER_USER_EMAIL), no_color=opts.no_color) u = User(name=settings.SUPER_USER, email=settings.SUPER_USER_EMAIL, password=settings.SUPER_USER_PASSWORD, admin=True, super_user=True) # optionally add super user apikey if getattr(settings, 'SUPER_USER_APIKEY', None): u.apikey = settings.SUPER_USER_APIKEY else: echo('Updating super user "{}"'.format(settings.SUPER_USER_EMAIL), no_color=opts.no_color) u.name=settings.SUPER_USER, u.email=settings.SUPER_USER_EMAIL, u.password=settings.SUPER_USER_PASSWORD, u.admin=True super_user=True db.session.add(u) echo('(Re)Loading SQL Extensions', no_color=opts.no_color) # load sql extensions + functions for sql in load_sql(): db.session.execute(sql) # load built-in sous-chefs for sc in load_sous_chefs(): sc = sous_chef_schema.validate(sc) sc_obj = db.session.query(SousChef).filter_by(slug=sc['slug']).first() if not sc_obj: echo('Importing Sous Chef "{}"'.format(sc['slug']), no_color=opts.no_color) sc_obj = SousChef(**sc) else: echo('Updating Sous Chef "{}"'.format(sc['slug']), no_color=opts.no_color) sc = sous_chef_schema.update(sc_obj.to_dict(), sc) # udpate for name, value in sc.items(): setattr(sc_obj, name, value) db.session.add(sc_obj) # commit db.session.commit() db.session.close() except Exception as e: db.session.rollback() db.session.close() raise e