Patron Export

Notes on Patorn Export so that I don’t forget.

        classDiagram
    class Patrons{
      -DataFrame df
      rows_given()
    }
    class Patron{
      -XMLNode data
      +primary_id()
      +umid()
    }
    class ILLiadPatron{
      -Patron data
      +row()
    }
    class LibAuthPatron{
      -Patron data
      +row()
    }
    

We would call the program like this:

python -m aim patron-export libauth --input=/app/tmp/alma_export.xml --output=/app/tmp/output.tsv
python -m aim patron-export illiad --input=/app/tmp/alma_export.xml --output=/app/tmp/output.tsv

The typer function would look like:

import pandas as pd:
import csv
def patron_export(kind, input, output):
    df = pd.read_xml(input)
    p = Patrons(df)
    with open(output, "w") as fh:
      writer = csv.writer(rf, delimiter="\t", lineterminator="\n")
      writer.write_rows(p.rows_given(kind))

In the classes it’d be something like:

class Patrons:
    def __init__(self, data: DataFrame):
        self.data = data

    def rows_given(kind)
      if kind == "illiad"
         klass = ILLiadPatron
      elif kind == "libauth"
         klass = LibAuthPatron
      return self.data.apply(make_patron) #or something

    def make_patron_row(row,klass):
        return klass(Patron(row)).row()

Client Python can handle reporting to the push gateway.

Or… a separate json report file, that can be added together later and sent to the push gateway. So… Report dataclass? Probably. One that can do incrementing.