pjdev-sqlmodel 4.3.0__tar.gz → 4.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/PKG-INFO +1 -1
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/__about__.py +1 -1
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/utilities.py +78 -4
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/.gitignore +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/LICENSE.txt +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/README.md +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/pyproject.toml +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/__init__.py +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/models/__init__.py +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/models/db_models.py +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/models/settings_models.py +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/settings_service.py +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/src/pjdev_sqlmodel/sqlmodel_service.py +0 -0
- {pjdev_sqlmodel-4.3.0 → pjdev_sqlmodel-4.3.1}/tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pjdev-sqlmodel
|
|
3
|
-
Version: 4.3.
|
|
3
|
+
Version: 4.3.1
|
|
4
4
|
Project-URL: Documentation, https://gitlab.purplejay.net/keystone/python
|
|
5
5
|
Project-URL: Issues, https://gitlab.purplejay.net/keystone/python/issues
|
|
6
6
|
Project-URL: Source, https://gitlab.purplejay.net/keystone/python
|
|
@@ -8,6 +8,7 @@ import pandas as pd
|
|
|
8
8
|
from openpyxl.reader.excel import load_workbook
|
|
9
9
|
from loguru import logger
|
|
10
10
|
from sqlalchemy import Engine
|
|
11
|
+
from sqlmodel import select
|
|
11
12
|
|
|
12
13
|
from pjdev_sqlmodel import session_context, sqlmodel_service
|
|
13
14
|
from pjdev_sqlmodel.models import ModelBase
|
|
@@ -15,10 +16,14 @@ from pjdev_sqlmodel.models import ModelBase
|
|
|
15
16
|
T = TypeVar("T", bound=ModelBase)
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
def get_files_in_directory(directory: Path) -> List[Path]:
|
|
19
|
-
|
|
20
|
-
f for f in directory.glob("
|
|
19
|
+
def get_files_in_directory(directory: Path, file_name='*', force_presence=False) -> List[Path]:
|
|
20
|
+
file_obj = [f for f in directory.glob(f"**/{file_name}.xlsx") if not f.name.startswith("~$")] + [
|
|
21
|
+
f for f in directory.glob(f"**/{file_name}.csv")
|
|
21
22
|
]
|
|
23
|
+
if force_presence and len(file_obj) == 0:
|
|
24
|
+
logger.error(f'Failed to find files matching the {directory}/{file_name} pattern and presence is required. Exiting...')
|
|
25
|
+
exit(1)
|
|
26
|
+
return file_obj
|
|
22
27
|
|
|
23
28
|
|
|
24
29
|
def get_csv_columns(file_path):
|
|
@@ -167,6 +172,75 @@ def load_raw_excel_data(
|
|
|
167
172
|
)
|
|
168
173
|
|
|
169
174
|
|
|
175
|
+
def convert_table_to_df(InputTable: type[BaseModel]):
|
|
176
|
+
with session_context() as session:
|
|
177
|
+
statement = select(InputTable)
|
|
178
|
+
results = session.exec(statement).all()
|
|
179
|
+
|
|
180
|
+
headers = []
|
|
181
|
+
field_names = []
|
|
182
|
+
for name, annotation in InputTable.__annotations__.items():
|
|
183
|
+
field = InputTable.__fields__[name]
|
|
184
|
+
alias = field.alias if field.alias else name
|
|
185
|
+
headers.append(alias)
|
|
186
|
+
field_names.append(name)
|
|
187
|
+
|
|
188
|
+
data = []
|
|
189
|
+
for res in results:
|
|
190
|
+
new_obj = {}
|
|
191
|
+
for i in range(len(headers)):
|
|
192
|
+
header = headers[i]
|
|
193
|
+
field_name = field_names[i]
|
|
194
|
+
new_obj[header] = getattr(res, field_name)
|
|
195
|
+
data.append(new_obj)
|
|
196
|
+
df = pd.DataFrame(data)
|
|
197
|
+
return df
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def convert_table_to_csv(InputTable: type[BaseModel], file: Path):
|
|
201
|
+
df = convert_table_to_df(InputTable)
|
|
202
|
+
df.to_csv(file, index=False)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def export_to_sheet(InputTable: type[BaseModel], wb: Workbook, sheet_name: str, table_name: str = None, hide_sheet=False):
|
|
206
|
+
df = convert_table_to_df(InputTable)
|
|
207
|
+
ws = wb.create_sheet(title=sheet_name)
|
|
208
|
+
if hide_sheet:
|
|
209
|
+
ws.sheet_state = 'hidden'
|
|
210
|
+
|
|
211
|
+
if table_name:
|
|
212
|
+
ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=len(df.columns))
|
|
213
|
+
cell = ws.cell(row=1, column=1)
|
|
214
|
+
cell.value = table_name
|
|
215
|
+
cell.font = Font(bold=True)
|
|
216
|
+
cell.alignment = Alignment(horizontal="center")
|
|
217
|
+
start_row = 2
|
|
218
|
+
ws.row_dimensions[1].height = 40.5
|
|
219
|
+
ws.row_dimensions[2].height = 30.75
|
|
220
|
+
else:
|
|
221
|
+
start_row = 1
|
|
222
|
+
ws.row_dimensions[1].height = 30.75
|
|
223
|
+
|
|
224
|
+
for r_idx, row in enumerate(dataframe_to_rows(df, index=False, header=True), start=start_row):
|
|
225
|
+
for c_idx, value in enumerate(row, start=1):
|
|
226
|
+
cell = ws.cell(row=r_idx, column=c_idx, value=value)
|
|
227
|
+
if r_idx == start_row:
|
|
228
|
+
cell.font = Font(bold=True)
|
|
229
|
+
cell.alignment = Alignment(horizontal="center")
|
|
230
|
+
|
|
231
|
+
for col_idx in range(1, len(df.columns) + 1):
|
|
232
|
+
column_letter = get_column_letter(col_idx)
|
|
233
|
+
max_length = 0
|
|
234
|
+
for cell in ws[column_letter]:
|
|
235
|
+
try:
|
|
236
|
+
if cell.value:
|
|
237
|
+
max_length = max(max_length, len(str(cell.value)))
|
|
238
|
+
except:
|
|
239
|
+
pass
|
|
240
|
+
adjusted_width = (max_length + 2)
|
|
241
|
+
ws.column_dimensions[column_letter].width = adjusted_width
|
|
242
|
+
|
|
243
|
+
|
|
170
244
|
def __read_csv(
|
|
171
245
|
file: Path | str,
|
|
172
246
|
cols: Optional[List[str]] = None,
|
|
@@ -208,4 +282,4 @@ def convert_to_csv(
|
|
|
208
282
|
df = pd.DataFrame(dict_data)
|
|
209
283
|
|
|
210
284
|
# Export DataFrame to CSV
|
|
211
|
-
df.to_csv(filename, index=index, columns=cols)
|
|
285
|
+
df.to_csv(filename, index=index, columns=cols)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|