def get(self, request, relation=None, name=None, year=None): filter_criteria = request.session.get("filter_criteria", {}) filter_criteria.update(date_published__gte=year + "-01-01T00:00:00Z", date_published__lte=year + "-12-31T00:00:00Z") if relation == RelationClassifier.JOURNAL.value: filter_criteria.update(container__name=name) elif relation == RelationClassifier.SPONSOR.value: filter_criteria.update(sponsors__name=name) elif relation == RelationClassifier.PLATFORM.value: filter_criteria.update(platforms__name=name) elif relation == RelationClassifier.MODELDOCUMENDTATION.value: filter_criteria.update(model_documentation__name=name) elif relation == RelationClassifier.AUTHOR.value: filter_criteria.update(authors__name__exact=name.replace("/", " ")) sqs = SearchQuerySet() sqs = sqs.filter(**filter_criteria).models(Publication) pubs_pk = queryset_gen(sqs) pubs = Publication.api.primary(pk__in=pubs_pk) paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = PublicationListSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) return Response({'json': json.dumps(response)}, template_name="publication/list.html")
def get(self, request, relation=None, name=None, year=None): filter_criteria = request.session.get("filter_criteria", {}) filter_criteria.update(date_published__gte=year + "-01-01", date_published__lte=year + "-12-31") if relation == RelationClassifier.JOURNAL.value: filter_criteria.update(container__name=name) elif relation == RelationClassifier.SPONSOR.value: filter_criteria.update(sponsors__name=name) elif relation == RelationClassifier.PLATFORM.value: filter_criteria.update(platforms__name=name) elif relation == RelationClassifier.MODELDOCUMENDTATION.value: filter_criteria.update(model_documentation__name=name) elif relation == RelationClassifier.AUTHOR.value: try: name_ls = name.split("/") filter_criteria.update(creators__given_name__exact=name_ls[0], creators__family_name__exact=name_ls[1]) except: filter_criteria.update(creators__given_name__exact=name) pubs = Publication.api.primary(**filter_criteria) paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = PublicationListSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) return Response({'json': dumps(response)}, template_name="publication/list.html")
def get(self, request, relation=None, name=None, year=None): filter_criteria = request.session.get("filter_criteria", {}) filter_criteria.update(date_published__gte=year + "-01-01T00:00:00Z", date_published__lte=year + "-12-31T00:00:00Z") if relation == RelationClassifier.JOURNAL.value: filter_criteria.update(container__name=name) elif relation == RelationClassifier.SPONSOR.value: filter_criteria.update(sponsors__name=name) elif relation == RelationClassifier.PLATFORM.value: filter_criteria.update(platforms__name=name) elif relation == RelationClassifier.MODELDOCUMENDTATION.value: filter_criteria.update(model_documentation__name=name) elif relation == RelationClassifier.AUTHOR.value: filter_criteria.update(authors__name__exact=name.replace("/", " ")) sqs = SearchQuerySet() sqs = sqs.filter(**filter_criteria).models(Publication) pubs_pk = queryset_gen(sqs) pubs = Publication.api.primary(pk__in=pubs_pk) paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = PublicationListSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) return Response({'json': dumps(response)}, template_name="publication/list.html")
def get(self, request): sqs = SearchQuerySet() sqs = sqs.filter( **visualization_query_filter(request)).models(Publication) pub_pk = queryset_gen(sqs) pubs = Publication.api.primary(pk__in=pub_pk). \ annotate(given_name=F('creators__given_name'), family_name=F('creators__family_name')). \ values('given_name', 'family_name'). \ order_by('given_name', 'family_name'). \ annotate(published_count=Count('given_name'), code_availability_count=models.Sum(models.Case( models.When(~Q(code_archive_url=''), then=1), default=0, output_field=models.IntegerField())), name=Concat('given_name', V(' '), 'family_name')). \ values('name', 'published_count', 'code_availability_count', 'given_name', 'family_name'). \ order_by('-published_count') paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = AuthorAggregrationSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) response['relation'] = RelationClassifier.AUTHOR.value return Response( {'json': dumps(response)}, template_name="visualization/publication_relationlist.html")
def get(self, request): sqs = SearchQuerySet() sqs = sqs.filter(**visualization_query_filter(request)).models(Publication) pub_pk = queryset_gen(sqs) pubs = Publication.api.aggregated_list(pk__in=pub_pk, identifier='platforms') paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = PublicationAggregationSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) response['relation'] = RelationClassifier.PLATFORM.value return Response({'json': json.dumps(response)}, template_name="visualization/publication_relationlist.html")
def get(self, request): pubs = Publication.api.aggregated_list( identifier='platforms', **visualization_query_filter(request)) paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = PublicationAggregationSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) response['relation'] = RelationClassifier.PLATFORM.value return Response( {'json': dumps(response)}, template_name="visualization/publication_relationlist.html")
def get(self, request): sqs = SearchQuerySet() sqs = sqs.filter(**visualization_query_filter(request)) pub_pk = queryset_gen(sqs) pubs = Publication.api.aggregated_list(pk__in=pub_pk, identifier='sponsors') paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = PublicationAggregationSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) response['relation'] = RelationClassifier.SPONSOR.value return Response( {'json': dumps(response)}, template_name="visualization/publication_relationlist.html")
def get(self, request): sqs = SearchQuerySet() sqs = sqs.filter(**visualization_query_filter(request)).models(Publication) pub_pk = queryset_gen(sqs) pubs = Publication.api.primary(pk__in=pub_pk). \ annotate(given_name=F('creators__given_name'), family_name=F('creators__family_name')). \ values('given_name', 'family_name'). \ order_by('given_name', 'family_name'). \ annotate(published_count=Count('given_name'), code_availability_count=models.Sum(models.Case( models.When(~Q(code_archive_url=''), then=1), default=0, output_field=models.IntegerField())), name=Concat('given_name', V(' '), 'family_name')). \ values('name', 'published_count', 'code_availability_count', 'given_name', 'family_name'). \ order_by('-published_count') paginator = CatalogPagination() result_page = paginator.paginate_queryset(pubs, request) serializer = AuthorAggregrationSerializer(result_page, many=True) response = paginator.get_paginated_response(serializer.data) response['relation'] = RelationClassifier.AUTHOR.value return Response({'json': json.dumps(response)}, template_name="visualization/publication_relationlist.html")