diff --git a/gridtk/models.py b/gridtk/models.py index f641683c04a2a85cc1c09284624dc88dea06f619..cef50f857e0d5ca14ad994f2f67e0b6500580c1d 100644 --- a/gridtk/models.py +++ b/gridtk/models.py @@ -226,7 +226,7 @@ class Job(Base): """Returns the command line for the job.""" # In python 2, the command line is unicode, which needs to be converted to string before pickling; # In python 3, the command line is bytes, which can be pickled directly - return loads(self.command_line) if isinstance(self.command_line, bytes) else loads(str(self.command_line)) + return loads(self.command_line) if isinstance(self.command_line, bytes) else loads(self.command_line.encode()) def set_command_line(self, command_line): """Sets / overwrites the command line for the job.""" @@ -244,14 +244,14 @@ class Job(Base): """Returns the array arguments for the job; usually a string.""" # In python 2, the command line is unicode, which needs to be converted to string before pickling; # In python 3, the command line is bytes, which can be pickled directly - return loads(self.array_string) if isinstance(self.array_string, bytes) else loads(str(self.array_string)) + return loads(self.array_string) if isinstance(self.array_string, bytes) else loads(self.array_string.encode()) def get_arguments(self): """Returns the additional options for the grid (such as the queue, memory requirements, ...).""" # In python 2, the command line is unicode, which needs to be converted to string before pickling; # In python 3, the command line is bytes, which can be pickled directly - args = loads(self.grid_arguments)['kwargs'] if isinstance(self.grid_arguments, bytes) else loads(str(self.grid_arguments))['kwargs'] + args = loads(self.grid_arguments)['kwargs'] if isinstance(self.grid_arguments, bytes) else loads(self.grid_arguments.encode())['kwargs'] # in any case, the commands have to be converted to str retval = {} if 'pe_opt' in args: