Skip to content

Commit

Permalink
Merge pull request #18 from kuczynskimaciej1/Sending
Browse files Browse the repository at this point in the history
Sending
  • Loading branch information
ikarmus2001 authored Jun 3, 2024
2 parents 3f67252 + 23fa1c9 commit 906eef8
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 40 deletions.
54 changes: 28 additions & 26 deletions Interface/ExternalSourceImportWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,40 +50,42 @@ def browse_file(self):
self.load_worksheets()

def load_worksheets(self):
try:
workbook = load_workbook(self.file_path, read_only=True)
sheet_names = workbook.sheetnames
self.combobox['values'] = sheet_names
if sheet_names:
self.combobox.current(0)
self.update_preview()
except Exception as e:
msg.showerror("Error", f"Failed to read the Excel file: {e}")
with open(self.file_path, 'br') as r:
try:
workbook = load_workbook(r, read_only=True)
sheet_names = workbook.sheetnames
self.combobox['values'] = sheet_names
if sheet_names:
self.combobox.current(0)
self.update_preview()
except Exception as e:
msg.showerror("Error", f"Failed to read the Excel file: {e}")

def update_preview(self, event=None):
selected_sheet = self.combobox.get()
if not selected_sheet or not self.file_path:
return

try:
workbook = load_workbook(self.file_path, read_only=True)
sheet = workbook[selected_sheet]

self.treeview.delete(*self.treeview.get_children())
first_row = next(sheet.iter_rows(values_only=True))
if "Email" not in first_row:
# TODO: Można zrobić jakiś label zamiast treeview i errora
raise ValueError("Arkusz musi mieć kolumnę 'Email', aby dało się go połączyć z danymi")
with open(self.file_path, 'br') as r:
try:
workbook = load_workbook(self.file_path, read_only=True)
sheet = workbook[selected_sheet]

self.treeview["columns"] = first_row
for col in first_row:
self.treeview.heading(col, text=col)
self.treeview.column(col, width=100)
self.treeview.delete(*self.treeview.get_children())
first_row = next(sheet.iter_rows(values_only=True))
if "Email" not in first_row:
# TODO: Można zrobić jakiś label zamiast treeview i errora
raise ValueError("Arkusz musi mieć kolumnę 'Email', aby dało się go połączyć z danymi")

self.treeview["columns"] = first_row
for col in first_row:
self.treeview.heading(col, text=col)
self.treeview.column(col, width=100)

for row in sheet.iter_rows(min_row=2, values_only=True):
self.treeview.insert("", END, values=row)
except Exception as e:
msg.showerror("Error", f"Failed to read the selected worksheet: {e}")
for row in sheet.iter_rows(min_row=2, values_only=True):
self.treeview.insert("", END, values=row)
except Exception as e:
msg.showerror("Error", f"Failed to read the selected worksheet: {e}")

def add_data(self):
di = DataImport(_name=basename(self.file_path), _localPath=self.file_path)
Expand Down
33 changes: 19 additions & 14 deletions models.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,21 +82,22 @@ def __init__(self, **kwargs) -> None:
print(f"Utworzono {type(self)}")

def getColumnPreview(self) -> dict | None:
workbook = load_workbook(self.localPath, read_only=True)
result = dict()
for sheet in workbook:
first_row = next(sheet.iter_rows(values_only=True))
if "Email" not in first_row:
continue

columns = first_row
dataPreviewRow = next(sheet.iter_rows(min_row=2, values_only=True))
for idx, c in enumerate(columns):
result[c] = dataPreviewRow[idx]
with open(self.localPath, 'br') as r:
workbook = load_workbook(r, read_only=True)
result = dict()
for sheet in workbook:
first_row = next(sheet.iter_rows(values_only=True))
if "Email" not in first_row:
continue

columns = first_row
dataPreviewRow = next(sheet.iter_rows(min_row=2, values_only=True))
for idx, c in enumerate(columns):
result[c] = dataPreviewRow[idx]
return result if len(result) > 0 else None

def GetRow(self, email: str) -> dict[str, str]:
with open(self.localPath) as r:
with open(self.localPath, 'br') as r:
workbook = load_workbook(r, read_only=True)
result = dict()
for sheet in workbook:
Expand Down Expand Up @@ -613,11 +614,13 @@ class Group(IModel):
_name = Column("name", String(100), nullable=True)

def __init__(self, **kwargs):
self.obj_creation = True
self.id: int = kwargs.pop('_id', None)
self.name: str = kwargs.pop('_name', "")
self.contacts: list[Contact] = kwargs.pop("_contacts", [])
Group.all_instances.append(self)
IModel.queueSave(self)
self.obj_creation = False

@hybrid_property
def name(self):
Expand All @@ -626,7 +629,8 @@ def name(self):
@name.setter
def name(self, value: str | None):
self._name = value
IModel.queueToUpdate(self)
if not self.obj_creation:
IModel.queueToUpdate(self)

def __str__(self):
return f"{self.id}: {self.name}"
Expand Down Expand Up @@ -660,5 +664,6 @@ def id(self, newValue: int):
@name.setter
def name(self, value: str | None):
self._name = value
IModel.queueToUpdate(self)
if not self.obj_creation:
IModel.queueToUpdate(self)
#endregion

0 comments on commit 906eef8

Please sign in to comment.