def update_or_create(provider_data):
    provider = PreprintProvider.load(provider_data['_id'])
    if provider:
        for key, val in provider_data.iteritems():
            setattr(provider, key, val)
        changed_fields = provider.save()
        if changed_fields:
            print('Updated {}: {}'.format(provider.name, changed_fields))
        return provider, False
    else:
        new_provider = PreprintProvider(**provider_data)
        new_provider.save()
        provider = PreprintProvider.load(new_provider._id)
        print('Added new preprint provider: {}'.format(provider._id))
        return new_provider, True
def update_or_create(provider_data):
    provider = PreprintProvider.load(provider_data['_id'])
    if provider:
        for key, val in provider_data.iteritems():
            setattr(provider, key, val)
        changed_fields = provider.save()
        if changed_fields:
            print('Updated {}: {}'.format(provider.name, changed_fields))
        return provider, False
    else:
        new_provider = PreprintProvider(**provider_data)
        new_provider.save()
        provider = PreprintProvider.load(new_provider._id)
        print('Added new preprint provider: {}'.format(provider._id))
        return new_provider, True
Beispiel #3
0
 def get_queryset(self):
     parent = self.request.query_params.get('filter[parents]', None)
     provider = PreprintProvider.load(self.kwargs['provider_id'])
     if parent:
         if parent == 'null':
             return provider.top_level_subjects
         #  Calculate this here to only have to do it once.
         allowed_parents = [id_ for sublist in provider.subjects_acceptable for id_ in sublist[0]]
         allows_children = [subs[0][-1] for subs in provider.subjects_acceptable if subs[1]]
         return [sub for sub in Subject.find(Q('parents', 'eq', parent)) if provider.subjects_acceptable == [] or self.is_valid_subject(allows_children=allows_children, allowed_parents=allowed_parents, sub=sub)]
     return provider.all_subjects
def update_or_create(provider_data):
    provider = PreprintProvider.load(provider_data['_id'])
    if provider:
        provider_data['subjects_acceptable'] = map(
            lambda rule: (map(get_subject_id, rule[0]), rule[1]),
            provider_data['subjects_acceptable']
        )
        provider_data['licenses_acceptable'] = [get_license(name) for name in provider_data['licenses_acceptable']]
        for key, val in provider_data.iteritems():
            setattr(provider, key, val)
        changed_fields = provider.save()
        if changed_fields:
            print('Updated {}: {}'.format(provider.name, changed_fields))
        return provider, False
    else:
        new_provider = PreprintProvider(**provider_data)
        new_provider.save()
        provider = PreprintProvider.load(new_provider._id)
        print('Added new preprint provider: {}'.format(provider._id))
        return new_provider, True
Beispiel #5
0
def update_or_create(provider_data):
    provider = PreprintProvider.load(provider_data['_id'])
    if provider:
        provider_data['subjects_acceptable'] = map(
            lambda rule: (map(get_subject_id, rule[0]), rule[1]),
            provider_data['subjects_acceptable'])
        provider_data['licenses_acceptable'] = [
            get_license(name) for name in provider_data['licenses_acceptable']
        ]
        for key, val in provider_data.iteritems():
            setattr(provider, key, val)
        changed_fields = provider.save()
        if changed_fields:
            print('Updated {}: {}'.format(provider.name, changed_fields))
        return provider, False
    else:
        new_provider = PreprintProvider(**provider_data)
        new_provider.save()
        provider = PreprintProvider.load(new_provider._id)
        print('Added new preprint provider: {}'.format(provider._id))
        return new_provider, True
Beispiel #6
0
    def get_providers_to_add_remove(self, providers, new_providers):
        diff = relationship_diff(
            current_items={provider._id: provider for provider in providers},
            new_items={provider['_id']: provider for provider in new_providers}
        )

        providers_to_add = []
        for provider_id in diff['add']:
            provider = PreprintProvider.load(provider_id)
            if not provider:
                raise exceptions.NotFound(detail='PreprintProvider with id "{}" was not found'.format(provider_id))
            providers_to_add.append(provider)

        return providers_to_add, diff['remove'].values()
Beispiel #7
0
 def get_queryset(self):
     provider = PreprintProvider.load(self.kwargs['provider_id'])
     return provider.licenses_acceptable if len(provider.licenses_acceptable) else super(PreprintProviderLicenseList, self).get_queryset()
Beispiel #8
0
 def get_object(self):
     return PreprintProvider.load(self.kwargs['provider_id'])
Beispiel #9
0
 def get_object(self, node_id):
     return PreprintProvider.load(node_id)
Beispiel #10
0
 def get_object(self, node_id):
     return PreprintProvider.load(node_id)