From 7817d13ed7f41212897008f41eb6d63f244021e1 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Sun, 4 Aug 2024 15:38:32 -0500 Subject: [PATCH] Add enough boilerplate to get the templates to render --- src/pgwui_upcen/views/upcen.py | 74 ++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/src/pgwui_upcen/views/upcen.py b/src/pgwui_upcen/views/upcen.py index 522771f..26702a0 100644 --- a/src/pgwui_upcen/views/upcen.py +++ b/src/pgwui_upcen/views/upcen.py @@ -22,10 +22,19 @@ from pyramid.view import view_config import logging import pgwui_core.core +import pgwui_core.exceptions as core_ex import pgwui_core.utils from pgwui_common.view import auth_base_view +from pgwui_upload_core.views.upload import ( + BaseTableUploadHandler, + UploadCoreInitialPost, + match_insert_to_dataline, + set_upload_response, +) + from pgwui_upcen import exceptions as upcen_ex +import psycopg # Useless usage of the imported exceptions to keep `make check` from failing upcen_ex.ExampleOnOffAskError('42') @@ -33,8 +42,67 @@ upcen_ex.ExampleOnOffAskError('42') log = logging.getLogger(__name__) -class YOURUploadHandler(pgwui_core.core.UploadHandler): - pass +class SaveLine(pgwui_core.core.DataLineProcessor, + pgwui_core.core.ParameterExecutor): + def __init__(self, ue, uh, insert_stmt): + ''' + ue UploadEngine instance + uh UploadHandler instance + insert_stmt Statement used to insert into db. + (psycopg3 formatted for substituion) + ''' + super().__init__(ue, uh) + self.insert_stmt = insert_stmt + + def eat(self, udl): + ''' + Upload a line of data into the db. + + udl An UploadDataLine instance + ''' + match_insert_to_dataline(udl, self.insert_stmt) + self.param_execute(self.insert_stmt.stmt, udl) + + +class UpCenUploadHandler(BaseTableUploadHandler): + ''' + Attributes: + request A pyramid request instance + uf A GCUploadForm instance + session A pyramid session instance + ue + cur + ''' + def make_form(self): + ''' + Make the upload form needed by this handler. + ''' + ip = UploadCoreInitialPost() + ip.set_component('pgwui_upcen') + return pgwui_core.core.UploadDoubleTableForm().build( + self, ip=ip) + + def factory(self, ue): + '''Make a db loader function from an UploadEngine. + + Input: + + Side Effects: + Assigns: self.ue, self.cur + And, lots of changes to the db + ''' + + super().factory(ue) + qualified_table = self.uf['table'] + + try: + insert_stmt = self.build_insert_stmt( + ue.data, qualified_table, False, lambda x: x) + + return SaveLine(ue, self, insert_stmt) + except (core_ex.PGWUIError, psycopg.Error): + self.data.lineno = 0 # Don't report partially read number of lines + raise @view_config(route_name='pgwui_upcen', @@ -42,7 +110,7 @@ class YOURUploadHandler(pgwui_core.core.UploadHandler): @auth_base_view def upcen_view(request): - response = pgwui_core.core.UploadEngine(YOURUploadHandler(request)).run() + response = pgwui_core.core.UploadEngine(UpCenUploadHandler(request)).run() settings = request.registry.settings response.setdefault('pgwui', dict()) -- 2.34.1