Found more code examples from STM. Used claude to generate a summary (CLAUDE.md)

This commit is contained in:
wes
2026-02-11 06:05:20 -05:00
parent cf0edba776
commit c4b970cbde
33 changed files with 6077 additions and 1 deletions
+100
View File
@@ -0,0 +1,100 @@
'''
Auto close SOs in Sunbury Jomar based on what went to history in the AS400 last weekend.
To be run every Monday morning.
Created on: 2018-04-05
@author: Wes
'''
import pyodbc, time, logging, sys, os, StringIO, csv, sqlite3
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql.expression import update
EXTRACT_QUERY = 'SELECT ordera FROM wes.sotohist'
logger = None
LOG_LEVEL = logging.DEBUG
engine = create_engine("mssql+pyodbc://jsisbprod", echo=False)
Base = declarative_base(engine)
metadata = Base.metadata
# Jomar Order Header Table
class TXUYUV00(Base):
__tablename__ = 'TXUYUV00'
__table_args__ = {'autoload':True}
def initializeLogger(name='log'):
global logger
global MESSAGE
#logger = logging.getLogger(__name__)
logger = logging.getLogger(name)
if len(logger.handlers) > 0:
return logger
logger.setLevel(LOG_LEVEL)
handler = logging.FileHandler('D:\\' + name + '.log')
handler.setLevel(LOG_LEVEL)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
#Also send logs > DEBUG to stdout
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
#Capture log messages in a string for e-mail alert
MESSAGE = StringIO.StringIO()
sh = logging.StreamHandler(MESSAGE)
sh.setLevel(logging.DEBUG)
sh.setFormatter(formatter)
logger.addHandler(sh)
def loadSession():
global engine
Session = sessionmaker(bind=engine)
session = Session()
return session
def so_auto_close_main():
os.chdir('D:\\')
initializeLogger('Jomar_SO_auto_close')
logger.debug('--------------------------------------------------------------------------------')
archived_as400_orders = []
logger.info('Opening connection with AS400...')
connection = pyodbc.connect(
driver='{iSeries Access ODBC Driver}',
system='SUNBURY',
uid=os.environ['AS400_UID'],
pwd=os.environ['AS400_PWD'],
autocommit=True)
c1 = connection.cursor()
logger.info('Fetching list of newly archived orders from AS400...')
for r in c1.execute(EXTRACT_QUERY):
archived_as400_orders.append(r[0])
logger.debug(archived_as400_orders)
logger.debug('Disconnecting from AS400...')
c1.close()
logger.info('Connecting to JSISBPROD...')
session = loadSession()
logger.info('Closing Jomar order headers...')
ex = update(TXUYUV00.__table__).where(TXUYUV00.URBPO.in_(archived_as400_orders)).values(UAKT=u"X")
session.execute(ex)
session.commit()
logger.debug('Disconnecting from JSISBPROD...')
session.close()
if __name__ == '__main__':
so_auto_close_main()