class Image(BaseImage, Content, Model, Base): __tablename__ = 'images' _draft_path = config.get('uploads', 'draft') _type_path = 'events' filename = Column(Text) def __init__(self, **kwargs): super().__init__(**kwargs) self.status = 'Draft' @classmethod def path(cls): return os.path.join(cls._draft_path, cls._type_path) def path(self): if self.status == 'Draft': return os.path.join(self._draft_path, self._type_path) else: return os.path.join(self._base_path, self._type_path) def publish(self): if self.status == 'Draft': os.rename(os.path.join(self.path(), self.filename), os.path.join(super().path(), self.filename)) self.status = 'Active' self.save()
def __init__(self): with open('/var/calendar/secrets/email.txt', 'rb') as fh: (user, password) = fh.read().decode('utf-8').split(':') self._user = user self._password = password self._session = smtplib.SMTP_SSL(config.get('email', 'server')) self._session.set_debuglevel(1)
class BaseImage(object): _base_path = config.get('uploads', 'public') def __init__(self, **kwargs): self.filename = kwargs['filename'] @classmethod def path(cls): return os.path.join(cls._base_path, cls._type_path)
def _db_exec(self, sql): db_config = config.get('db') conn = create_engine( 'postgresql://' + db_config['credentials'] + \ '@' + db_config['host'] + '/postgres' ).connect() conn.execute("commit") conn.execute(sql) conn.close()
def build_engine(self): db_config = config.get('db') self.engine = create_engine( 'postgresql://' + db_config['credentials'] + \ '@' + db_config['host'] + \ '/' + db_config['database'] ) self.session = scoped_session( sessionmaker(autocommit=False, autoflush=False, bind=self.engine)) Base.query = self.session.query_property()
def upload_file_for(cls): if 'file' not in request.files: abort(400) file = request.files['file'] if file.filename == '': abort(400) if file: file_extension = _file_extension(file.filename) if file_extension == None or file_extension not in config.get( 'uploads', 'extensions'): abort(400) filename = str(uuid()) + '.' + file_extension file.save(os.path.join(cls.path(), filename)) return cls(filename=filename) return jsonify(uploaded_file)
def create_app(): db = DB() flask = connexion.FlaskApp(__name__, specification_dir='../config/') flask.app.json_encoder = ExtendedJSONEncoder flask.app.config['MAX_CONTENT_LENGTH'] = config.get( 'uploads', 'max_upload_size') with open('/var/calendar/secrets/jwt_private.pem', 'rb') as fh: flask.app.config['JWT_PRIVATE_KEY'] = fh.read() with open('/var/calendar/secrets/jwt_public.pem', 'rb') as fh: flask.app.config['JWT_PUBLIC_KEY'] = fh.read() flask.add_api('openapi.yaml', resolver=RestyResolver('app')) @flask.app.teardown_appcontext def shutdown_session(exception=None): db.session.remove() return flask.app
def create_db(self): try: conn = self.engine.connect() conn.execute('select 1') print('Database Exists') except OperationalError: import event_calendar.model.org import event_calendar.model.user import event_calendar.model.password_token import event_calendar.model.event import event_calendar.model.series import event_calendar.model.category import event_calendar.model.image import event_calendar.model.link import event_calendar.model.location import event_calendar.model.comment self._db_exec('create database ' + config.get('db')['database']) Base.metadata.create_all(bind=self.engine) print('Database Created')
def destroy_db(self): session.close_all_sessions() self.engine.dispose() self._db_exec('drop database ' + config.get('db')['database'])
def generate(cls,user): existing_token = cls.search( cls.user_id == user.id, cls.expires >= datetime.datetime.utcnow() ).first() if existing_token is not None: return cls(**existing_token) else: t = cls.create({ 'user_id': user.id, 'expires': datetime.datetime.utcnow() + datetime.timedelta( seconds = config.get('password_reset','expires')) }) t.save() return t
def test_get(self): assert( isinstance(config._config,dict) ) assert( config.get('db') != None ) assert( config.get('db','host') == 'postgres' ) self.assertRaises( Exception, config.get, 'not_a_key' )
def test_nested_set(self): self.assertRaises( Exception, config.get, 'not', 'a', 'key' ) config.set(['not','a','key'], 'bar' ) assert(config.get('not','a','key') == 'bar')
def test_set(self): self.assertRaises( Exception, config.get, 'foo' ) config.set(['foo'],'bar') assert(config.get('foo') == 'bar')