From e444b74e9343ceab05de5ccf7c7ffe43d7fcc67d Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Wed, 2 Jul 2025 12:25:42 +0530 Subject: [PATCH] featherwiki: Don't allow index.html as a file name Tests: - Creating/renaming/uploading wikis with names index[.html] does not work. Doing so with other names work. Signed-off-by: Joseph Nuthalapati [sunil: Use validators= property instead of clean_name()] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/featherwiki/forms.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/plinth/modules/featherwiki/forms.py b/plinth/modules/featherwiki/forms.py index 7f2687264..ab1796b1c 100644 --- a/plinth/modules/featherwiki/forms.py +++ b/plinth/modules/featherwiki/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.')) @@ -32,6 +39,8 @@ class UploadWikiForm(forms.Form): label=_('A Feather Wiki file with .html file extension'), required=True, validators=[ validators.FileExtensionValidator( - ['html'], _('Feather Wiki files must be in HTML format')) + ['html'], + _('Feather Wiki files must be in HTML format'), + ), _validate_not_index_file ], help_text=_( 'Upload an existing Feather Wiki file from this computer.'))