py.lib
2022-08-27
Parent:84b54a8a6d4c
py.lib/webapp/win.py
. Не импортируем ненужное.
| 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) |