diff --git a/beat/web/algorithms/views.py b/beat/web/algorithms/views.py index c64cbf44fa1094eda76cbdf73b7459d5696c927f..b6663f2adf569982e9f2eff9658a498c933eac39 100755 --- a/beat/web/algorithms/views.py +++ b/beat/web/algorithms/views.py @@ -35,6 +35,7 @@ from django.contrib.auth.models import User from .models import Algorithm from ..team.models import Team from ..common.texts import Messages +from ..common.utils import ensure_string from ..ui.templatetags.markup import restructuredtext from beat.core import prototypes @@ -72,10 +73,10 @@ def create(request, name=None): previous_version = previous_versions[0] - description = previous_version.description + description = ensure_string(previous_version.description) parameters['algorithm_version'] = previous_version.version + 1 - parameters['declaration'] = previous_version.declaration_file.read().replace('\n', '') + parameters['declaration'] = previous_version.declaration_string.replace('\n', '') parameters['short_description'] = previous_version.short_description parameters['description'] = description.replace('\n', '\\n') parameters['html_description'] = restructuredtext(description).replace('\n', '') @@ -87,7 +88,7 @@ def create(request, name=None): if not previous_version.is_binary(): parameters['source_code'] = previous_version.source_code_file.read() else: - parameters['source_code'] = prototypes.binary_load('algorithm.py') \ + parameters['source_code'] = ensure_string(prototypes.binary_load('algorithm.py')) \ .replace('\n\n # TODO: Implement this algorithm\n\n', '\n # TODO: Implement this algorithm\n') declaration, errors = prototypes.load('algorithm') @@ -119,7 +120,7 @@ def fork(request, author, name, version): if fork_of.sharing == Algorithm.USABLE and fork_of.author != request.user: raise Http404() - description = fork_of.description + description = ensure_string(fork_of.description) parameters = {'original_author': author, 'algorithm_author': request.user.username, @@ -127,7 +128,7 @@ def fork(request, author, name, version): 'algorithm_version': fork_of.version, 'algorithm_language': fork_of.json_language, 'algorithm_language_name': fork_of.language_fullname(), - 'declaration': fork_of.declaration_file.read().replace('\n', ''), + 'declaration': fork_of.declaration_string.replace('\n', ''), 'short_description': fork_of.short_description, 'description': description.replace('\n', '\\n'), 'html_description': restructuredtext(description).replace('\n', ''), @@ -168,14 +169,14 @@ def edit(request, author, name, version): return HttpResponseForbidden('Algorithm %s is not modifiable' % \ algorithm.fullname()) - description = algorithm.description + description = ensure_string(algorithm.description) parameters = {'algorithm_author': request.user.username, 'algorithm_name': name, 'algorithm_version': algorithm.version, 'algorithm_language': algorithm.json_language, 'algorithm_language_name': algorithm.language_fullname(), - 'declaration': algorithm.declaration_file.read().replace('\n', ''), + 'declaration': algorithm.declaration_string.replace('\n', ''), 'short_description': algorithm.short_description, 'description': description.replace('\n', '\\n'), 'html_description': restructuredtext(description).replace('\n', ''),