コード例 #1
0
def api_channel_stats(channel_id: int):
    with DB.connect() as db:
        channel = get_channel(db, channel_id)
        if not channel:
            return error('Resource not found', 404)

        options, errors = ApiChannelStatsSchema().load(request.args)
        if errors:
            return jsonify(errors=errors), 400

        history_from = options['from']
        history_to = options['to']
        history_averaging = options['average']

        items = get_channel_stats(db, channel_id, history_from, history_to,
                                  history_averaging)
        label_format = '%H:%M' if history_averaging == 1 else '%d.%m.%Y %H:00'
        items = ((time.strftime(label_format),
                  round(value, 2) if value else None) for time, value in items)

        title = channel.name
        unit = channel.unit
        labels, values = zip(*items)

        return jsonify(title=title, unit=unit, labels=labels, values=values)
コード例 #2
0
def api_update_order():
    data, errors = ChannelsOrderSchema().load(request.get_json() or request.args)
    if errors:
        return jsonify(errors=errors), 400
    with DB.connect() as db:
        update_channels_order(db, g.api_user.id, data['ids'])
    return jsonify()
コード例 #3
0
async def process_message(_event, data):
    device_uuid, channel_uuid = data['topic'].split('/', 2)
    payload = data['payload']
    value = parse_value(payload)
    if value is None:
        logger.warning('invalid payload: {}'.format(payload))
        return

    with DB.connect() as db:
        device = get_or_create_device(db, device_uuid)
        channel = get_or_create_channel(db, channel_uuid, device_id=device.id)
        update_channel(db,
                       channel.id,
                       value=value,
                       value_updated=datetime.now())
        await bus.emit(
            'channel_updated',
            dict(channel_uuid=channel_uuid,
                 timestamp=datetime.now().isoformat(),
                 value=value))
        calculator = calculators[channel.id]
        calculator.push_value(value)
        if channel.logging_enabled and calculator.has_average:
            value, timestamp = calculator.pop_average()
            log_channel_value(db,
                              channel.id,
                              value,
                              timestamp,
                              ignore_duplicates=True)
            await bus.emit(
                'channel_logged',
                dict(channel_uuid=channel_uuid,
                     timestamp=timestamp.isoformat(),
                     value=value))
コード例 #4
0
def api_channel_settings(channel_id: int):
    with DB.connect() as db:
        channel = get_channel(db, channel_id)
        if not channel:
            return error('Channel not found')

        data, errors = ChannelSchema().dump(channel)
        return jsonify(data) if not errors else internal_error()
コード例 #5
0
def device_settings(device_id: int):
    with DB.connect() as db:
        device = get_device(db, device_id)
        if not device:
            return error('Device not found')

        data, errors = DeviceSchema().dump(device)
        return jsonify(data) if not errors else internal_error()
コード例 #6
0
ファイル: __init__.py プロジェクト: darksv/dashboard
def before_api_request():
    with DB.connect() as db:
        auth = request.headers.get('Authorization', None)
        if not auth:
            g.api_user = None
            return

        auth_type, data = auth.split(' ')
        username, password = b64decode(data).decode('utf-8').split(':')
        g.api_user = get_user_by_username(db, username)
        if not g.api_user:
            return error('Authorization failed, invalid username and/or password', 401)
コード例 #7
0
def api_channel_update(channel_id: int):
    with DB.connect() as db:
        channel = get_channel(db, channel_id)
        if not channel:
            return jsonify(), 404

        data, errors = ChannelSchema().load(request.get_json() or request.args)
        if errors:
            return jsonify(errors=errors), 400

        if update_channel(db, channel_id, **data):
            return jsonify()

        return jsonify(), 500
コード例 #8
0
ファイル: notification.py プロジェクト: darksv/dashboard
def new_notification():
    with DB.connect() as db:
        data, errors = NotificationSchema().load(request.get_json() or request.args)
        if errors:
            return jsonify(errors=errors)

        user_id = data['user_id']
        trigger_id = data['trigger_id']
        message = data['message']

        notification_id = create_notification(db, user_id, message, trigger_id)
        if not notification_id:
            return internal_error()

        return jsonify()
コード例 #9
0
			print(s.substitute( Schema=self.schema,
								Name=table["table_name"],
								ClassName=self.ClassName,
								NameLower=self.ClassName.lower(),
								SelectColumns=self.processColumns.getSelectParams(columns),
								PK=self.processColumns.getPk(columns),
								InsertParams=self.processColumns.getSQLTypeParams(columns,'p','INSERT'),
								InsertColumns=self.processColumns.getSQLParams(columns,'','INSERT'),
								InsertValues=self.processColumns.getSQLParams(columns,'p','INSERT'),
								UpdateParams=self.processColumns.getSQLTypeParams(columns,'p','UPDATE'),
								UpdateData=self.processColumns.getSQLUpdate(columns,'p'),
				))
			sys.stdout = orig_stdout
			f.close()			

test= DB()
test.setSchema("basic")
test.setTable("usuario")

tables=test.getTables()
columns=test.getColumns()

app_root="C:\\Users\\MYEQ\\Aplicaciones\\api.python\wsgi\\app\\"
test_root="C:\\Users\\MYEQ\\Aplicaciones\\api.python\wsgi\\"

print("Table,Columns",len(tables), len(columns))

template=ProcessTemplate()
template.setPackage("app")
template.setName("Usuario")
コード例 #10
0
def api_channel_triggers(channel_id: int):
    with DB.connect() as db:
        triggers = get_triggers(db, channel_id)
        data, errors = TriggerSchema().dump(triggers, many=True)
        return jsonify(triggers=data) if not errors else internal_error()
コード例 #11
0
ファイル: notification.py プロジェクト: darksv/dashboard
 def validate_user_id(self, value):
     with DB.connect() as db:
         if get_user_by_id(db, value) is None:
             raise ValidationError('User with given ID does not exist')
コード例 #12
0
ファイル: notification.py プロジェクト: darksv/dashboard
def api_notifications():
    with DB.connect() as db:
        notifications = get_pending_notifications(db, g.api_user.id)
        return jsonify(notifications=NotificationSchema().dump(notifications, many=True).data)
コード例 #13
0
ファイル: main.py プロジェクト: kilfu0701/sqlalchemy-quick
import yaml

from core import DB
from core.models import *

if __name__ == "__main__":
    current_dir = os.path.dirname(os.path.abspath(__file__))

    # read yaml file
    config = None
    yaml_file = current_dir + '/env.yaml'
    with open(yaml_file, 'r') as f:
        config = yaml.load(f)

    db_master = config['db_master'][0]
    db = DB()
    db.connect('sqlite+pysqlite:///file.db', module=sqlite)
    sess = db.get_session()
    engine = db.get_engine()

    # create tables
    if not engine.dialect.has_table(engine, User.__table__.__str__()):
        User.__table__.create(engine)

    # insert data
    user = User(email='*****@*****.**', first_name='First', last_name='Last')
    sess.add(user)

    # query
    user = sess.query(User).first()
    print(user)
コード例 #14
0
                     'w+')
            sys.stdout = f
            s = Template(self.strTemplate)
            print(
                s.substitute(
                    Name=self.ClassName,
                    NameLower=self.ClassName.lower(),
                    Package=self.Package,
                    Resource=self.processColumns.getApiResource(columns),
                    Post=self.processColumns.getApiParams(columns, "POST"),
                    Put=self.processColumns.getApiParams(columns, "PUT")))
            sys.stdout = orig_stdout
            f.close()


test = DB()
test.setSchema("hhrr_profile_matcher")
test.setTable("hr_app_usuario")

tables = test.getTables()
columns = test.getColumns()

template = ProcessTemplate()
template.setName("Usuario")
template.setPackage("stopwords")

template.setOutPutFolder("OutPut\\api")
template.setSchema("stopwords")

template.setTemplate("templates\\api.py")
template.getTemplate(tables, columns)
コード例 #15
0
def api_channels():
    with DB.connect() as db:
        channels = get_all_channels_ordered(
            db, g.api_user.id) if g.api_user else get_all_channels(db)
        data, errors = ChannelSchema().dump(channels, many=True)
        return jsonify(channels=data) if not errors else internal_error()