lkj
This commit is contained in:
parent
5b0b3badbb
commit
8316e6d0e2
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,3 +1,11 @@
|
||||
/.venv/Lib
|
||||
/.venv/Scripts
|
||||
/.venv/share
|
||||
/__pycache__
|
||||
__pycache__/env.cpython-311.pyc
|
||||
__pycache__/FlowAnalyserMain.cpython-311.pyc
|
||||
__pycache__/FlowTest.cpython-311.pyc
|
||||
__pycache__/inn.cpython-311.pyc
|
||||
__pycache__/koerselsOverblikUtils.cpython-311.pyc
|
||||
__pycache__/sysjob2html.cpython-311.pyc
|
||||
__pycache__/sysjobs.cpython-311.pyc
|
||||
|
||||
164
.venv/Include/site/python3.11/greenlet/greenlet.h
Normal file
164
.venv/Include/site/python3.11/greenlet/greenlet.h
Normal file
@ -0,0 +1,164 @@
|
||||
/* -*- indent-tabs-mode: nil; tab-width: 4; -*- */
|
||||
|
||||
/* Greenlet object interface */
|
||||
|
||||
#ifndef Py_GREENLETOBJECT_H
|
||||
#define Py_GREENLETOBJECT_H
|
||||
|
||||
|
||||
#include <Python.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* This is deprecated and undocumented. It does not change. */
|
||||
#define GREENLET_VERSION "1.0.0"
|
||||
|
||||
#ifndef GREENLET_MODULE
|
||||
#define implementation_ptr_t void*
|
||||
#endif
|
||||
|
||||
typedef struct _greenlet {
|
||||
PyObject_HEAD
|
||||
PyObject* weakreflist;
|
||||
PyObject* dict;
|
||||
implementation_ptr_t pimpl;
|
||||
} PyGreenlet;
|
||||
|
||||
#define PyGreenlet_Check(op) (op && PyObject_TypeCheck(op, &PyGreenlet_Type))
|
||||
|
||||
|
||||
/* C API functions */
|
||||
|
||||
/* Total number of symbols that are exported */
|
||||
#define PyGreenlet_API_pointers 12
|
||||
|
||||
#define PyGreenlet_Type_NUM 0
|
||||
#define PyExc_GreenletError_NUM 1
|
||||
#define PyExc_GreenletExit_NUM 2
|
||||
|
||||
#define PyGreenlet_New_NUM 3
|
||||
#define PyGreenlet_GetCurrent_NUM 4
|
||||
#define PyGreenlet_Throw_NUM 5
|
||||
#define PyGreenlet_Switch_NUM 6
|
||||
#define PyGreenlet_SetParent_NUM 7
|
||||
|
||||
#define PyGreenlet_MAIN_NUM 8
|
||||
#define PyGreenlet_STARTED_NUM 9
|
||||
#define PyGreenlet_ACTIVE_NUM 10
|
||||
#define PyGreenlet_GET_PARENT_NUM 11
|
||||
|
||||
#ifndef GREENLET_MODULE
|
||||
/* This section is used by modules that uses the greenlet C API */
|
||||
static void** _PyGreenlet_API = NULL;
|
||||
|
||||
# define PyGreenlet_Type \
|
||||
(*(PyTypeObject*)_PyGreenlet_API[PyGreenlet_Type_NUM])
|
||||
|
||||
# define PyExc_GreenletError \
|
||||
((PyObject*)_PyGreenlet_API[PyExc_GreenletError_NUM])
|
||||
|
||||
# define PyExc_GreenletExit \
|
||||
((PyObject*)_PyGreenlet_API[PyExc_GreenletExit_NUM])
|
||||
|
||||
/*
|
||||
* PyGreenlet_New(PyObject *args)
|
||||
*
|
||||
* greenlet.greenlet(run, parent=None)
|
||||
*/
|
||||
# define PyGreenlet_New \
|
||||
(*(PyGreenlet * (*)(PyObject * run, PyGreenlet * parent)) \
|
||||
_PyGreenlet_API[PyGreenlet_New_NUM])
|
||||
|
||||
/*
|
||||
* PyGreenlet_GetCurrent(void)
|
||||
*
|
||||
* greenlet.getcurrent()
|
||||
*/
|
||||
# define PyGreenlet_GetCurrent \
|
||||
(*(PyGreenlet * (*)(void)) _PyGreenlet_API[PyGreenlet_GetCurrent_NUM])
|
||||
|
||||
/*
|
||||
* PyGreenlet_Throw(
|
||||
* PyGreenlet *greenlet,
|
||||
* PyObject *typ,
|
||||
* PyObject *val,
|
||||
* PyObject *tb)
|
||||
*
|
||||
* g.throw(...)
|
||||
*/
|
||||
# define PyGreenlet_Throw \
|
||||
(*(PyObject * (*)(PyGreenlet * self, \
|
||||
PyObject * typ, \
|
||||
PyObject * val, \
|
||||
PyObject * tb)) \
|
||||
_PyGreenlet_API[PyGreenlet_Throw_NUM])
|
||||
|
||||
/*
|
||||
* PyGreenlet_Switch(PyGreenlet *greenlet, PyObject *args)
|
||||
*
|
||||
* g.switch(*args, **kwargs)
|
||||
*/
|
||||
# define PyGreenlet_Switch \
|
||||
(*(PyObject * \
|
||||
(*)(PyGreenlet * greenlet, PyObject * args, PyObject * kwargs)) \
|
||||
_PyGreenlet_API[PyGreenlet_Switch_NUM])
|
||||
|
||||
/*
|
||||
* PyGreenlet_SetParent(PyObject *greenlet, PyObject *new_parent)
|
||||
*
|
||||
* g.parent = new_parent
|
||||
*/
|
||||
# define PyGreenlet_SetParent \
|
||||
(*(int (*)(PyGreenlet * greenlet, PyGreenlet * nparent)) \
|
||||
_PyGreenlet_API[PyGreenlet_SetParent_NUM])
|
||||
|
||||
/*
|
||||
* PyGreenlet_GetParent(PyObject* greenlet)
|
||||
*
|
||||
* return greenlet.parent;
|
||||
*
|
||||
* This could return NULL even if there is no exception active.
|
||||
* If it does not return NULL, you are responsible for decrementing the
|
||||
* reference count.
|
||||
*/
|
||||
# define PyGreenlet_GetParent \
|
||||
(*(PyGreenlet* (*)(PyGreenlet*)) \
|
||||
_PyGreenlet_API[PyGreenlet_GET_PARENT_NUM])
|
||||
|
||||
/*
|
||||
* deprecated, undocumented alias.
|
||||
*/
|
||||
# define PyGreenlet_GET_PARENT PyGreenlet_GetParent
|
||||
|
||||
# define PyGreenlet_MAIN \
|
||||
(*(int (*)(PyGreenlet*)) \
|
||||
_PyGreenlet_API[PyGreenlet_MAIN_NUM])
|
||||
|
||||
# define PyGreenlet_STARTED \
|
||||
(*(int (*)(PyGreenlet*)) \
|
||||
_PyGreenlet_API[PyGreenlet_STARTED_NUM])
|
||||
|
||||
# define PyGreenlet_ACTIVE \
|
||||
(*(int (*)(PyGreenlet*)) \
|
||||
_PyGreenlet_API[PyGreenlet_ACTIVE_NUM])
|
||||
|
||||
|
||||
|
||||
|
||||
/* Macro that imports greenlet and initializes C API */
|
||||
/* NOTE: This has actually moved to ``greenlet._greenlet._C_API``, but we
|
||||
keep the older definition to be sure older code that might have a copy of
|
||||
the header still works. */
|
||||
# define PyGreenlet_Import() \
|
||||
{ \
|
||||
_PyGreenlet_API = (void**)PyCapsule_Import("greenlet._C_API", 0); \
|
||||
}
|
||||
|
||||
#endif /* GREENLET_MODULE */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* !Py_GREENLETOBJECT_H */
|
||||
@ -1,5 +1,5 @@
|
||||
home = C:\Python311
|
||||
home = C:\Users\denker\AppData\Local\Programs\Python\Python311
|
||||
include-system-site-packages = false
|
||||
version = 3.11.4
|
||||
executable = C:\Python311\python.exe
|
||||
command = C:\Python311\python.exe -m venv --upgrade C:\users\denker\Documents\udvikling\Python\FlowAnalyser\.venv
|
||||
executable = C:\Users\denker\AppData\Local\Programs\Python\Python311\python.exe
|
||||
command = C:\Users\denker\AppData\Local\Programs\Python\Python311\python.exe -m venv C:\Users\denker\Udvikling\FlowAnalyser\.venv
|
||||
|
||||
@ -9,6 +9,7 @@ import logging
|
||||
from dateutil import tz
|
||||
from pytz import timezone
|
||||
import koerselsOverblikUtils
|
||||
from koerselsOverblikUtils import OverblikDag
|
||||
|
||||
def create_app(test_config=None):
|
||||
# create and configure the app
|
||||
@ -38,21 +39,8 @@ def create_app(test_config=None):
|
||||
return FlowTest.test()
|
||||
@FlowAnalyserMain.route('/test')
|
||||
def test():
|
||||
listSysjobs=[]
|
||||
listStartSlutjobs=[Sysjobs.getSysjob(session,'BI - Flow - Batch Start – Daglig kl. 20.00',True)[0][0]]
|
||||
listStartSlutjobs.append(Sysjobs.getSysjob(session,'BI - Flow - Batch Slut – Daglig kl. 20.00',True)[0][0])
|
||||
listStartSlutjobs=koerselsOverblikUtils.convertToAlike(listStartSlutjobs,0,30,0)
|
||||
sysjobsAlike=koerselsOverblikUtils.timeRangeMerge(listStartSlutjobs, "Batch køretid",0,30,2)
|
||||
listSysjobs.append(sysjobsAlike)
|
||||
listSysjobs.extend(listStartSlutjobs)
|
||||
sysjobs=Sysjobs.getSysjob(session,'% - Admin - %',False)
|
||||
sysjobs=[a for a in sysjobs if a[0].name not in ["BI - Admin - Kill Blocking Queries","BI - Admin - Flow Job Restarter"]]
|
||||
if(sysjobs!=None and len(sysjobs)>0):
|
||||
sysjobs=koerselsOverblikUtils.convertToAlike(sysjobs,0,30,2)
|
||||
listSysjobs.extend(sysjobs)
|
||||
listSysjobs = [x for x in listSysjobs if len(x.getMedianDag(0,30,2))>0]
|
||||
listSysjobs = sorted(listSysjobs, key=lambda x: x.getMedianDag(0,30,2)[0])
|
||||
return render_template('index.html', test=listSysjobs)#,startSlut=listStartSlutjobs)
|
||||
return render_template('index.html', overblikDag=OverblikDag(session))
|
||||
#return render_template('index.html', test=listSysjobs6)#,startSlut=listStartSlutjobs)
|
||||
@FlowAnalyserMain.route('/test3')
|
||||
def test3():
|
||||
sysjobs=(Sysjobs.getNattensKoersel(session))
|
||||
|
||||
2
env.py
2
env.py
@ -1,4 +1,4 @@
|
||||
server = 'bi-dsa-udv\dsa' # to
|
||||
database = 'udv_denker'
|
||||
username = 'admindenker'
|
||||
password = 'biadmin#kode4rmO1'
|
||||
password = 'Min!sterTj€n€r€nhv3r$ta7s11g3'
|
||||
@ -1,8 +1,37 @@
|
||||
from datetime import datetime
|
||||
from typing import List
|
||||
from typing import Dict, List
|
||||
from sysjobs import Sysjobs
|
||||
|
||||
|
||||
|
||||
class SysjobsGroup:
|
||||
name = None
|
||||
listOfSysjobsInGroup:List['Sysjobs'] = []
|
||||
def __init__(self,name,sysjobs:List['Sysjobs']):
|
||||
self.name=name
|
||||
if(sysjobs!=None and len(sysjobs)>0):
|
||||
self.listOfSysjobsInGroup=sysjobs
|
||||
|
||||
def addToGroup(self,sysjob:Sysjobs):
|
||||
self.listOfSysjobsInGroup.append(sysjob)
|
||||
|
||||
def getSysjobsAlike(self,stepId,antalDage,ugeDage):
|
||||
sysjobsAlike=SysjobsAlike(self.name)
|
||||
sysjobsAlike
|
||||
sysjobsAlike.stepId=stepId
|
||||
sysjobsAlike.antalDage=antalDage
|
||||
sysjobsAlike.ugeDage=ugeDage
|
||||
for job in self.listOfSysjobsInGroup:
|
||||
if(not isinstance(job,Sysjobs)):
|
||||
job=job[0]
|
||||
medianDag=job.getMedianDag(stepId,antalDage,ugeDage)
|
||||
if sysjobsAlike.startTime is None or sysjobsAlike.startTime>medianDag[0]:
|
||||
sysjobsAlike.startTime=medianDag[0]
|
||||
if sysjobsAlike.endTime is None or sysjobsAlike.endTime<medianDag[1]:
|
||||
sysjobsAlike.endTime=medianDag[1]
|
||||
return sysjobsAlike
|
||||
|
||||
|
||||
class SysjobsAlike:
|
||||
name=None
|
||||
startTime=None
|
||||
@ -52,4 +81,37 @@ def convertToAlike(mainList : List,stepId,antalDage,ugeDage):
|
||||
jobAlike.startTime=medianDag[0]
|
||||
jobAlike.endTime=medianDag[1]
|
||||
returnList.append(jobAlike)
|
||||
return returnList
|
||||
return returnList
|
||||
|
||||
def getOverblikDag(session,dag,resList,):
|
||||
return
|
||||
|
||||
class OverblikDag:
|
||||
session=None
|
||||
dagsList:Dict={}
|
||||
|
||||
def __init__(self,session):
|
||||
self.session=session
|
||||
|
||||
def getKoerselsOverblikForDag(self,dag):
|
||||
if(self.dagsList.get(dag)==None):
|
||||
listSysjobs=[]
|
||||
startStobjobs:Sysjobs = []
|
||||
startStobjobs.append(Sysjobs.getSysjob(self.session,'BI - Flow - Batch Start – Daglig kl. 20.00',True)[0][0])
|
||||
startStobjobs.append(Sysjobs.getSysjob(self.session,'BI - Flow - Batch Slut – Daglig kl. 20.00',True)[0][0])
|
||||
startStopGroup=SysjobsGroup("Batch Kørsel",startStobjobs)
|
||||
|
||||
sysjobs=Sysjobs.getSysjob(self.session,'% - Admin - %',False)
|
||||
sysjobs=[a for a in sysjobs if a[0].name not in ["BI - Admin - Kill Blocking Queries","BI - Admin - Flow Job Restarter"]]
|
||||
|
||||
adminPostJobs=SysjobsGroup("Batch kørsel post jobs - Admin",[a for a in sysjobs if a[0].name in ["BI - Admin - Log TableRowCounts","BI - Admin - BiBackup","BI - Admin - shrink staging filgruppe samt log filer","BI - Admin - Dimension and Map Table checker","BI - Admin - Log Post Batch Flow",
|
||||
"BI - Admin - Sikkerhedskontrol","BI - Admin - Check Indexes"]])
|
||||
sysjobs=[a for a in sysjobs if a[0].name not in [a[0].name for a in adminPostJobs.listOfSysjobsInGroup]]
|
||||
|
||||
sysjobs.extend(startStobjobs)
|
||||
sysjobs=convertToAlike(sysjobs,0,30,dag)
|
||||
sysjobs.append(startStopGroup.getSysjobsAlike(0,30,dag))
|
||||
sysjobs.append(adminPostJobs.getSysjobsAlike(0,30,dag))
|
||||
|
||||
self.dagsList[dag]=sorted(sysjobs, key=lambda x: x.getMedianDag(0,30,dag)[0])
|
||||
return self.dagsList.get(dag)
|
||||
|
||||
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
@ -18,7 +18,7 @@
|
||||
|
||||
|
||||
data.addRows([
|
||||
|
||||
{% set test = overblikDag.getKoerselsOverblikForDag(1) %}
|
||||
{% for job in test %}
|
||||
['{{ job.name }}','{{ job.name }}',new Date("{{ job.getMedianDag(0,30,2)[0] }}"),new Date("{{ job.getMedianDag(0,30,2)[1] }}")],
|
||||
{% endfor %}
|
||||
@ -32,8 +32,37 @@
|
||||
chart.draw(data, options);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<script type="text/javascript">
|
||||
google.charts.load('current', {'packages':['timeline']});
|
||||
google.charts.setOnLoadCallback(drawChart);
|
||||
function drawChart() {
|
||||
var container = document.getElementById('chart2_div');
|
||||
var chart = new google.visualization.Timeline(container);
|
||||
var data = new google.visualization.DataTable();
|
||||
data.addColumn({ type: 'string', id: 'President' });
|
||||
data.addColumn({ type: 'string', id: 'President2' });
|
||||
data.addColumn({ type: 'date', id: 'Start' });
|
||||
data.addColumn({ type: 'date', id: 'End' });
|
||||
|
||||
|
||||
data.addRows([
|
||||
{% set test = overblikDag.getKoerselsOverblikForDag(2) %}
|
||||
{% for job in test %}
|
||||
['{{ job.name }}','{{ job.name }}',new Date("{{ job.getMedianDag(0,30,2)[0] }}"),new Date("{{ job.getMedianDag(0,30,2)[1] }}")],
|
||||
{% endfor %}
|
||||
]);
|
||||
var calHeight = data.getNumberOfRows() * 45
|
||||
var options = {
|
||||
height: calHeight,
|
||||
timeline: { groupByRowLabel: true }
|
||||
};
|
||||
|
||||
chart.draw(data, options);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="chart_div"></div>
|
||||
<div id="chart2_div"></div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user