Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F69896885
views.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Jul 4, 02:22
Size
4 KB
Mime Type
text/x-python
Expires
Sat, Jul 6, 02:22 (2 d)
Engine
blob
Format
Raw Data
Handle
18766412
Attached To
rOACCT Open Access Compliance Check Tool (OACCT)
views.py
View Options
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
Log In to Comment