4 Commits

Author SHA1 Message Date
Patrick McDonagh
cf49309391 Moves files around 2016-12-06 17:13:15 -06:00
Patrick McDonagh
b0b964c45a also install hp_webserver.datalogger 2016-12-06 16:39:33 -06:00
Patrick McDonagh
5de541fc59 fix package importing for __init__.py 2016-12-06 16:33:56 -06:00
Patrick McDonagh
43f9ed378b changes app folder to hp_webserver to match package name 2016-12-06 16:26:44 -06:00
107 changed files with 53 additions and 567 deletions

5
.gitignore vendored
View File

@@ -5,7 +5,4 @@ sails/.tmp
.remote-sync.json
database.db
venv/
.vscode/
pyr_test/env/lib/python2.7/site-packages/pyramid/tests/test_scaffolds/fixture_scaffold/development.ini_tmpl
pyr_test/env/
pyr_test/hp_webserver/poconsole.egg-info/
Henry_Pump_WebServer.egg-info/

View File

@@ -1,4 +1,5 @@
# app/__init__.py
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
@@ -8,17 +9,17 @@ from flask_sqlalchemy import SQLAlchemy
UPLOAD_FOLDER = os.path.join(os.getcwd(), 'app', 'docs')
app = Flask('app', static_url_path='')
app = Flask('app', static_url_path='', static_folder="hp_webserver/static")
app.config.update(
DEBUG=True,
# SQLALCHEMY_DATABASE_URI='mysql+mysqlconnector://website:henrypump@127.0.0.1/poconsole'
SQLALCHEMY_DATABASE_URI='sqlite:///../database.db',
SQLALCHEMY_DATABASE_URI='sqlite:///./database.db',
)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
app.secret_key = 'henry_pump'
db = SQLAlchemy(app)
from datalogger import views
from datalogger import api
from datalogger.models import *
from hp_webserver.datalogger import views
from hp_webserver.datalogger import api
from hp_webserver.datalogger.models import *

1
hp_webserver/__main__.py Normal file
View File

@@ -0,0 +1 @@
print("MAIN IN hp_datalogger")

View File

@@ -0,0 +1 @@
print("THIS IS THE MAIN FROM datalogger")

View File

@@ -2,8 +2,8 @@ from pycomm.ab_comm.clx import Driver as ClxDriver
import traceback
import math
from app.datalogger.models import Device
from app import db
from hp_webserver.datalogger.models import Device
from hp_webserver import db
def getMainPLC():

View File

@@ -7,9 +7,9 @@ from sqlalchemy import and_, desc
from sqlalchemy.sql import func
from datetime import datetime
from app import app, db
from app.datalogger.models import *
from app.datalogger.getDailyTotals import getTotals
from hp_webserver import app, db
from hp_webserver.datalogger.models import *
from hp_webserver.datalogger.getDailyTotals import getTotals
from pycomm_helper.utils import readTag, writeTag
from random import random
@@ -52,6 +52,7 @@ def tagsattime_to_obj(tup):
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def catch_all(path):
print("caught something!")
return app.send_static_file('index.html')

View File

Before

Width:  |  Height:  |  Size: 357 KiB

After

Width:  |  Height:  |  Size: 357 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 130 KiB

View File

@@ -53,7 +53,7 @@ poconsole.factory('Tag',function($q, $http, $log, dateConversion){
var deferred = $q.defer();
$http.get('/api/latest').success(function(data) {
var vals = data.map(function(v){
v.datetime = Date.create(v.datetime + "Z", { fromUTC: true });
v.created_on = Date.create(v.created_on + "Z", { fromUTC: true });
return v;
});
deferred.resolve(vals);

View File

@@ -1,49 +0,0 @@
[app:main]
use = egg:poconsole
pyramid.reload_templates = true
pyramid.includes =
pyramid_debugtoolbar
pyramid_tm
sqlalchemy.url = sqlite:///%(here)s/poconsole.sqlite
[server:main]
use = egg:pyramid#wsgiref
host = 0.0.0.0
port = 6543
# Begin logging configuration
[loggers]
keys = root, poconsole, sqlalchemy.engine.base.Engine
[logger_poconsole]
level = DEBUG
handlers =
qualname = poconsole
[handlers]
keys = console
[formatters]
keys = generic
[logger_root]
level = INFO
handlers = console
[logger_sqlalchemy.engine.base.Engine]
level = INFO
handlers =
qualname = sqlalchemy.engine.base.Engine
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic
[formatter_generic]
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
# End logging configuration

View File

@@ -1,35 +0,0 @@
from pyramid.config import Configurator
from sqlalchemy import engine_from_config
from .models import DBSession, Base
def main(global_config, **settings):
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)
Base.metadata.bind = engine
config = Configurator(settings=settings,
root_factory='poconsole.models.Root')
config.include('pyramid_chameleon')
# Configs
config.add_route('configs', '/api/configs')
config.add_route('config', '/api/configs/{_id}')
# Configs
config.add_route('configs', '/api/configs')
config.add_route('config', '/api/configs/{_id}')
# Device Types
config.add_route('device_types', '/api/device_types')
config.add_route('device_type', '/api/device_types/{_id}')
config.add_route('wiki_view', '/')
config.add_route('wikipage_add', '/add')
config.add_route('wikipage_view', '/{uid}')
config.add_route('wikipage_edit', '/{uid}/edit')
config.add_static_view('deform_static', 'deform:static/')
config.scan('.views')
return config.make_wsgi_app()

View File

@@ -1,61 +0,0 @@
import os
import sys
import transaction
from sqlalchemy import engine_from_config
from pyramid.paster import (
get_appsettings,
setup_logging,
)
from .models import (
DBSession,
Config,
Device_type,
Device,
Doc,
Tag,
Tag_val,
Card,
GaugeOffVal,
WellTest,
Note,
EventConfig,
Event,
RunStatus,
FluidShot,
BackupRestore,
Base,
)
def usage(argv):
cmd = os.path.basename(argv[0])
print('usage: %s <config_uri>\n'
'(example: "%s development.ini")' % (cmd, cmd))
sys.exit(1)
def main(argv=sys.argv):
if len(argv) != 2:
usage(argv)
config_uri = argv[1]
setup_logging(config_uri)
settings = get_appsettings(config_uri)
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)
Base.metadata.create_all(engine)
with transaction.manager:
# Device Type Seeds
device_type_CLX = Device_type(device_type='CLX')
device_type_u800 = Device_type(device_type='Micro800')
device_type_E300 = Device_type(device_type='E300')
DBSession.add(device_type_CLX)
DBSession.add(device_type_u800)
DBSession.add(device_type_E300)
# Device Seeds
main_plc = Device(device_type_id=1, address="192.168.1.10")
DBSession.add(main_plc)

View File

@@ -1,221 +0,0 @@
from pyramid.security import Allow, Everyone
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
Text,
String,
Float,
DateTime,
ForeignKey,
)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import (
scoped_session,
sessionmaker,
relationship
)
from zope.sqlalchemy import ZopeTransactionExtension
DBSession = scoped_session(
sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()
# class Page(Base):
# __tablename__ = 'wikipages'
# uid = Column(Integer, primary_key=True)
# title = Column(Text, unique=True)
# body = Column(Text)
class Config(Base):
__tablename__ = "configs"
_id = Column(Integer, primary_key=True)
parameter = Column(String(100), unique=True)
val = Column(String(100), unique=True)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Device_type(Base):
__tablename__ = "device_types"
_id = Column(Integer, primary_key=True)
device_type = Column(String(64))
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Device(Base):
__tablename__ = "devices"
_id = Column(Integer, primary_key=True)
device_type_id = Column(Integer, ForeignKey('device_types._id'))
device_type = relationship(Device_type, primaryjoin=device_type_id == Device_type._id)
address = Column(String(256))
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Doc(Base):
__tablename__ = "docs"
_id = Column(Integer, primary_key=True)
name = Column(String(256))
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Tag(Base):
__tablename__ = "tags"
_id = Column(Integer, primary_key=True)
name = Column(String(64))
tag = Column(String(128))
tag_category = Column(String(128))
device_id = Column(Integer, ForeignKey('devices._id'))
device = relationship(Device)
description = Column(String(64))
data_type = Column(String(64))
change_threshold = Column(Float)
guarantee_sec = Column(Integer)
map_function = Column(String(64))
units = Column(String(10))
min_expected = Column(Float)
max_expected = Column(Float)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Tag_val(Base):
__tablename__ = "tag_vals"
_id = Column(Integer, primary_key=True)
tag_id = Column(Integer, ForeignKey('tags._id'))
tag = relationship(Tag)
value = Column(Float)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Card(Base):
__tablename__ = "cards"
_id = Column(Integer, primary_key=True)
stroke_type = Column(String(32))
stroke_number = Column(Integer)
surf_pos = Column(Text)
surf_lod = Column(Text)
down_pos = Column(Text)
down_lod = Column(Text)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class GaugeOffVal(Base):
__tablename__ = "gauge_off"
_id = Column(Integer, primary_key=True)
spm_average = Column(Float)
downhole_gross_stroke_average = Column(Float)
downhole_net_stroke_average = Column(Float)
electricity_cost_total = Column(Float)
fluid_level_average = Column(Float)
full_card_production_total = Column(Float)
inflow_rate_average = Column(Float)
kWh_used_total = Column(Float)
kWh_regen_total = Column(Float)
lifting_cost_average = Column(Float)
peak_pr_load = Column(Float)
min_pr_load = Column(Float)
percent_run = Column(Float)
polished_rod_hp_average = Column(Float)
pump_hp_average = Column(Float)
production_total = Column(Float)
pump_intake_pressure_average = Column(Float)
surface_stroke_length_average = Column(Float)
tubing_movement_average = Column(Float)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class WellTest(Base):
__tablename__ = "well_tests"
_id = Column(Integer, primary_key=True)
duration_hours = Column(Float)
volume_h2o_actual = Column(Float)
volume_oil_actual = Column(Float)
volume_gas_actual = Column(Float)
volume_h2o_projected = Column(Float)
volume_oil_projected = Column(Float)
volume_gas_projected = Column(Float)
api_gravity_oil = Column(Float)
spc_gravity_h2o = Column(Float)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Note(Base):
__tablename__ = "notes"
_id = Column(Integer, primary_key=True)
note_text = Column(String(256))
author = Column(String(128))
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class EventConfig(Base):
__tablename__ = "event_configs"
_id = Column(Integer, primary_key=True)
name = Column(String(64))
event_type = Column(String(64))
tag = Column(String(128))
condition = Column(String(64))
device_id = Column(Integer, ForeignKey('devices._id'))
device = relationship(Device)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Event(Base):
__tablename__ = "events"
_id = Column(Integer, primary_key=True)
event_id = Column(Integer, ForeignKey('event_configs._id'))
event = relationship(EventConfig)
event_type = Column(String(64))
event_condition = Column(String(64))
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class RunStatus(Base):
__tablename__ = "run_status_log"
_id = Column(Integer, primary_key=True)
run_status = Column(String(64))
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class FluidShot(Base):
__tablename__ = "fluid_shots"
_id = Column(Integer, primary_key=True)
pump_intake_pressure = Column(Float)
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class BackupRestore(Base):
__tablename__ = "backup_restore"
_id = Column(Integer, primary_key=True)
tag = Column(String(128))
tag_type = Column(String(128))
device_id = Column(Integer, ForeignKey('devices._id'))
device = relationship(Device)
value = Column(String(128))
created_on = Column(DateTime(), default=datetime.utcnow)
updated_on = Column(DateTime(), default=datetime.utcnow, onupdate=datetime.utcnow)
class Root(object):
__acl__ = [(Allow, Everyone, 'view'),
(Allow, 'group:editors', 'edit')]
def __init__(self, request):
pass

Some files were not shown because too many files have changed in this diff Show More