diff --git a/plinth/modules/tiddlywiki/forms.py b/plinth/modules/tiddlywiki/forms.py index 227aa1601..4d0af3cfb 100644 --- a/plinth/modules/tiddlywiki/forms.py +++ b/plinth/modules/tiddlywiki/forms.py @@ -6,12 +6,19 @@ from django.core import validators from django.utils.translation import gettext_lazy as _ +def _validate_not_index_file(name): + """Validate that the normalized file name is not 'index.html'.""" + if str(name) in ('index.html', 'index'): + raise forms.ValidationError( + _('Wiki files cannot be named "index.html".')) + + class CreateWikiForm(forms.Form): """Form to create a new wiki file.""" name = forms.CharField( label=_('Name of the wiki file, with file extension ".html"'), - strip=True, help_text=_( + strip=True, validators=[_validate_not_index_file], help_text=_( 'Wiki title and description can be set from within the wiki. ' 'This file name is independent of the wiki title.')) @@ -21,7 +28,7 @@ class RenameWikiForm(forms.Form): new_name = forms.CharField( label=_('New name for the wiki file, with file extension ".html"'), - strip=True, help_text=_( + strip=True, validators=[_validate_not_index_file], help_text=_( 'Renaming the file has no effect on the title of the wiki.')) @@ -29,9 +36,11 @@ class UploadWikiForm(forms.Form): """Form to upload a wiki file.""" file = forms.FileField( - label=_('A TiddlyWiki file with .html file extension'), - required=True, validators=[ + label=_('A TiddlyWiki file with .html file extension'), required=True, + validators=[ validators.FileExtensionValidator( - ['html'], _('TiddlyWiki files must be in HTML format')) - ], help_text=_( - 'Upload an existing TiddlyWiki file from this computer.')) + ['html'], + _('TiddlyWiki files must be in HTML format'), + ), _validate_not_index_file + ], + help_text=_('Upload an existing TiddlyWiki file from this computer.'))