Aggrid not processing gridoptions after postback

POC only to determine if aggrid will meet the requirements.

First run through updates the grid and allows the user to update data, Postbank processes and disable’s the column and enables a new column for editing this is not reflected in the AGGRID ?
I Would appreciate any constructive feedback.

-----CODE----

from copy import deepcopy
import copy
from operator import truediv
import streamlit as st
import pandas as pd
import numpy as np
import json
from datetime import datetime
from datetime import date
from st_aggrid import AgGrid, GridOptionsBuilder, JsCode, GridUpdateMode
import pyodbc
import json
from copy import deepcopy
import os.path

def nowstr():
return str(datetime.now())

@st.experimental_singleton()
def getdata():
conn = pyodbc.connect(“—connectionstring----”)
strSQL = “SELECT top 4 * FROM table”
return pd.read_sql(strSQL, conn)

def resetsession():
st.session_state[“lookup”] = 0
st.session_state.column = “not set”
st.session_state.value = -1
st.session_state.rowindex = -1
st.session_state.now = nowstr()

def gboptionsetup(gb, vvalues):
gb.configure_column(“PCode”, editable = False)
gb.configure_column(“PDescription”, editable = False)
gb.configure_column(“Manufacturer”, editable = False)
gb.configure_column(“Category”, editable = False)
if st.session_state[“lookup”] == 0:
st.write(“Brand lookup”)
gb.configure_column(‘Brand’,
cellEditor=‘agRichSelectCellEditor’,
cellEditorParams=vvalues,
cellEditorPopup=True,
editable = True
)
else:
gb.configure_column(“Brand”, editable = False)

if st.session_state["lookup"] == 1:
    st.write("Packsize lookup")
    gb.configure_column("Packsize",
        cellEditor='agRichSelectCellEditor',
        cellEditorParams=vvalues,
        cellEditorPopup=True,
        editable = True
    )
else:
    gb.configure_column("Packsize", editable = False)

gb.configure_column("Size", editable = False)
return gb

def setuplookup():
dd = {}
if st.session_state[“lookup”] == 0:
dd = “1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“0”
return {‘values’: dd}
else:
st.write(“look up 2”)
dd = “A”,“B”,“C”,“D”,“E”,“F”,“G”,“H”,“I”,“J”
return {‘values’: dd}

#----------------- Processing

if ‘lookup’ not in st.session_state:
resetsession()
olddf = getdata()
df = getdata()
st.session_state.olddf = olddf
else:
olddf = st.session_state.olddf
df = pd.DataFrame(st.session_state.WBgrid[‘rowData’])
cellchange = pd.DataFrame()
if bool(st.session_state.WBgrid):
cellchange = olddf.compare(df)
else:
cellchange = pd.DataFrame()

if (len(cellchange)) > 0:
    st.session_state["lookup"] = 1

vvalues = setuplookup()

gb = GridOptionsBuilder.from_dataframe(df)

gb = gboptionsetup(gb, vvalues)
gboptions = gb.build()

st.header(“WB Project”)

response = AgGrid(
df,
gridOptions=gboptions,
fit_columns_on_grid_load=True,
allow_unsafe_jscode=True,
enable_enterprise_modules=True,
reload_data=True,
key= “WBgrid”
)