Skip to content

Commit

Permalink
Soft delete xform from legacy UI
Browse files Browse the repository at this point in the history
Don't call xform.delete() method which soft deletes
  • Loading branch information
FrankApiyo committed Nov 9, 2023
1 parent 6fc9d4f commit 3329c5f
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 3 deletions.
36 changes: 36 additions & 0 deletions onadata/apps/api/tests/viewsets/test_xform_viewset.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
from onadata.apps.logger.models import Attachment, Instance, Project, XForm
from onadata.apps.logger.models.xform_version import XFormVersion
from onadata.apps.logger.xform_instance_parser import XLSFormError
from onadata.apps.logger.views import delete_xform
from onadata.apps.main.models import MetaData
from onadata.apps.messaging.constants import FORM_UPDATED, XFORM
from onadata.apps.viewer.models import Export
Expand Down Expand Up @@ -4351,6 +4352,41 @@ def test_delete_xform_also_deletes_linked_dataviews(self):
self.assertIsNotNone(self.data_view.deleted_at)
self.assertIn("-deleted-at-", self.data_view.name)

def test_delete_xform_endpoint(self):
"""
Tests that the delete_xform view soft deletes xforms
"""
# publish form and make submissions
xlsform_path = os.path.join(
settings.PROJECT_ROOT, "libs", "tests", "utils", "fixtures", "tutorial.xlsx"
)
self._publish_xls_form_to_project(xlsform_path=xlsform_path)
for x in range(1, 9):
path = os.path.join(
settings.PROJECT_ROOT,
"libs",
"tests",
"utils",
"fixtures",
"tutorial",
"instances",
"uuid{}".format(x),
"submission.xml",
)
self._make_submission(path)

# Make request to delete
request = self.factory.post("/", **self.extra)
request.user = self.xform.user
response = delete_xform(
request, username=self.xform.user.username, id_string=self.xform.id_string
)

self.assertEqual(response.status_code, 302)
self.assertEqual(response.content, b"")
self.xform.refresh_from_db()
self.assertIsNotNone(self.xform.deleted_at)

def test_multitple_enketo_urls(self):
with HTTMock(enketo_mock):
self._publish_xls_form_to_project()
Expand Down
5 changes: 2 additions & 3 deletions onadata/apps/logger/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
PublishXForm,
inject_instanceid,
publish_form,
remove_xform,
response_with_mimetype_and_name,
safe_create_instance,
)
Expand Down Expand Up @@ -504,8 +503,8 @@ def delete_xform(request, username, id_string):
{"user__username__iexact": username, "id_string__iexact": id_string}
)

# delete xform and submissions
remove_xform(xform)
# Delete xform
xform.soft_delete(user=request.user)

audit = {}
audit_log(
Expand Down

0 comments on commit 3329c5f

Please sign in to comment.