py.lib

Yohn Y. 2023-01-30 Parent:84b54a8a6d4c

44:bfc3a109c06c Go to Latest

py.lib/webapp/win.py

. Убираем лишние форматированные строки * Проблема с созданием вложенных журналов в сложных ситуациях с локами и ротируемым журналом.

History
awgur@2 1 # -*- coding: utf-8 -*-
awgur@2 2 # ---
awgur@2 3 # Модуль среды приложений для Windows
awgur@2 4 # ---
awgur@2 5
awgur@2 6 from bottle import Bottle as App, request as Req, response as Ans, SimpleTemplate as BottleTemplate, abort as Abort
awgur@2 7 from os.path import dirname, abspath as pAbs, split as pSplit, join as pJoin
awgur@2 8
awgur@34 9
awgur@2 10 # --- CLASSES ---
awgur@2 11 class ReqEnv:
awgur@34 12 def __init__(self):
awgur@34 13 self.urlBase = Req.environ.get('SCRIPT_NAME', '')
awgur@34 14
awgur@34 15 def getUrl(self, url):
awgur@34 16 url = str(url)
awgur@34 17 buf = self.urlBase
awgur@34 18 buf += url if url.startswith('/') else '/' + url
awgur@34 19 return buf
awgur@34 20
awgur@34 21 def __getitem__(self, key):
awgur@34 22 return Req.environ[key]
awgur@34 23
awgur@34 24 def __iter__(self):
awgur@34 25 for key in Req.environ.keys():
awgur@34 26 yield key
awgur@34 27
awgur@34 28 @staticmethod
awgur@34 29 def abort(*a, **ka):
awgur@34 30 Abort(*a, **ka)
awgur@34 31
awgur@34 32 @staticmethod
awgur@34 33 def get(self):
awgur@34 34 return Req.GET
awgur@34 35
awgur@34 36 @staticmethod
awgur@34 37 def post():
awgur@34 38 return Req.POST
awgur@34 39
awgur@34 40
awgur@2 41 class Env:
awgur@34 42 def __init__(self, scFile):
awgur@34 43 self.wd = pSplit(dirname(pAbs(scFile)))[0]
awgur@34 44 self.static = pJoin(self.wd, 'static')
awgur@34 45
awgur@34 46 def http(self, tplName):
awgur@34 47 return BottleTemplate(name=pJoin(self.wd, 'http', '%s.html' % tplName)).render
awgur@34 48
awgur@34 49 def db(self):
awgur@34 50 """
awgur@2 51 Путь к базе SQLite, иные типы БД дожны иметь более
awgur@2 52 серьёзные средства авторизации
awgur@2 53 """
awgur@34 54 return pJoin(self.wd, 'db.sqlite')
awgur@34 55
awgur@34 56 @staticmethod
awgur@34 57 def httpTpl(buf):
awgur@34 58 return BottleTemplate(buf).render
awgur@34 59
awgur@34 60 @staticmethod
awgur@34 61 def app():
awgur@34 62 return App()
awgur@34 63
awgur@34 64 @staticmethod
awgur@34 65 def appRun(app):
awgur@34 66 app.run(server='cgi')
awgur@34 67
awgur@34 68
awgur@2 69 # --- PROCS ---
awgur@2 70 def runApp(app):
awgur@34 71 Env.appRun(app)
awgur@34 72
awgur@34 73
awgur@2 74 def Template(buf):
awgur@34 75 return Env.httpTpl(buf)