diff --git a/plinth/modules/backups/templates/backups_delete.html b/plinth/modules/backups/templates/backups_delete.html index 9f16ec78d..93626fbe6 100644 --- a/plinth/modules/backups/templates/backups_delete.html +++ b/plinth/modules/backups/templates/backups_delete.html @@ -27,7 +27,7 @@

-

+ {% csrf_token %} - + {% csrf_token %} {{ form|bootstrap }} diff --git a/plinth/modules/backups/templates/backups_upload.html b/plinth/modules/backups/templates/backups_upload.html index 665bcba54..d63fa499a 100644 --- a/plinth/modules/backups/templates/backups_upload.html +++ b/plinth/modules/backups/templates/backups_upload.html @@ -32,7 +32,7 @@ {% endif %} - + {% csrf_token %} {{ form|bootstrap }} diff --git a/plinth/modules/backups/tests/test_functional.py b/plinth/modules/backups/tests/test_functional.py index fe068ded1..05b1525e0 100644 --- a/plinth/modules/backups/tests/test_functional.py +++ b/plinth/modules/backups/tests/test_functional.py @@ -150,7 +150,7 @@ def _backup_schedule_set(browser, enable, daily, weekly, monthly, run_at, functional.eventually(browser.find_by_css, args=['.select-all']) browser.find_by_css('.select-all').first.check() browser.find_by_css(f'input[value="{without_app}"]').first.uncheck() - functional.submit(browser) + functional.submit(browser, form_class='form-backups_schedule') def _download_file_logged_in(browser, url, suffix=''): @@ -186,8 +186,8 @@ def _upload_and_restore(browser, app_name, downloaded_file_path): fileinput = browser.driver.find_element_by_id('id_backups-file') fileinput.send_keys(downloaded_file_path) # submit upload form - functional.submit(browser) + functional.submit(browser, form_class='form-upload') # submit restore form with functional.wait_for_page_update(browser, expected_url='/plinth/sys/backups/'): - functional.submit(browser) + functional.submit(browser, form_class='form-restore') diff --git a/plinth/tests/functional/__init__.py b/plinth/tests/functional/__init__.py index db024270b..4f79738ad 100644 --- a/plinth/tests/functional/__init__.py +++ b/plinth/tests/functional/__init__.py @@ -506,26 +506,28 @@ def set_advanced_mode(browser, mode): #################### # Backup utilities # #################### -def _click_button_and_confirm(browser, href): +def _click_button_and_confirm(browser, href, form_class): buttons = browser.links.find_by_href(href) if buttons: - submit(browser, buttons.first) - submit(browser, expected_url='/plinth/sys/backups/') + submit(browser, element=buttons.first) + submit(browser, form_class=form_class, + expected_url='/plinth/sys/backups/') def _backup_delete_archive_by_name(browser, archive_name): nav_to_module(browser, 'backups') href = f'/plinth/sys/backups/root/delete/{archive_name}/' - _click_button_and_confirm(browser, href) + _click_button_and_confirm(browser, href, 'form-delete') def backup_create(browser, app_name, archive_name=None): + """Create a new backup for a given app.""" install(browser, 'backups') if archive_name: _backup_delete_archive_by_name(browser, archive_name) buttons = browser.links.find_by_href('/plinth/sys/backups/create/') - submit(browser, buttons.first) + submit(browser, element=buttons.first) eventually(browser.find_by_css, args=['.select-all']) browser.find_by_css('.select-all').first.uncheck() if archive_name: @@ -534,13 +536,14 @@ def backup_create(browser, app_name, archive_name=None): # ensure the checkbox is scrolled into view browser.execute_script('window.scrollTo(0, 0)') browser.find_by_value(app_name).first.check() - submit(browser) + submit(browser, form_class='form-backups') def backup_restore(browser, app_name, archive_name=None): + """Restore a given app from a backup archive.""" nav_to_module(browser, 'backups') href = f'/plinth/sys/backups/root/restore-archive/{archive_name}/' - _click_button_and_confirm(browser, href) + _click_button_and_confirm(browser, href, 'form-restore') ######################