jobs.py

About this file

The jobs scheduled using celery crontab are defined in this file. Functions are defined to update statuses for due requests or overdue requests; send notifications to agency.
The last piece of this application i.e function update_next_request_number() is the asynchronous celery task that gets the job of automatically updating the next request number done.

Code Issues

  • Missing docstring for update_request_statuses()
  • The for loop for overdue requests looks very similar to the for loop for the due soon requests.

    For the overdue requests:
            
            for request in requests_overdue:
    
                if request.was_acknowledged:
                    agency_requests_overdue.append(request)
                else:
                    agency_acknowledgments_overdue.append(request)
    
                if request.status != request_status.OVERDUE:
                    create_object(
                        Events(
                            request.id,
                            user_guid=None,
                            type_=REQ_STATUS_CHANGED,
                            previous_value={"status": request.status},
                            new_value={"status": request_status.OVERDUE},
                            response_id=None,
                        )
                    )
                    update_object(
                        {"status": request_status.OVERDUE},
                        Requests,
                        request.id)
            
        

    For the due soon requests:
            
            for request in requests_due_soon:
    
                if request.was_acknowledged:
                    agency_requests_due_soon.append(request)
                else:
                    agency_acknowledgments_due_soon.append(request)
    
                if request.status != request_status.DUE_SOON:
                    create_object(
                        Events(
                            request.id,
                            user_guid=None,
                            type_=REQ_STATUS_CHANGED,
                            previous_value={"status": request.status},
                            new_value={"status": request_status.DUE_SOON},
                            response_id=None,
                        )
                    )
                    update_object(
                        {"status": request_status.DUE_SOON},
                        Requests,
                        request.id)
            
        
    Recommend extracting the for loop into a separate function that has the request list and the request status as parameters.

Code Check Report


app/jobs.py:9:1: F401 'app.sentry' imported but unused
                        

Documentation drawn from source code


update_request_statuses():

_update_request_statuses():

Update statuses for all requests that are now Due Soon or Overdue
and send a notification email to agency admins listing the requests.

update_next_request_number():

Celery task to automatically update the next request number of each agency to 1
:return:

Source code