Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
    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()
Ejemplo n.º 5
0
    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()
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
    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')
Ejemplo n.º 9
0
 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
Ejemplo n.º 11
0
 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' )
Ejemplo n.º 12
0
 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')
Ejemplo n.º 13
0
 def test_set(self):
     self.assertRaises( Exception, config.get, 'foo' )
     config.set(['foo'],'bar')
     assert(config.get('foo') == 'bar')