<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def generate_budget_data_package(self, resource):
 """ Try to grab a budget data package schema from the resource. The schema only allows fields which are defined in the budget data package specification. If a field is found that is not in the specification this will return a NotABudgetDataPackageException and in that case we can just return and ignore the resource """


        # Return if the budget data package fields have not been filled in
        if not self.are_budget_data_package_fields_filled_in(resource):
            return

        try:
            resource['schema'] = self.data.schema
        except exceptions.NotABudgetDataPackageException:
            log.debug('Resource is not a Budget Data Package')
            resource['schema'] = []
            return

        # If the schema fits, this can be exported as a budget data package
        # so we add the missing metadata fields to the resource.
        resource['BudgetDataPackage'] = True
        resource['standard'] = self.data.version
        resource['granularity'] = self.data.granularity
        resource['type'] = self.data.budget_type