コード例 #1
0
 def start_server(self, run_once=True):
     logging.debug('Starting server; ' +
                   self.server_accepted_networks_mask + ":" +
                   str(self.port))
     self.server_loop_exit_flag = run_once
     try:
         while True:
             with SocketServer(self.server_accepted_networks_mask,
                               self.port) as server:
                 received_message = server.receive()
                 logging.debug("Received: " + '"' + received_message + '"')
                 response_message = self.__parse_received_message(
                     received_message)
                 server.send(response_message)
             if self.server_loop_exit_flag:
                 logging.debug("Server exited; " +
                               self.server_accepted_networks_mask + ":" +
                               str(self.port))
                 break
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.connection_server_start,
             arguments=['done'])
     except Exception as e:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.connection_server_start_fail,
             arguments=[str(e)])
コード例 #2
0
 def __command_get(self, args):
     if self.main_password is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_not_set)
     if len(args) < 1:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_incorrect_value,
             arguments=[])
     password = None
     for p in self.passwords_encrypted:
         if p.name == args[0]:
             password = p
     if password is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_incorrect_value,
             arguments=[])
     else:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_get_ok,
             arguments=[
                 password.name,
                 PydesWrapper().decrypt(self.main_password,
                                        password.username),
                 PydesWrapper().decrypt(self.main_password,
                                        password.password)
             ])
コード例 #3
0
 def __command_set(self, args):
     if args is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.game_set_wrong_id, arguments=[])
     found_game_id = None
     try:
         arg_as_int = int(args[0])
     except ValueError:
         arg_as_int = None
     if arg_as_int is not None:
         for g in self.games:
             if arg_as_int == g.game_id:
                 found_game_id = g.game_id
                 break
     else:
         for g in self.games:
             if args[0] == g.name:
                 found_game_id = g.game_id
                 break
     if found_game_id is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.game_set_wrong_id, arguments=[])
     else:
         SharedPreferences().put('current_game_id', found_game_id)
         self.current_game_id = found_game_id
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.game_set_ok, arguments=[])
コード例 #4
0
 def __command_undone(self, args):
     try:
         if int(args[0]) > len(self.tasks):
             raise IndexError
         if int(args[0]) < 0:
             return_value = self.periodic_task_progress_handler.set_undone(
                 self.__translate_periodic_task_id(int(args[0])))
             if return_value is None:
                 return MumjolandiaResponseObject(
                     status=MumjolandiaReturnValue.
                     task_done_wrong_parameter,
                     arguments=args)
             else:
                 return_name = PeriodicTaskGenerator(
                     self.periodic_tasks_location,
                     self.events_location).get_tasks()[
                         self.__translate_periodic_task_id(args[0])].name
         else:
             self.tasks[int(args[0])].status = TaskStatus.not_done
             self.__save_if_allowed()
             return_name = self.tasks[int(args[0])].name
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.task_undone_ok,
             arguments=[return_name])
     except (IndexError, ValueError):
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.task_done_wrong_parameter,
             arguments=args)
コード例 #5
0
 def __command_set(self, args):
     try:
         if int(args[0]) > len(self.tasks) or int(args[0]) < 0:
             raise IndexError
         # parsing first argument
         if args[1].lower() == 'None'.lower():
             self.tasks[int(args[0])].date_to_finish = None
         else:  # set is for day not hour so part of date is removed
             self.tasks[int(args[0])].date_to_finish = self.__get_today().replace(microsecond=0,
                                                                                  second=0,
                                                                                  minute=0,
                                                                                  hour=0) + \
                                                       datetime.timedelta(days=int(args[1]))
         # parsing second argument
         if len(args) > 2:
             self.tasks[int(args[0])].reminder = int(args[2])
         self.__save_if_allowed()
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.task_set_ok,
             arguments=[self.tasks[int(args[0])].name, args[1]])
     except IndexError:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.task_set_incorrect_parameter,
             arguments=args)
     except ValueError:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.task_set_incorrect_parameter,
             arguments=args)
コード例 #6
0
 def __command_get(self, args):
     response = self.__get_weather_now()
     if response is not None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.weather_get_ok,
             arguments=[response])
     else:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.weather_get_nook,
             arguments=['Connection failed'])
コード例 #7
0
 def __command_list(self, args):
     if self.main_password is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_not_set)
     return_value = []
     for p in self.passwords_encrypted:
         return_value.append(p.name)
     return MumjolandiaResponseObject(
         status=MumjolandiaReturnValue.password_list_ok,
         arguments=[return_value])
コード例 #8
0
 def __command_ls(self, args):
     response = self.rootfs_manager.ls(" ".join(args))
     if response is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.rootfs_no_ok,
             arguments=["Incorrect path"])
     else:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.rootfs_ls_ok,
             arguments=[response])
コード例 #9
0
ファイル: fat_supervisor.py プロジェクト: mumja92/mumjolandia
 def add_fat(self, value):
     try:
         self.fats.append(FatFactory.get_fat(value))
     except IncorrectDateFormatException:
         logging.warning("Fat '" + value + "' not added - incorrect date format")
         return MumjolandiaResponseObject(status=MumjolandiaReturnValue.fat_incorrect_date_format)
     except IncorrectVariableTypeException:
         return MumjolandiaResponseObject(status=MumjolandiaReturnValue.fat_add_must_be_float)
     logging.debug("Added '" + value + "'")
     self.__save()
     return MumjolandiaResponseObject(status=MumjolandiaReturnValue.fat_added, arguments=[value])
コード例 #10
0
 def __command_get(self, args):
     try:
         day = int(args[0])
     except ValueError:  # argument is not int
         return MumjolandiaResponseObject(status=MumjolandiaReturnValue.planner_get_fail,
                                          arguments=['nook'])
     except IndexError:  # argument doesn't exist
         day = None
     return_value = self.plans_handler.get(day)
     return MumjolandiaResponseObject(status=MumjolandiaReturnValue.planner_get_ok,
                                      arguments=[return_value])
コード例 #11
0
 def __command_bump(self, args):
     try:
         if int(args[0]) > len(self.tasks) or int(args[0]) < 0:
             raise IndexError
         self.tasks.append(self.tasks.pop(int(args[0])))
         self.__save_if_allowed()
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.task_bump_ok,
             arguments=[str(len(self.tasks) - 1), self.tasks[-1].name])
     except (IndexError, ValueError):
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.task_bump_nook, arguments=args)
コード例 #12
0
 def __command_remove(self, args):
     day = None
     hour = None
     try:
         day = int(args[0])
         hour = str(args[1])
     except (ValueError, IndexError):  # one of arguments doesn't exist, or int(x) failed
         return MumjolandiaResponseObject(status=MumjolandiaReturnValue.planner_remove_fail,
                                          arguments=['Incorrect argument: day: ' + str(day) + ' hour: ' + str(hour)])
     return_value = self.plans_handler.remove(day, hour)
     return MumjolandiaResponseObject(status=MumjolandiaReturnValue.planner_remove_ok,
                                      arguments=[return_value])
コード例 #13
0
    def __command_init(self, args):
        if len(args) < 1:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.password_incorrect_value,
                arguments=[])

        validation_ok = self.__create_password_validation_string(args[0])
        if validation_ok:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.password_set_ok)
        else:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.password_incorrect_value)
コード例 #14
0
 def __command_update(self, args):
     try:
         s = SocketClient(ConfigLoader.get_config().server_address,
                          int(ConfigLoader.get_config().server_port))
         path = s.get_mumjolandia_update_package('mumjolandia.tar.gz')
         MumjolandiaUpdater.install_source(path)
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.connection_client_send_ok,
             arguments=['ok'])
     except ConnectionRefusedError:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.connection_failed,
             arguments=['Can\'t connect to server'])
コード例 #15
0
    def __command_set(self, args):
        if len(args) < 2:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.config_set_nook,
                arguments=["2 parameters needed"])

        if self.config_parser.set(args[0], args[1]):
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.config_set_ok,
                arguments=[self.config_parser.get(args[0])])
        else:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.config_set_nook,
                arguments=["Parameter \"" + args[0] + "\" not found"])
コード例 #16
0
 def __command_set(self, args):
     if args is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.pompejanka_message,
             arguments=['Parameter not provided'])
     if int(args[0]) > 0:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.pompejanka_message,
             arguments=['Value has to be <= 0'])
     self.start_date = DateHelper.get_today_short(args[0])
     SharedPreferences().put(self.start_date_string, str(self.start_date))
     return MumjolandiaResponseObject(
         status=MumjolandiaReturnValue.pompejanka_message,
         arguments=['Set to: ' + str(DateHelper.get_today_short(args[0]))])
コード例 #17
0
 def delete_note(self, note_id):
     try:
         tid = int(note_id)
         try:
             self.notes.pop(tid)
             self.__save()
             return MumjolandiaResponseObject(status=MumjolandiaReturnValue.note_delete_success,
                                              arguments=[note_id, str(1)])
         except IndexError:  # wrong index
             return MumjolandiaResponseObject(status=MumjolandiaReturnValue.note_delete_incorrect_index,
                                              arguments=[note_id])
     except ValueError:  # parameter type is not int
         return MumjolandiaResponseObject(status=MumjolandiaReturnValue.note_delete_incorrect_index,
                                          arguments=[note_id])
コード例 #18
0
 def __command_current(self, args):
     if self.current_game_id is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.game_current_get,
             arguments=[None])
     else:
         for g in self.games:
             if g.game_id == self.current_game_id:
                 return MumjolandiaResponseObject(
                     status=MumjolandiaReturnValue.game_current_get,
                     arguments=[g.name])
         logging.error("Didn't found game with current_game_id!")
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.game_current_get,
             arguments=[None])
コード例 #19
0
 def send_message(self, message):
     logging.debug('Sending: "' + message + '" to ' + self.server_address +
                   ":" + str(self.port))
     try:
         with SocketClient(self.server_address, int(self.port)) as s:
             return_value = s.send(str(message))
             logging.debug('Received: "' + return_value + '" from ' +
                           self.server_address + ":" + str(self.port))
             return MumjolandiaResponseObject(
                 status=MumjolandiaReturnValue.connection_client_send_ok,
                 arguments=[return_value])
     except Exception as e:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.connection_failed,
             arguments=['Can\'t connect to server: ' + str(e)])
コード例 #20
0
 def __command_set(self, args):
     if len(args) < 1:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_incorrect_value,
             arguments=[])
     else:
         if self.__check_password_validation_string(args[0]):
             self.main_password = args[0]
         else:
             self.main_password = None
             return MumjolandiaResponseObject(
                 status=MumjolandiaReturnValue.password_set_incorrect,
                 arguments=[args[0]])
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_set_ok)
コード例 #21
0
ファイル: fat_supervisor.py プロジェクト: mumja92/mumjolandia
 def delete_fat(self, fat_id):
     # parameter comes as string. If we can parse it to int then we remove by id. If not, then by name
     try:
         fid = int(fat_id)
         try:
             self.fats.pop(fid)
             self.__save()
             return MumjolandiaResponseObject(status=MumjolandiaReturnValue.fat_delete_success,
                                              arguments=[fat_id, str(1)])
         except IndexError:  # wrong index
             return MumjolandiaResponseObject(status=MumjolandiaReturnValue.fat_delete_incorrect_index,
                                              arguments=[fat_id])
     except ValueError:  # parameter type is not int
         return MumjolandiaResponseObject(status=MumjolandiaReturnValue.fat_delete_incorrect_index,
                                          arguments=[fat_id])
コード例 #22
0
 def __command_help(self, command):
     return_value = []
     for key, value in self.command_parsers.items():
         return_value.append(key)
     return MumjolandiaResponseObject(
         status=MumjolandiaReturnValue.mumjolandia_help,
         arguments=return_value)
コード例 #23
0
ファイル: cli_supervisor.py プロジェクト: mumja92/mumjolandia
 def __command_mode(self, args):
     if len(args) == 0:
         return_arguments = []
     else:
         return_arguments = [args[0]]
     return MumjolandiaResponseObject(
         status=MumjolandiaReturnValue.cli_mode, arguments=return_arguments)
コード例 #24
0
 def __command_help(self, args):
     return MumjolandiaResponseObject(
         status=MumjolandiaReturnValue.game_help,
         arguments=['set [x]\n'
                    'ls\n'
                    'clear\n'
                    '[h]elp'])
コード例 #25
0
 def __command_get(self, args):
     try:
         s = SocketClient(ConfigLoader.get_config().server_address,
                          int(ConfigLoader.get_config().server_port))
         path = s.get_file(args[0])
         if path is None:
             return_value = 'Connection ok, but received file empty'
         else:
             return_value = 'received file: ' + path
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.connection_client_send_ok,
             arguments=[return_value])
     except ConnectionRefusedError:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.connection_failed,
             arguments=['Can\'t connect to server'])
コード例 #26
0
 def __command_rm(self, args):
     if self.main_password is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_not_set)
     password = None
     for p in self.passwords_encrypted:
         if p.name == args[0]:
             password = p
     if password is None:
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.password_incorrect_value,
             arguments=[])
     self.passwords_encrypted.remove(password)
     self.password_loader.save(self.passwords_encrypted)
     return MumjolandiaResponseObject(
         status=MumjolandiaReturnValue.password_rm_ok, arguments=['ok'])
コード例 #27
0
 def __command_get(self, args):
     try:
         index = int(args[0])
     except (IndexError, ValueError):
         return MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.food_get_wrong_index,
             arguments=[str(args)])
     helper = FoodDatabaseHelper(self.db_location)
     meal = helper.get_meal_ingredients(index)
     recipe = helper.get_meal(index)[0][3]
     ingredients_list = []
     for ingredient in meal:
         ingredients_list.append([ingredient[1:]])
     return MumjolandiaResponseObject(
         status=MumjolandiaReturnValue.food_get_ok,
         arguments=[[str(meal[0][0]), recipe], ingredients_list])
コード例 #28
0
    def __command_get(self, args):
        # argument not provided
        if not len(args):
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.config_get_fail,
                arguments=["Parameter needed"])

        return_value = self.config_parser.get(args[0])

        if return_value is not None:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.config_get_ok,
                arguments=[return_value])
        else:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.config_get_fail,
                arguments=["Value \"" + args[0] + "\" not found"])
コード例 #29
0
 def test_exit(self, mock_logging):
     self.q1.get = MagicMock(
         return_value=CommandFactory.get_command('exit'))
     self.mt.run()
     self.assertEqual(
         self.q2.get(),
         MumjolandiaResponseObject(
             status=MumjolandiaReturnValue.mumjolandia_exit))
コード例 #30
0
    def __command_get(self, args):
        if self.start_date is None:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.game_get_ok,
                arguments=['Start date not set'])
        if self.__get_current_pompejanka_day() == 0:
            return MumjolandiaResponseObject(
                status=MumjolandiaReturnValue.game_get_ok,
                arguments=['Done :D'])
        return_string = 'Current day: '
        return_string += str(self.__get_current_pompejanka_day()) + '\n'
        return_string += self.__print_pompejanka(
            self.__get_current_pompejanka_day())

        return MumjolandiaResponseObject(
            status=MumjolandiaReturnValue.game_get_ok,
            arguments=[return_string])