Read user file configuration and save in settings.
334 def read_user_file(self, s_file: str, b_remove_file: bool = False) -> bool:
335 """!
336 @brief Read user file configuration and save in settings.
337 @param s_file : file top read
338 @param b_remove_file : [True] = delete file; [False] = don't delete file
339 @return status if data was imported
340 """
341 log.debug("Import edited or new user file: %s", s_file)
342 config_data = self.handle_config_data_read(s_file)
343 b_set_data = False
344 self.ui.unblock_ui()
345 if config_data is not None:
346 d_read_user_dict = config_data
347 if any(value in d_read_user_dict for value in L_ALLOWED_USER):
348 b_set_data = True
349 else:
350 b_set_data = self.ui.confirm_dialog(["Import file?", "Datei importieren?"],
351 l_optional_text=[f"This file does not contain any user data:\n{s_file}",
352 f"Diese Datei enthält keine Benutzer Daten:\n{s_file}"])
353 if b_set_data:
354 if (not self.ui.model.c_auth.check_user_login(EUser.ADMIN)) and (EUser.ADMIN.value in d_read_user_dict):
355 del d_read_user_dict[EUser.ADMIN.value]
356 if EUser.ADMIN.value not in d_read_user_dict:
357 if EUser.ADMIN.value in self.d_user:
358 d_read_user_dict[EUser.ADMIN.value] = self.d_user[EUser.ADMIN.value]
359 else:
360 self.ui.set_status("No Admin data to restore", True)
361 self.d_user = d_read_user_dict.copy()
362
363 if EUser.ADMIN.value not in self.d_user:
364 self.d_user[EUser.ADMIN.value] = D_DEFAULT_USER[EUser.ADMIN.value].copy()
365 self.d_user[EUser.ADMIN.value][S_PW] = DEFAULT_CODE
366 self.ui.set_status([f"No Admin data. Password is set to default: {DEFAULT_CODE}",
367 f"Keine Admin Daten. Passwort wurde zurückgesetzt: {DEFAULT_CODE}"], True)
368 if S_PW not in self.d_user[EUser.ADMIN.value]:
369 self.d_user[EUser.ADMIN.value][S_PW] = DEFAULT_CODE
370 self.ui.set_status([f"No Admin Password data. Password is set to default: {DEFAULT_CODE}",
371 f"Kein Admin Passwort. Passwort wurde zurückgesetzt: {DEFAULT_CODE}"], True)
372 if not self.d_user[EUser.ADMIN.value][S_PW].isdigit() and self.d_user[EUser.ADMIN.value][S_PW] != "":
373 self.d_user[EUser.ADMIN.value][S_PW] = DEFAULT_CODE
374 self.ui.set_status([f"Admin password is invalid. Password is set to default: {DEFAULT_CODE}",
375 f"Admin Passwort ist ungültig. Passwort wurde zurückgesetzt: {DEFAULT_CODE}"], True)
376 if not self.ui.test_mode:
377 self.store_user_data()
378 if b_remove_file:
379 os.remove(s_file)
380 self.ui.set_status(["User configuration changed", "Benutzer Konfiguration wurde geändert"])
381 else:
382 if b_remove_file:
383 b_edit = self.ui.confirm_dialog(["Invalid. Edit again?", "Ungültig. Erneut bearbeiten?"])
384 if b_edit:
385 self.ui.edit_user_in_notepad(s_file)
386 else:
387 self.ui.set_status(["Unable to read user configuration with duplicate users",
388 "Benutzerkonfiguration mit doppelten Benutzern kann nicht gelesen werden"], True)
389 else:
390 self.ui.set_status(["Unable to import user configuration with duplicate users",
391 "Importieren der Benutzerkonfiguration mit doppelten Benutzern nicht möglich"], True)
392 return b_set_data
393