You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
5.7 KiB
140 lines
5.7 KiB
from flask import render_template, Blueprint, request, flash, redirect, url_for
|
|
import minibase.theme as theme
|
|
from minibase.blueprints.sensor.models import nbiotDevice
|
|
import minibase.blueprints.sensor.utils as sensorUtils
|
|
from minibase.blueprints.sensor.forms import updateNbioDeviceUpdateForm, updateNbioDeviceAddForm
|
|
import minibase.blueprints.database.utils as dbUtils
|
|
import minibase.blueprints.company.utils as companyUtils
|
|
import minibase.blueprints.user.utils as userUtils
|
|
from minibase.app import db
|
|
import json
|
|
import os
|
|
|
|
sensor = Blueprint('sensor', __name__, template_folder='templates')
|
|
|
|
DATA_FILE = 'data.json'
|
|
|
|
sensor.route('/callback', methods=['POST'])
|
|
def callback():
|
|
data = request.json
|
|
|
|
if not data:
|
|
return jsonify({"error": "Invalid data"}), 400
|
|
|
|
# Read existing data
|
|
if os.path.exists(DATA_FILE):
|
|
with open(DATA_FILE, 'r') as f:
|
|
stored_data = json.load(f)
|
|
else:
|
|
stored_data = []
|
|
|
|
# Append new data
|
|
stored_data.append(data)
|
|
|
|
# Write data back to file
|
|
with open(DATA_FILE, 'w') as f:
|
|
json.dump(stored_data, f, indent=4)
|
|
|
|
return 'Callback received', 200
|
|
|
|
|
|
@sensor.route('/data', methods=['GET'])
|
|
def get_data():
|
|
if os.path.exists(DATA_FILE):
|
|
with open(DATA_FILE, 'r') as f:
|
|
stored_data = json.load(f)
|
|
else:
|
|
stored_data = []
|
|
|
|
return jsonify(stored_data)
|
|
|
|
|
|
@sensor.route('/list', methods=['GET','POST'])
|
|
def list():
|
|
page=request.args.get('page', 1, type=int)
|
|
table=dbUtils.table_printable_paginate(nbiotDevice, page, 20, 'edit/', 'id')
|
|
return(render_template('view.html', theme=theme, table=table, title="Devices List"))
|
|
|
|
|
|
@sensor.route("/edit/<int:deviceId>", methods=['GET', 'POST'])
|
|
def edit(deviceId):
|
|
if deviceId:
|
|
device = nbiotDevice.query.get_or_404(deviceId)
|
|
form = updateNbioDeviceUpdateForm(current_device_id=device.id)
|
|
form.user_id.choices = [(row.id, row.username) for row in userUtils.queryUserNamesWithDefault(device.user_id)]
|
|
form.owner_id.choices = [(row.id, row.username) for row in userUtils.queryUserNamesWithDefault(device.user_id)]
|
|
form.manufacturer_id.choices = [(row.id, row.name) for row in companyUtils.queryNamesWithDefault(device.manufacturer_id)]
|
|
form.company_id.choices = [(row.id, row.name) for row in companyUtils.queryNamesWithDefault(device.company_id)]
|
|
form.status_id.choices = [(row.id, row.name) for row in sensorUtils.queryStatusNamesWithDefault(device.status_id)]
|
|
form.type_id.choices = [(row.id, row.name) for row in sensorUtils.queryTypeNamesWithDefault(device.type_id)]
|
|
form.area_id.choices = [(row.id, row.name) for row in sensorUtils.queryAreaNamesWithDefault(device.area_id)]
|
|
if form.validate_on_submit():
|
|
device.name=form.name.data
|
|
device.serial_no = form.serial_no.data
|
|
device.device_id=form.device_id.data
|
|
device.imsi=form.imsi.data
|
|
device.iccid=form.iccid.data
|
|
device.ip=form.ip.data
|
|
device.port=form.port.data
|
|
device.registration_date=form.registration_date.data
|
|
device.activation_date=form.activation_date.data
|
|
device.deactivation_date=form.deactivation_date.data
|
|
device.owner_id=form.owner_id.data
|
|
device.user_id=form.user_id.data
|
|
device.status_id=form.status_id.data
|
|
device.type_id=form.type_id.data
|
|
device.area_id=form.area_id.data
|
|
device.manufacturer_id = form.manufacturer_id.data
|
|
device.company_id = form.company_id.data
|
|
db.session.commit()
|
|
flash('Device has been successfully updated', 'success')
|
|
return redirect(url_for('sensor.edit', deviceId=deviceId))
|
|
elif request.method == 'GET':
|
|
form.name.data = device.name
|
|
form.serial_no.data = device.serial_no
|
|
form.device_id.data = device.device_id
|
|
form.imsi.data = device.imsi
|
|
form.iccid.data = device.iccid
|
|
form.ip.data = device.ip
|
|
form.port.data = device.port
|
|
form.registration_date.data = device.registration_date
|
|
form.activation_date.data = device.activation_date
|
|
form.deactivation_date.data = device.deactivation_date
|
|
|
|
return render_template('sensor/account.html',
|
|
theme=theme,
|
|
form=form)
|
|
else:
|
|
flash('You need to select a Device id', 'alarm')
|
|
return redirect(url_for('sensor.list'))
|
|
|
|
|
|
@sensor.route('/add', methods=['GET', 'POST'])
|
|
def add():
|
|
form = updateNbioDeviceAddForm()
|
|
form.user_id.choices = [(row.id, row.username) for row in userUtils.queryUserChoices(1)]
|
|
form.status_id.choices = [(row.id, row.name) for row in sensorUtils.queryStatusChoices(1)]
|
|
form.type_id.choices = [(row.id, row.name) for row in sensorUtils.queryTypeChoices(1)]
|
|
form.area_id.choices = [(row.id, row.name) for row in sensorUtils.queryAreaChoices(1)]
|
|
if form.validate_on_submit():
|
|
dev = nbiotDevice(
|
|
name=form.name.data,
|
|
device_id=form.device_id.data,
|
|
imsi=form.imsi.data,
|
|
iccid=form.iccid.data,
|
|
ip=form.ip.data,
|
|
port=form.port.data,
|
|
registration_date=form.registration_date.data,
|
|
activation_date=form.activation_date.data,
|
|
deactivation_date=form.deactivation_date.data,
|
|
user_id=form.user_id.data,
|
|
status_id=form.status_id.data,
|
|
type_id=form.type_id.data,
|
|
area_id=form.area_id.data)
|
|
dbUtils.dbAddAndCommit(dev)
|
|
flash('Device has been successfully added', 'success')
|
|
|
|
return render_template('sensor/account.html',
|
|
theme=theme,
|
|
form=form)
|