Page MenuHomec4science

views.py
No OneTemporary

File Metadata

Created
Thu, Jul 4, 02:22

views.py

from django.contrib.auth.models import AbstractUser
from django.shortcuts import render
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect, Http404, JsonResponse
from .models import Journal, Institution, OrganizationCondition, JournalCondition, ConditionSet, Institution
from rest_framework import status
from rest_framework.response import Response
from .serializers import JournalSerializer, InstitSerializer, OrganizationConditionSerializer, JournalConditionSerializer, ConditionSetSerializer
from rest_framework import viewsets, filters, generics
from rest_framework.authentication import BasicAuthentication
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from itertools import chain
from django.db.models import Count
from dj_rql.filter_cls import RQLFilterClass, RQL_NULL
from dj_rql.constants import FilterLookups
from urllib.parse import unquote
class JournalViewSet(viewsets.ModelViewSet):
authentification_classes = (BasicAuthentication,)
permission_classes = [IsAuthenticatedOrReadOnly]
search_fields = ['name']
filter_backends = (filters.SearchFilter,)
queryset = Journal.objects.all()
serializer_class = JournalSerializer
class InstitViewSet(viewsets.ModelViewSet):
authentification_classes = (BasicAuthentication,)
permission_classes = [IsAuthenticatedOrReadOnly]
serializer_class = InstitSerializer
queryset = Institution.objects.filter(
is_funder=False
)
# http://127.0.0.1:8000/api/organizationcondition/?eq(organization.id,1)
# http://127.0.0.1:8000/api/organizationcondition/?and(eq(organization.id,1),eq(condition_set.id,51))
# http://127.0.0.1:8000/api/organizationcondition/?and(eq(organization.id,1),eq(condition_set.condition_type.id,2))
class ConditionFilters(RQLFilterClass):
MODEL = OrganizationCondition
FILTERS = (
{
'namespace': 'organization',
'filters': ['id',],
},
{
'namespace': 'condition_set',
'filters': ['id',{'namespace': 'condition_type',
'filters': ['id',],
}],
},
)
class OrganizationConditionViewSet(viewsets.ModelViewSet):
authentification_classes = (BasicAuthentication,)
permission_classes = [IsAuthenticatedOrReadOnly]
# filter_backends = (filters.SearchFilter,)
# search_fields = ['=organization__id']
serializer_class = OrganizationConditionSerializer
rql_filter_class = ConditionFilters
queryset = OrganizationCondition.objects.all()
class JournalConditionViewSet(viewsets.ModelViewSet):
authentification_classes = (BasicAuthentication,)
permission_classes = [IsAuthenticatedOrReadOnly]
filter_backends = (filters.SearchFilter,)
search_fields = ['=journal__id']
queryset = JournalCondition.objects.all()
serializer_class = JournalConditionSerializer
class ConditionSetViewSet(viewsets.ModelViewSet):
authentification_classes = (BasicAuthentication,)
permission_classes = [IsAuthenticatedOrReadOnly]
queryset = ConditionSet.objects.all()
serializer_class = ConditionSetSerializer
class FunderViewSet(viewsets.ModelViewSet):
authentification_classes = (BasicAuthentication,)
permission_classes = [IsAuthenticatedOrReadOnly]
serializer_class = InstitSerializer
queryset = Institution.objects.filter(
is_funder=True
)
# Count number of different version
# OrganizationCondition.objects.annotate(version_count=Count('condition_set__term__version'))
# OrganizationCondition.objects
# .values('condition_set__term__version') #what to group by
# .annotate(version_count=Count('condition_set__term__version')) # what to aggregate
# group by version and count
# OrganizationCondition.objects.values('condition_set__term__version').annotate(version_count=Count('condition_set__term__version'))
# source https://hakibenita.com/django-group-by-sql
# https://docs.djangoproject.com/en/3.2/topics/db/aggregation/
# OrganizationCondition.objects.values('condition_set__term__version').filter(organization_id=1).annotate(version_count=Count('condition_set__term__version'))

Event Timeline