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: 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