def test_add_staging_providers(self): populate_main('stage') providers = PreprintProvider.find() assert_equal(PreprintProvider.find().count(), len(STAGING_PREPRINT_PROVIDERS)) ids = [provider._id for provider in providers] for id in STAGING_PREPRINT_PROVIDERS: assert_in(id, ids)
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 get_default_odm_query(self): provider = PreprintProvider.find_one(Q('_id', 'eq', self.kwargs['provider_id'])) return ( Q('preprint_file', 'ne', None) & Q('is_deleted', 'ne', True) & Q('is_public', 'eq', True) & Q('preprint_providers', 'eq', provider) )
def get_default_odm_query(self): # TODO: this will return unpublished preprints so that users # can find and resume the publishing workflow, but filtering # public preprints should filter for `is_published` provider = PreprintProvider.find_one(Q('_id', 'eq', self.kwargs['provider_id'])) return ( Q('provider', 'eq', provider) )
def test_add_default_providers(self): populate_main(None) providers = PreprintProvider.find() assert_equal(providers.count(), len(PROD_PREPRINT_PROVIDERS)) ids = [provider._id for provider in providers] for id in PROD_PREPRINT_PROVIDERS: assert_in(id, ids) for id in set(STAGING_PREPRINT_PROVIDERS) - set( PROD_PREPRINT_PROVIDERS): assert_not_in(id, ids)
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
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()
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
def get_queryset(self): return PreprintProvider.find(self.get_query_from_request())
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()
def main(): provider = PreprintProvider.find()[0] provider.subjects_acceptable = create_subject_rules() provider.save()
def main(): provider = PreprintProvider.find()[0] provider.subjects_acceptable = create_subject_rules() provider.save()
def get_object(self): return PreprintProvider.load(self.kwargs['provider_id'])
def get_object(self, node_id): return PreprintProvider.load(node_id)
def get_object(self, node_id): return PreprintProvider.load(node_id)
def get_campaigns(): global CAMPAIGNS global CAMPAIGNS_LAST_REFRESHED logger = logging.getLogger(__name__) if not CAMPAIGNS or throttle_period_expired(CAMPAIGNS_LAST_REFRESHED, CAMPAIGN_REFRESH_THRESHOLD): # Native campaigns: PREREG and ERPC CAMPAIGNS = { 'prereg': { 'system_tag': 'prereg_challenge_campaign', 'redirect_url': furl.furl(DOMAIN).add(path='prereg/').url, 'confirmation_email_template': mails.CONFIRM_EMAIL_PREREG, 'login_type': 'native', }, 'erpc': { 'system_tag': 'erp_challenge_campaign', 'redirect_url': furl.furl(DOMAIN).add(path='erpc/').url, 'confirmation_email_template': mails.CONFIRM_EMAIL_ERPC, 'login_type': 'native', }, } # Institution Login CAMPAIGNS.update({ 'institution': { 'system_tag': 'institution_campaign', 'redirect_url': '', 'login_type': 'institution', }, }) # Proxy campaigns: Preprints, both OSF and branded ones try: preprint_providers = PreprintProvider.find(Q('_id', 'ne', None)) for provider in preprint_providers: if provider._id == 'osf': template = 'osf' name = 'OSF' url_path = 'preprints/' else: template = 'branded' name = provider.name url_path = 'preprints/{}'.format(provider._id) campaign = '{}-preprints'.format(provider._id) system_tag = '{}_preprints'.format(provider._id) CAMPAIGNS.update({ campaign: { 'system_tag': system_tag, 'redirect_url': furl.furl(DOMAIN).add(path=url_path).url, 'confirmation_email_template': mails.CONFIRM_EMAIL_PREPRINTS(template, name), 'login_type': 'proxy', 'provider': name, } }) except (NoResultsFound or QueryException or ImproperConfigurationError) as e: logger.warn('An error has occurred during campaign initialization: {}', e) CAMPAIGNS_LAST_REFRESHED = datetime.utcnow() return CAMPAIGNS
def get_default_odm_query(self): provider = PreprintProvider.find_one( Q('_id', 'eq', self.kwargs['provider_id'])) return (Q('preprint_file', 'ne', None) & Q('is_deleted', 'ne', True) & Q('is_public', 'eq', True) & Q('preprint_providers', 'eq', provider))
def tearDown(self): PreprintProvider.remove()