Starts work on POCONSOLE-75 for Backup and Restore of PLC values
This commit is contained in:
@@ -19,3 +19,4 @@ manager.create_api(EventConfig, methods=['GET', 'POST', 'DELETE', 'PUT'])
|
||||
manager.create_api(Event, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
|
||||
manager.create_api(RunStatus, methods=['GET', 'POST', 'DELETE'], allow_delete_many=True)
|
||||
manager.create_api(FluidShot, methods=['GET', 'POST', 'DELETE', 'PUT'], allow_delete_many=True)
|
||||
manager.create_api(BackupRestore, methods=['GET', 'POST', 'DELETE', 'PUT'], allow_delete_many=True)
|
||||
|
||||
@@ -5,6 +5,10 @@ from .. import db
|
||||
|
||||
|
||||
class Config(db.Model):
|
||||
"""Configuration table
|
||||
|
||||
Holds the extra configuration parameters
|
||||
"""
|
||||
__tablename__ = "configs"
|
||||
_id = db.Column(db.Integer, primary_key=True)
|
||||
parameter = db.Column(db.String(100), unique=True)
|
||||
@@ -363,3 +367,28 @@ class FluidShot(db.Model):
|
||||
"created_on": self.created_on,
|
||||
"updated_on": self.updated_on,
|
||||
}
|
||||
|
||||
|
||||
class BackupRestore(db.Model):
|
||||
__tablename__ = "backup_restore"
|
||||
_id = db.Column(db.Integer, primary_key=True)
|
||||
tag = db.Column(db.String(128))
|
||||
tag_type = db.Column(db.String(128))
|
||||
device_id = db.Column(db.Integer, db.ForeignKey('devices._id'))
|
||||
device = db.relationship(Device)
|
||||
value = db.Column(db.String(128))
|
||||
created_on = db.Column(db.DateTime(), default=datetime.utcnow)
|
||||
updated_on = db.Column(db.DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||
|
||||
@property
|
||||
def serialize(self):
|
||||
return {
|
||||
"_id": self._id,
|
||||
"tag": self.tag,
|
||||
"tag_type": self.tag_type,
|
||||
"device_id": self.device_id,
|
||||
"device": self.device.serialize,
|
||||
"value": self.value,
|
||||
"created_on": self.created_on,
|
||||
"updated_on": self.updated_on,
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ from datetime import datetime
|
||||
from app import app, db
|
||||
from app.datalogger.models import *
|
||||
from app.datalogger.getDailyTotals import getTotals
|
||||
from pycomm_helper.utils import readTag
|
||||
|
||||
|
||||
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif', 'doc', 'docx', 'xls', 'xlsx', 'zip'])
|
||||
@@ -203,3 +204,33 @@ def get_csv_for_stroke(stroke_number):
|
||||
mimetype="text/csv",
|
||||
headers={"Content-disposition":
|
||||
"attachment; filename=card_{}.csv".format(res._id)})
|
||||
|
||||
|
||||
@app.route('/api/backup_restore_update_all')
|
||||
def update_backup_restore_all():
|
||||
all_br = [i.serialize for i in BackupRestore.query.all()]
|
||||
for i in range(0, len(all_br)):
|
||||
try:
|
||||
# read_value = readTag(all_br[i]['device']['address'], all_br[i]['tag'])
|
||||
read_value = (1.234, 'REAL')
|
||||
all_br[i]['value'] = read_value[0]
|
||||
all_br[i]['tag_type'] = read_value[1]
|
||||
BackupRestore.query.filter_by(_id=all_br[i]['_id']).update({"value": str(all_br[i]['value']), "tag_type": all_br[i]['tag_type']})
|
||||
except:
|
||||
print("Error backing up tag value for tag {}".format(all_br[i]['tag']))
|
||||
continue
|
||||
return jsonify(all_br)
|
||||
|
||||
|
||||
@app.route('/api/backup_restore_update/<int:id>')
|
||||
def update_backup_restore(id):
|
||||
single_br = BackupRestore.query.filter_by(_id=id).one().serialize
|
||||
try:
|
||||
# read_value = readTag(single_br['device']['address'], single_br['tag'])
|
||||
read_value = (1.234, 'REAL')
|
||||
single_br['value'] = read_value[0]
|
||||
single_br['tag_type'] = read_value[1]
|
||||
BackupRestore.query.filter_by(_id=single_br['_id']).update({"value": str(single_br['value']), "tag_type": single_br['tag_type']})
|
||||
except:
|
||||
print("Error backing up tag value for tag {}".format(single_br['tag']))
|
||||
return jsonify(single_br)
|
||||
|
||||
75
app/static/js/backup_restore.factory.js
Normal file
75
app/static/js/backup_restore.factory.js
Normal file
@@ -0,0 +1,75 @@
|
||||
poconsole.factory('BackupRestore', function($q, $http, $log){
|
||||
var service = {};
|
||||
|
||||
service.getBRTag = function(id){
|
||||
var deferred = $q.defer();
|
||||
$http.get('/api/backup_restore/' + id).success(function(data) {
|
||||
deferred.resolve(data);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.createBRTag = function(brTag){
|
||||
$http.post('/api/backup_restore', {
|
||||
tag: brTag.tag,
|
||||
}).success(function(data){
|
||||
return data;
|
||||
});
|
||||
};
|
||||
|
||||
service.updateBRTag = function(brTag){
|
||||
var put_obj = {
|
||||
tag: brTag.tag
|
||||
};
|
||||
|
||||
if (brTag.data_type){
|
||||
put_obj.data_type = brTag.data_type;
|
||||
}
|
||||
|
||||
if (brTag.value){
|
||||
put_ojb.value = brTag.value;
|
||||
}
|
||||
|
||||
$http.put('/api/backup_restore/'+ brTag._id, data=put_obj).success(function(data){
|
||||
return data;
|
||||
}).error(function(err){
|
||||
$log.warn("updateTag Error: " + err);
|
||||
});
|
||||
};
|
||||
|
||||
service.deleteBRTag = function(id){
|
||||
var deferred = $q.defer();
|
||||
var url = '/api/backup_restore/' + id;
|
||||
$http.delete(url).success(function(data) {
|
||||
deferred.resolve({
|
||||
data: data
|
||||
});
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.updateBRTagValuesAll = function(){
|
||||
var deferred = $q.defer();
|
||||
var url = '/api/backup_restore_update_all/';
|
||||
$http.get(url).success(function(data) {
|
||||
deferred.resolve({
|
||||
data: data
|
||||
});
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
service.updateBRTagValuesSingle = function(id){
|
||||
var deferred = $q.defer();
|
||||
var url = '/api/backup_restore_update/' + id.toString();
|
||||
$http.get(url).success(function(data) {
|
||||
deferred.resolve({
|
||||
data: data
|
||||
});
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
|
||||
return service;
|
||||
});
|
||||
@@ -64,15 +64,15 @@ poconsole.factory('Tag',function($q, $http, $log, dateConversion){
|
||||
$http.post('/api/tags', {
|
||||
tag: tag.tag,
|
||||
name: tag.name,
|
||||
tag_class_id: parseInt(tag.tag_class_id),
|
||||
tag_category: tag.tag_category,
|
||||
device_id: parseInt(tag.device_id),
|
||||
description: tag.description,
|
||||
data_type: tag.data_type,
|
||||
change_threshold: tag.change_threshold,
|
||||
guarantee_sec: tag.guarantee_sec,
|
||||
units: tag.units,
|
||||
min_expected: tag.min_expected,
|
||||
max_expected: tag.max_expected,
|
||||
guarantee_sec: tag.guarantee_sec,
|
||||
change_threshold: tag.change_threshold,
|
||||
description: tag.description,
|
||||
data_type_id: parseInt(tag.data_type_id)
|
||||
max_expected: tag.max_expected
|
||||
}).success(function(data){
|
||||
return data;
|
||||
});
|
||||
@@ -83,15 +83,15 @@ poconsole.factory('Tag',function($q, $http, $log, dateConversion){
|
||||
var put_obj = {
|
||||
tag: tag.tag,
|
||||
name: tag.name,
|
||||
tag_class_id: parseInt(tag.tag_class_id),
|
||||
tag_category: tag.tag_category,
|
||||
device_id: parseInt(tag.device_id),
|
||||
description: tag.description,
|
||||
data_type: tag.data_type,
|
||||
change_threshold: tag.change_threshold,
|
||||
guarantee_sec: tag.guarantee_sec,
|
||||
units: tag.units,
|
||||
min_expected: tag.min_expected,
|
||||
max_expected: tag.max_expected,
|
||||
guarantee_sec: tag.guarantee_sec,
|
||||
change_threshold: tag.change_threshold,
|
||||
description: tag.description,
|
||||
data_type_id: parseInt(tag.data_type_id)
|
||||
max_expected: tag.max_expected
|
||||
};
|
||||
console.log({id: tag._id, put_obj: put_obj});
|
||||
$http.put('/api/tags/'+ tag._id, data=put_obj).success(function(data){
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-10 pull-right">
|
||||
<div ng-if="loading" class="well"><img src="/img/loading.gif" style="display: table-cell; vertical-align: middle"/></div>
|
||||
<div ng-if="loading" class="well"><img src="/images/loading.gif" style="display: table-cell; vertical-align: middle"/></div>
|
||||
<div ng-if="!loading">
|
||||
<div ng-if="error" class="well"><h2>Error: {{error}}</h2></div>
|
||||
<div ng-if="!error">
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-10 pull-right">
|
||||
<div ng-if="loading" class="well"><img src="/img/loading.gif" style="display: table-cell; vertical-align: middle"/></div>
|
||||
<div ng-if="loading" class="well"><img src="/images/loading.gif" style="display: table-cell; vertical-align: middle"/></div>
|
||||
<div ng-if="!loading">
|
||||
<div ng-if="error" class="well"><h2>Error: {{error}}</h2></div>
|
||||
<div ng-if="!error">
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-10 pull-right">
|
||||
<div ng-if="loading" class="well"><img src="/img/loading.gif" style="display: table-cell; vertical-align: middle"/></div>
|
||||
<div ng-if="loading" class="well"><img src="/images/loading.gif" style="display: table-cell; vertical-align: middle"/></div>
|
||||
<div ng-if="!loading">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
|
||||
Reference in New Issue
Block a user