def create_or_update_provider(self, provider_data): provider = self.get_page_provider() licenses = [NodeLicense.objects.get(license_id=license_id) for license_id in provider_data.pop('licenses_acceptable', [])] default_license = provider_data.pop('default_license', False) primary_collection = provider_data.pop('primary_collection', None) provider_data.pop('additional_providers') if provider: for key, val in provider_data.items(): setattr(provider, key, val) provider.save() else: provider = CollectionProvider(**provider_data) provider._creator = self.request.user provider.save() if primary_collection: provider.primary_collection.collected_type_choices = primary_collection['fields']['collected_type_choices'] provider.primary_collection.status_choices = primary_collection['fields']['status_choices'] provider.primary_collection.issue_choices = primary_collection['fields']['issue_choices'] provider.primary_collection.volume_choices = primary_collection['fields']['volume_choices'] provider.primary_collection.program_area_choices = primary_collection['fields']['program_area_choices'] provider.primary_collection.save() if licenses: provider.licenses_acceptable = licenses if default_license: provider.default_license = NodeLicense.objects.get(license_id=default_license) return provider
def get_object(self, provider_id): return CollectionProvider.load(provider_id)