def before_update(self, context, current, resource):
        """
        If the resource has changed we try to generate a budget data
        package, but if it hasn't then we don't do anything
        """

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

        if resource.get('upload', '') == '':
            # If it isn't an upload we check if it's the same url
            if current['url'] == resource['url']:
                # Return if it's the same
                return
            else:
                self.data.load(resource['url'])
        else:
            self.data.load(resource['upload'].file)

        self.generate_budget_data_package(resource)
If the resource has changed we try to generate a budget data
        package, but if it hasn't then we don't do anything