Skip to content

Commit

Permalink
Merge pull request #69 from edx/alangsto/remove_old_tasks
Browse files Browse the repository at this point in the history
chore: remove unused celery tasks
  • Loading branch information
alangsto authored Nov 17, 2021
2 parents 16f2197 + 5a7be27 commit d25d2ee
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 169 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ Change Log
Unreleased
~~~~~~~~~~

[2.0.3] - 2021-11-17
~~~~~~~~~~~~~~~~~~~~
* Remove unused celery tasks

[2.0.2] - 2021-11-16
~~~~~~~~~~~~~~~~~~~~
* Cut over to new celery tasks for IDV and proctoring handlers.
Expand Down
2 changes: 1 addition & 1 deletion edx_name_affirmation/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
Django app housing name affirmation logic.
"""

__version__ = '2.0.2'
__version__ = '2.0.3'

default_app_config = 'edx_name_affirmation.apps.EdxNameAffirmationConfig' # pylint: disable=invalid-name
168 changes: 0 additions & 168 deletions edx_name_affirmation/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,81 +21,6 @@
MAX_RETRIES = 3


@shared_task(
bind=True, autoretry_for=(Exception,), default_retry_delay=DEFAULT_RETRY_SECONDS, max_retries=MAX_RETRIES,
)
@set_code_owner_attribute
def idv_update_verified_name(self, attempt_id, user_id, status, photo_id_name, full_name):
"""
Celery task for updating a verified name based on an IDV attempt
"""
log.info('VerifiedName: idv_update_verified_name triggering Celery task started for user %(user_id)s '
'with attempt_id %(attempt_id)s and status %(status)s',
{
'user_id': user_id,
'attempt_id': attempt_id,
'status': status
}
)
trigger_status = VerifiedNameStatus.trigger_state_change_from_idv(status)
verified_names = VerifiedName.objects.filter(user__id=user_id, verified_name=photo_id_name).order_by('-created')
if verified_names:
# if there are VerifiedName objects, we want to update existing entries
# for each attempt with no attempt id (either proctoring or idv), update attempt id
updated_for_attempt_id = verified_names.filter(
proctored_exam_attempt_id=None,
verification_attempt_id=None
).update(verification_attempt_id=attempt_id)

if updated_for_attempt_id:
log.info(
'Updated VerifiedNames for user={user_id} to verification_attempt_id={attempt_id}'.format(
user_id=user_id,
attempt_id=attempt_id,
)
)

# then for all matching attempt ids, update the status
if trigger_status:
verified_name_qs = verified_names.filter(
verification_attempt_id=attempt_id,
proctored_exam_attempt_id=None
)

# Individually update to ensure that post_save signals send
for verified_name_obj in verified_name_qs:
verified_name_obj.status = trigger_status
verified_name_obj.save()

log.info(
'Updated VerifiedNames for user={user_id} with verification_attempt_id={attempt_id} to '
'have status={status}'.format(
user_id=user_id,
attempt_id=attempt_id,
status=trigger_status
)
)
else:
# otherwise if there are no entries, we want to create one.
user = User.objects.get(id=user_id)
verified_name = VerifiedName.objects.create(
user=user,
verified_name=photo_id_name,
profile_name=full_name,
verification_attempt_id=attempt_id,
status=(trigger_status if trigger_status else VerifiedNameStatus.PENDING),
)
log.error(
'Created VerifiedName for user={user_id} to have status={status} '
'and verification_attempt_id={attempt_id}, because no matching '
'attempt_id or verified_name were found.'.format(
user_id=user_id,
attempt_id=attempt_id,
status=verified_name.status
)
)


@shared_task(
bind=True, autoretry_for=(Exception,), default_retry_delay=DEFAULT_RETRY_SECONDS, max_retries=MAX_RETRIES,
)
Expand Down Expand Up @@ -169,99 +94,6 @@ def idv_update_verified_name_task(self, attempt_id, user_id, name_affirmation_st
)


@shared_task(
bind=True, autoretry_for=(Exception,), default_retry_delay=DEFAULT_RETRY_SECONDS, max_retries=MAX_RETRIES,
)
@set_code_owner_attribute
def proctoring_update_verified_name(
self,
attempt_id,
user_id,
status,
full_name,
profile_name,
is_practice_exam,
is_proctored,
backend_supports_onboarding
):
"""
Celery task for updating a verified name based on a proctoring attempt
"""

# We only care about updates from onboarding exams, or from non-practice proctored exams with a backend that
# does not support onboarding. This is because those two event types are guaranteed to contain verification events,
# whereas timed exams and proctored exams with a backend that does support onboarding are not guaranteed
is_onboarding_exam = is_practice_exam and is_proctored and backend_supports_onboarding
reviewable_proctored_exam = is_proctored and not is_practice_exam and not backend_supports_onboarding
if not (is_onboarding_exam or reviewable_proctored_exam):
return

# check if approved VerifiedName already exists for the user
verified_name = VerifiedName.objects.filter(
user__id=user_id,
status=VerifiedNameStatus.APPROVED
).order_by('-created').first()
if verified_name:
approved_verified_name = verified_name.verified_name
is_full_name_approved = approved_verified_name == full_name
if not is_full_name_approved:
log.warning(
'Full name for proctored_exam_attempt_id={attempt_id} is not equal '
'to the most recent verified name verified_name_id={name_id}.'.format(
attempt_id=attempt_id,
name_id=verified_name.id
)
)
return

trigger_status = VerifiedNameStatus.trigger_state_change_from_proctoring(status)

verified_name = VerifiedName.objects.filter(
user__id=user_id,
proctored_exam_attempt_id=attempt_id
).order_by('-created').first()
if verified_name:
# if a verified name for the given attempt ID exists, update it if the status should trigger a transition
if trigger_status:
verified_name.status = trigger_status
verified_name.save()
log.info(
'Updated VerifiedName for user={user_id} with proctored_exam_attempt_id={attempt_id} '
'to have status={status}'.format(
user_id=user_id,
attempt_id=attempt_id,
status=trigger_status
)
)
else:
if full_name and profile_name:
# if they do not already have an approved VerifiedName, create one
user = User.objects.get(id=user_id)
VerifiedName.objects.create(
user=user,
verified_name=full_name,
proctored_exam_attempt_id=attempt_id,
status=(trigger_status if trigger_status else VerifiedNameStatus.PENDING),
profile_name=profile_name
)
log.info(
'Created VerifiedName for user={user_id} to have status={status} '
'and proctored_exam_attempt_id={attempt_id}'.format(
user_id=user_id,
attempt_id=attempt_id,
status=trigger_status
)
)
else:
log.error(
'Cannot create VerifiedName for user={user_id} for proctored_exam_attempt_id={attempt_id} '
'because neither profile name nor full name were provided'.format(
user_id=user_id,
attempt_id=attempt_id,
)
)


@shared_task(
bind=True, autoretry_for=(Exception,), default_retry_delay=DEFAULT_RETRY_SECONDS, max_retries=MAX_RETRIES,
)
Expand Down

0 comments on commit d25d2ee

Please sign in to comment.