def unarchive(self, user_id=None): if not self.is_archived: return from corehq.form_processor.backends.sql.dbaccessors import FormAccessorSQL FormAccessorSQL.unarchive_form(self, user_id=user_id) xform_unarchived.send(sender="form_processor", xform=self)
def test_archive_unarchive_form(self): case_id = uuid.uuid4().hex form = create_form_for_test(DOMAIN, case_id=case_id) self.assertEqual(XFormInstanceSQL.NORMAL, form.state) self.assertEqual(0, len(form.history)) transactions = CaseAccessorSQL.get_transactions(case_id) self.assertEqual(1, len(transactions)) self.assertFalse(transactions[0].revoked) FormAccessorSQL.archive_form(form, 'user1') form = FormAccessorSQL.get_form(form.form_id) self.assertEqual(XFormInstanceSQL.ARCHIVED, form.state) operations = form.history self.assertEqual(1, len(operations)) self.assertEqual(form.form_id, operations[0].form_id) self.assertEqual('user1', operations[0].user_id) transactions = CaseAccessorSQL.get_transactions(case_id) self.assertEqual(1, len(transactions)) self.assertTrue(transactions[0].revoked) FormAccessorSQL.unarchive_form(form, 'user2') form = FormAccessorSQL.get_form(form.form_id) self.assertEqual(XFormInstanceSQL.NORMAL, form.state) operations = form.history self.assertEqual(2, len(operations)) self.assertEqual(form.form_id, operations[1].form_id) self.assertEqual('user2', operations[1].user_id) transactions = CaseAccessorSQL.get_transactions(case_id) self.assertEqual(1, len(transactions)) self.assertFalse(transactions[0].revoked)
def test_get_form_operations(self): form = create_form_for_test(DOMAIN) operations = FormAccessorSQL.get_form_operations('missing_form') self.assertEqual([], operations) operations = FormAccessorSQL.get_form_operations(form.form_id) self.assertEqual([], operations) # don't call form.archive to avoid sending the signals FormAccessorSQL.archive_form(form, user_id='user1') FormAccessorSQL.unarchive_form(form, user_id='user2') operations = FormAccessorSQL.get_form_operations(form.form_id) self.assertEqual(2, len(operations)) self.assertEqual('user1', operations[0].user_id) self.assertEqual(XFormOperationSQL.ARCHIVE, operations[0].operation) self.assertIsNotNone(operations[0].date) self.assertEqual('user2', operations[1].user_id) self.assertEqual(XFormOperationSQL.UNARCHIVE, operations[1].operation) self.assertIsNotNone(operations[1].date) self.assertGreater(operations[1].date, operations[0].date)