class PlomDB:
def __init__(self, db_name):
- self.db_file = db_name + ".json"
- self.lock_file = db_name+ ".lock"
+ self.db_file = db_name
+ self.lock_file = db_name+ '.lock'
if os.path.exists(self.db_file):
- with open(self.db_file, "r") as f:
+ with open(self.db_file, 'r') as f:
self.read_db_file(f)
def lock(self):
def backup(self):
import shutil
from datetime import datetime, timedelta
+ if not os.path.exists(self.db_file):
+ return
+
# collect modification times of numbered .bak files
bak_prefix = f'{self.db_file}.bak.'
backup_dates = []
self.unlock()
-class PlomServer(BaseHTTPRequestHandler):
- header = ''
- footer = ''
-
- def run(self, port):
- from http.server import HTTPServer
- webServer = HTTPServer(('localhost', port), type(self))
- print(f"Server started http://localhost:{port}")
- try:
- webServer.serve_forever()
- except KeyboardInterrupt:
- pass
- webServer.server_close()
- print("Server stopped.")
-
+class PlomHandler(BaseHTTPRequestHandler):
+ homepage = '/'
+ html_head = '<!DOCTYPE html>\n<html>\n<meta charset="UTF-8">'
+ html_foot = '</body>\n</html>'
+
def fail_400(self, e):
- page = f'{self.header}ERROR: {e}{self.footer}'
- self.send_HTML(page, 400)
+ self.send_HTML(f'ERROR: {e}', 400)
def send_HTML(self, html, code=200):
self.send_code_and_headers(code, [('Content-type', 'text/html')])
- self.wfile.write(bytes(html, "utf-8"))
+ self.wfile.write(bytes(f'{self.html_head}\n{html}\n{self.html_foot}', 'utf-8'))
def send_code_and_headers(self, code, headers=[]):
self.send_response(code)
self.send_header(fieldname, content)
self.end_headers()
+ def redirect(self, url='/'):
+ self.send_code_and_headers(302, [('Location', url)])
+
+
-def run_server(port, server_class):
+def run_server(port, handler_class):
from http.server import HTTPServer
- webServer = HTTPServer(('localhost', port), server_class)
+ webServer = HTTPServer(('localhost', port), handler_class)
print(f"Server started http://localhost:{port}")
try:
webServer.serve_forever()