Exemplo n.º 1
0
    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")
Exemplo n.º 2
0
    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")
Exemplo n.º 3
0
    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")
Exemplo n.º 4
0
    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")
Exemplo n.º 5
0
 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")
Exemplo n.º 6
0
 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")
Exemplo n.º 7
0
 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")
Exemplo n.º 8
0
    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")