|
42 | 42 | from ietf.group.utils import setup_default_community_list_for_group |
43 | 43 | from ietf.meeting.models import Meeting |
44 | 44 | from ietf.meeting.factories import MeetingFactory |
45 | | -from ietf.name.models import FormalLanguageName |
| 45 | +from ietf.name.models import DraftSubmissionStateName, FormalLanguageName |
46 | 46 | from ietf.person.models import Person |
47 | 47 | from ietf.person.factories import UserFactory, PersonFactory, EmailFactory |
48 | 48 | from ietf.submit.factories import SubmissionFactory, SubmissionExtResourceFactory |
@@ -3136,28 +3136,59 @@ def test_status_of_validating_submission(self): |
3136 | 3136 | self.assertContains(r, s.name) |
3137 | 3137 | self.assertContains(r, 'This submission is being processed and validated.', status_code=200) |
3138 | 3138 |
|
3139 | | - @override_settings(IDSUBMIT_MAX_VALIDATION_TIME=datetime.timedelta(minutes=30)) |
| 3139 | + @override_settings( |
| 3140 | + IDSUBMIT_MAX_VALIDATION_TIME=datetime.timedelta(minutes=30), |
| 3141 | + IDSUBMIT_EXPIRATION_AGE=datetime.timedelta(minutes=90), |
| 3142 | + ) |
3140 | 3143 | def test_cancel_stale_submissions(self): |
| 3144 | + # these will be lists of (Submission, "state_id") pairs |
| 3145 | + submissions_to_skip = [] |
| 3146 | + submissions_to_cancel = [] |
| 3147 | + |
| 3148 | + # submissions in the validating state |
3141 | 3149 | fresh_submission = SubmissionFactory(state_id='validating') |
3142 | 3150 | fresh_submission.submissionevent_set.create( |
3143 | 3151 | desc='fake created event', |
3144 | 3152 | time=timezone.now() - datetime.timedelta(minutes=15), |
3145 | 3153 | ) |
| 3154 | + submissions_to_skip.append((fresh_submission, "validating")) |
| 3155 | + |
3146 | 3156 | stale_submission = SubmissionFactory(state_id='validating') |
3147 | 3157 | stale_submission.submissionevent_set.create( |
3148 | 3158 | desc='fake created event', |
3149 | 3159 | time=timezone.now() - datetime.timedelta(minutes=30, seconds=1), |
3150 | 3160 | ) |
| 3161 | + submissions_to_cancel.append((stale_submission, "validating")) |
| 3162 | + |
| 3163 | + # submissions in other states |
| 3164 | + for state in DraftSubmissionStateName.objects.filter(used=True).exclude(slug="validating"): |
| 3165 | + to_skip = SubmissionFactory(state_id=state.pk) |
| 3166 | + to_skip.submissionevent_set.create( |
| 3167 | + desc="fake created event", |
| 3168 | + time=timezone.now() - datetime.timedelta(minutes=45), # would be canceled if it were "validating" |
| 3169 | + ) |
| 3170 | + submissions_to_skip.append((to_skip, state.pk)) |
| 3171 | + to_expire = SubmissionFactory(state_id=state.pk) |
| 3172 | + to_expire.submissionevent_set.create( |
| 3173 | + desc="fake created event", |
| 3174 | + time=timezone.now() - datetime.timedelta(minutes=90, seconds=1), |
| 3175 | + ) |
| 3176 | + if state.pk in ["posted", "cancel"]: |
| 3177 | + submissions_to_skip.append((to_expire, state.pk)) # these ones should not be expired regardless of age |
| 3178 | + else: |
| 3179 | + submissions_to_cancel.append(((to_expire, state.pk))) |
3151 | 3180 |
|
3152 | 3181 | cancel_stale_submissions() |
3153 | 3182 |
|
3154 | | - fresh_submission = Submission.objects.get(pk=fresh_submission.pk) |
3155 | | - self.assertEqual(fresh_submission.state_id, 'validating') |
3156 | | - self.assertEqual(fresh_submission.submissionevent_set.count(), 1) |
| 3183 | + for _subm, original_state_id in submissions_to_skip: |
| 3184 | + subm = Submission.objects.get(pk=_subm.pk) |
| 3185 | + self.assertEqual(subm.state_id, original_state_id) |
| 3186 | + self.assertEqual(subm.submissionevent_set.count(), 1) |
3157 | 3187 |
|
3158 | | - stale_submission = Submission.objects.get(pk=stale_submission.pk) |
3159 | | - self.assertEqual(stale_submission.state_id, 'cancel') |
3160 | | - self.assertEqual(stale_submission.submissionevent_set.count(), 2) |
| 3188 | + for _subm, _ in submissions_to_cancel: |
| 3189 | + subm = Submission.objects.get(pk=_subm.pk) |
| 3190 | + self.assertEqual(subm.state_id, "cancel") |
| 3191 | + self.assertEqual(subm.submissionevent_set.count(), 2) |
3161 | 3192 |
|
3162 | 3193 |
|
3163 | 3194 | class ApiSubmitTests(BaseSubmitTestCase): |
|
0 commit comments