def run_user_deletion_completion(pending_deletion_request): """Run the user deletion verification. Args: pending_deletion_request: PendingDeletionRequest. The domain object for the user being verified. Returns: str. The outcome of the verification. """ # If deletion_complete is False the UserDeletionOneOffJob wasn't yet run # for the user. The verification will be done in the next run of # FullyCompleteUserDeletionOneOffJob. if not pending_deletion_request.deletion_complete: return wipeout_domain.USER_VERIFICATION_NOT_DELETED elif verify_user_deleted(pending_deletion_request.user_id): _delete_user_models_with_delete_at_end_policy( pending_deletion_request.user_id) user_models.DeletedUserModel( id=pending_deletion_request.user_id ).put() if pending_deletion_request.normalized_long_term_username is not None: user_services.save_deleted_username( pending_deletion_request.normalized_long_term_username) email_manager.send_account_deleted_email( pending_deletion_request.user_id, pending_deletion_request.email) return wipeout_domain.USER_VERIFICATION_SUCCESS else: pending_deletion_request.deletion_complete = False save_pending_deletion_requests([pending_deletion_request]) return wipeout_domain.USER_VERIFICATION_FAILURE
def run_user_deletion_completion(pending_deletion_request): """Run the user deletion verification. Args: pending_deletion_request: PendingDeletionRequest. The domain object for the user being verified. Returns: str. The outcome of the verification. """ if not pending_deletion_request.deletion_complete: return wipeout_domain.USER_VERIFICATION_NOT_DELETED elif verify_user_deleted(pending_deletion_request.user_id): _delete_user_models_with_delete_after_verification_policy( pending_deletion_request.user_id) user_models.DeletedUserModel( id=pending_deletion_request.user_id ).put() email_manager.send_account_deleted_email( pending_deletion_request.user_id, pending_deletion_request.email) return wipeout_domain.USER_VERIFICATION_SUCCESS else: pending_deletion_request.deletion_complete = False save_pending_deletion_requests([pending_deletion_request]) return wipeout_domain.USER_VERIFICATION_FAILURE
def verify_user_deleted(pending_deletion_model): """Verify that all the models for user specified in pending_deletion_model are deleted. Args: pending_deletion_model: PendingDeletionRequestModel. Returns: bool. True if all the models were correctly deleted, False otherwise. """ if _verify_user_models_deleted(pending_deletion_model.id): pending_deletion_model.delete() email_manager.send_account_deleted_email(pending_deletion_model.id, pending_deletion_model.email) return True else: pending_deletion_model.deletion_complete = False pending_deletion_model.put() return False
def map(pending_deletion_request_model): """Implements the map function for this job.""" # If deletion_complete is False the UserDeletionOneOffJob wasn't yet run # for the user. The verification will be done in the next run of # FullyCompleteUserDeletionOneOffJob. pending_deletion_request = wipeout_service.get_pending_deletion_request( pending_deletion_request_model.id) if not pending_deletion_request.deletion_complete: yield ('NOT DELETED', pending_deletion_request.user_id) elif wipeout_service.verify_user_deleted(pending_deletion_request): wipeout_service.delete_pending_deletion_request( pending_deletion_request.user_id) email_manager.send_account_deleted_email( pending_deletion_request.user_id, pending_deletion_request.email) yield ('SUCCESS', pending_deletion_request.user_id) else: pending_deletion_request.deletion_complete = False wipeout_service.save_pending_deletion_requests( [pending_deletion_request]) yield ('FAILURE', pending_deletion_request.user_id)