def test_successful_post_no_home_page(self, client, source_add_user, mock_icon_urls): test_data = get_post_body() resp = client.post( self.endpoint, json.dumps(test_data), content_type='application/vnd.api+json', HTTP_AUTHORIZATION=source_add_user.authorization(), ) assert resp.status_code == 201 data = flatten_write_response(resp) created_label = data['source']['longTitle'].replace(' ', '_').lower() created_user = ShareUser.objects.get( pk=IDObfuscator.decode_id(data['user']['id'])) assert data['source']['longTitle'] == test_data['data']['attributes'][ 'long_title'] assert data['source']['name'] == created_label assert data['source']['homePage'] is None assert data['user']['username'] == created_label assert data['user']['token'] == created_user.accesstoken_set.first( ).token assert created_user.is_trusted is True assert data['sourceConfig']['label'] == created_label
def _resolve_ref(self, ref): model = apps.get_model('share', model_name=ref['@type']) ct = ContentType.objects.get_for_model(model, for_concrete_model=True) try: if ref['@id'].startswith('_:'): return next(change.target for change in self._changes_cache if change.target_type == ct and change.node_id == ref['@id'] and change.target) return model._meta.concrete_model.objects.get( pk=IDObfuscator.decode_id(ref['@id'])) except (StopIteration, model.DoesNotExist) as ex: raise Exception( 'Could not resolve reference {}'.format(ref)) from ex
def _resolve_ref(self, ref): model = apps.get_model('share', model_name=ref['@type']) ct = ContentType.objects.get_for_model(model, for_concrete_model=True) try: if ref['@id'].startswith('_:'): return next( change.target for change in self._changes_cache if change.target_type == ct and change.node_id == ref['@id'] and change.target ) return model._meta.concrete_model.objects.get(pk=IDObfuscator.decode_id(ref['@id'])) except (StopIteration, model.DoesNotExist) as ex: raise Exception('Could not resolve reference {}'.format(ref)) from ex
def get_search_results(self, request, queryset, search_term): try: return queryset.filter(id=IDObfuscator.decode_id(search_term)), False except InvalidID: pass # Overriden because there is no way to opt out of a case insensitive search search_fields = self.get_search_fields(request) use_distinct = bool(search_term) if search_fields and search_term: orm_lookups = ['{}__startswith'.format(search_field) for search_field in search_fields] for bit in search_term.split(): or_queries = [models.Q(**{orm_lookup: bit}) for orm_lookup in orm_lookups] queryset = queryset.filter(reduce(operator.or_, or_queries)) return queryset, use_distinct
def test_successful_post_no_home_page(self, client, source_add_user, mock_icon_urls): test_data = get_post_body() resp = client.post( self.endpoint, json.dumps(test_data), content_type='application/vnd.api+json', HTTP_AUTHORIZATION=source_add_user.authorization(), ) assert resp.status_code == 201 data = flatten_write_response(resp) created_label = data['source']['longTitle'].replace(' ', '_').lower() created_user = ShareUser.objects.get(pk=IDObfuscator.decode_id(data['user']['id'])) assert data['source']['longTitle'] == test_data['data']['attributes']['long_title'] assert data['source']['name'] == created_label assert data['source']['homePage'] is None assert data['user']['username'] == created_label assert data['user']['token'] == created_user.accesstoken_set.first().token assert created_user.is_trusted is True