'Returns the first entry for the this action and the given fields in kwargs, if found.
The exclude_args dict allows excluding entries with the field names-and-values in exclude_args.
Raises ItemNotFoundError if more than 1 entry is found.
There may or may not be greater than one entry, depending on the usage pattern for this Action.'

def find_first(self, exclude_args=None, **kwargs):

    objects = self.find_all(exclude_args=exclude_args, **kwargs)
    if (len(objects) == 0):
        raise CourseActionStateItemNotFoundError('No    entry    found    for    action    {action}    with    filter    {filter},    excluding    {exclude}'.format(action=self.ACTION, filter=kwargs, exclude=exclude_args))
    else:
        return objects[0]
