diff --git a/app/ftp.py b/app/ftp.py
index e8c9e228..d9853a1f 100644
--- a/app/ftp.py
+++ b/app/ftp.py
@@ -14,7 +14,7 @@ class DownloadDataType(Enum):
def download_data(*, properties, download_type=DownloadDataType.ALL):
- with FTP(properties["host"]) as ftp:
+ with FTP(host=properties["host"], timeout=5) as ftp:
ftp.login(user=properties["user"], passwd=properties["password"])
save_path = properties["data_dir_path"]
files = []
@@ -42,15 +42,40 @@ def download_data(*, properties, download_type=DownloadDataType.ALL):
with open(save_path + xml_file, 'wb') as f:
ftp.retrbinary('RETR ' + xml_file, f.write)
- return ftp.voidcmd("NOOP")
-
def upload_data(*, properties, download_type=DownloadDataType.ALL, remove_unused=False):
- load_path = properties["data_dir_path"]
+ data_path = properties["data_dir_path"]
+
+ with FTP(host=properties["host"], timeout=5) as ftp:
+ ftp.login(user=properties["user"], passwd=properties["password"])
+
+ if download_type is DownloadDataType.ALL or download_type is DownloadDataType.SATELLITES:
+ ftp.cwd(properties["satellites_xml_path"])
+ file_name = "satellites.xml"
+ send = send_file(file_name, data_path, ftp)
+ if download_type == DownloadDataType.SATELLITES:
+ return send
+
+ if download_type is DownloadDataType.ALL or download_type is DownloadDataType.BOUQUETS:
+ ftp.cwd(properties["services_path"])
+ if remove_unused:
+ files = []
+ ftp.dir(files.append)
+ for file in files:
+ name = str(file).strip()
+ if name.endswith(__DATA_FILES_LIST):
+ name = name.split()[-1]
+ ftp.delete(name)
+
+ for file_name in os.listdir(data_path):
+ if file_name == "satellites.xml":
+ continue
+ send_file(file_name, data_path, ftp)
+
+
+def send_file(file_name, path, ftp):
+ """ Opens the file in binary mode and transfers into receiver """
+ with open(path + file_name, "rb") as f:
+ return ftp.storbinary("STOR " + file_name, f)
+
- for file_name in os.listdir(load_path):
- print(file_name)
- # Open the file for transfer in binary mode
- # f = open(file_name, "rb")
- # transfer the file into receiver
- # send = ftp.storbinary("STOR " + file_name, f)
diff --git a/app/ui/download_dialog.py b/app/ui/download_dialog.py
index 31426da7..d4239c00 100644
--- a/app/ui/download_dialog.py
+++ b/app/ui/download_dialog.py
@@ -1,5 +1,6 @@
from app.commons import run_task
from app.ftp import download_data, upload_data, DownloadDataType
+from .dialogs import show_dialog
from . import Gtk
@@ -39,6 +40,8 @@ class DownloadDialog:
self.download(True, d_type=self.get_download_type())
def on_send(self, item):
+ if show_dialog("question_dialog", self._dialog) == Gtk.ResponseType.CANCEL:
+ return
self.download(d_type=self.get_download_type())
def get_download_type(self):
@@ -65,10 +68,12 @@ class DownloadDialog:
if download:
download_data(properties=self._properties, download_type=d_type)
else:
- upload_data(properties=self._properties, download_type=d_type)
+ upload_data(properties=self._properties,
+ download_type=d_type,
+ remove_unused=self._remove_unused_check_button.get_active())
except Exception as e:
self._info_bar.set_message_type(Gtk.MessageType.ERROR)
- self._message_label.set_text(getattr(e, "message", repr(e))) # Or maybe so: getattr(e, 'message', str(e))
+ self._message_label.set_text(getattr(e, "message", str(e)))
else:
self._info_bar.set_message_type(Gtk.MessageType.INFO)
self._message_label.set_text("OK")
diff --git a/app/ui/main_app_window.py b/app/ui/main_app_window.py
index 0330516b..e2582151 100644
--- a/app/ui/main_app_window.py
+++ b/app/ui/main_app_window.py
@@ -427,10 +427,10 @@ class MainAppWindow:
# Getting bouquets
self.__bouquets_view.get_model().foreach(parse_bouquets)
- write_bouquets(path + "tmp/", bouquets, self.__bouquets)
+ write_bouquets(path, bouquets, self.__bouquets)
# Getting services
services = [Channel(*row[:]) for row in services_model]
- write_channels(path + "tmp/", services)
+ write_channels(path, services)
def on_services_selection(self, model, path, column):
self.delete_selection(self.__fav_view)
@@ -561,4 +561,4 @@ def close_app():
if __name__ == "__main__":
- pass
+ pass
diff --git a/app/ui/satellites_dialog.glade b/app/ui/satellites_dialog.glade
index 03a5166d..4e71ee76 100644
--- a/app/ui/satellites_dialog.glade
+++ b/app/ui/satellites_dialog.glade
@@ -279,6 +279,7 @@
False
True
True
+
diff --git a/app/ui/satellites_dialog.py b/app/ui/satellites_dialog.py
index 264d147c..d6148ddf 100644
--- a/app/ui/satellites_dialog.py
+++ b/app/ui/satellites_dialog.py
@@ -29,7 +29,8 @@ class SatellitesDialog:
"on_edit": self.on_edit,
"on_key_release": self.on_key_release,
"on_row_activated": self.on_row_activated,
- "on_resize": self.on_resize}
+ "on_resize": self.on_resize,
+ "on_quit": self.on_quit}
builder = Gtk.Builder()
builder.add_objects_from_file("app/ui/satellites_dialog.glade",
@@ -62,6 +63,9 @@ class SatellitesDialog:
if self._options:
self._options["sat_editor_window_size"] = window.get_size()
+ def on_quit(self, item):
+ self.destroy()
+
def on_open(self, model):
builder = Gtk.Builder()
builder.add_objects_from_file("app/ui/dialogs.glade", ("path_chooser_dialog",))
diff --git a/app/ui/settings_dialog.py b/app/ui/settings_dialog.py
index 1ce3071f..c98400a3 100644
--- a/app/ui/settings_dialog.py
+++ b/app/ui/settings_dialog.py
@@ -46,7 +46,7 @@ class SettingsDialog:
def on_data_dir_field_icon_press(self, entry, icon, event_button):
builder = Gtk.Builder()
- builder.add_from_file("ui/dialogs.glade")
+ builder.add_from_file("app/ui/dialogs.glade")
dialog = builder.get_object("path_chooser_dialog")
dialog.set_transient_for(self._dialog)
dialog.set_current_folder(self._current_data_path)