SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit c73140f4 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Remove Funder and Grant lookups

parent 8beab653
No related branches found
No related tags found
No related merge requests found
......@@ -6,13 +6,14 @@ from django import forms
from .models import Funder, Grant
from ajax_select.fields import AutoCompleteSelectField
from dal import autocomplete
from scipost.forms import HttpRefererFormMixin
from scipost.models import Contributor
from organizations.models import Organization
from .models import Funder, Grant
class FunderRegistrySearchForm(forms.Form):
name = forms.CharField(max_length=128)
......@@ -25,8 +26,10 @@ class FunderForm(forms.ModelForm):
class FunderSelectForm(forms.Form):
funder = AutoCompleteSelectField('funder_lookup')
funder = forms.ModelChoiceField(
queryset=Funder.objects.all(),
widget=autocomplete.ModelSelect2(url='/funders/funder-autocomplete')
)
class FunderOrganizationSelectForm(forms.ModelForm):
organization = forms.ModelChoiceField(
......@@ -52,4 +55,7 @@ class GrantForm(HttpRefererFormMixin, forms.ModelForm):
class GrantSelectForm(forms.Form):
grant = AutoCompleteSelectField('grant_lookup')
grant = forms.ModelChoiceField(
queryset=Grant.objects.all(),
widget=autocomplete.ModelSelect2(url='/funders/grant-autocomplete')
)
......@@ -3,12 +3,23 @@ __license__ = "AGPL v3"
from django.conf.urls import url
from django.urls import path
from . import views
app_name = 'funders'
urlpatterns = [
path(
'funder-autocomplete',
views.FunderAutocompleteView.as_view(),
name='funder-autocomplete'
),
path(
'grant-autocomplete',
views.GrantAutocompleteView.as_view(),
name='grant-autocomplete'
),
url(r'^$', views.funders, name='funders'),
url(r'^dashboard$', views.funders_dashboard, name='funders_dashboard'),
url(r'^query_crossref_for_funder$', views.query_crossref_for_funder,
......
......@@ -9,16 +9,55 @@ from django.contrib import messages
from django.contrib.auth.decorators import permission_required
from django.urls import reverse, reverse_lazy
from django.db import transaction
from django.db.models import Q
from django.utils.decorators import method_decorator
from django.views.generic.edit import CreateView, UpdateView
from django.shortcuts import get_object_or_404, render, redirect
from dal import autocomplete
from .models import Funder, Grant
from .forms import FunderRegistrySearchForm, FunderForm, FunderOrganizationSelectForm, GrantForm
from scipost.mixins import PermissionsMixin
class FunderAutocompleteView(autocomplete.Select2QuerySetView):
"""
View to feed the Select2 widget.
"""
def get_queryset(self):
if not self.request.user.has_perm('scipost.can_draft_publication'):
return None
qs = Funder.objects.all()
if self.q:
qs = qs.filter(
Q(name__icontains=self.q) | Q(acronym__icontains=self.q) |
Q(identifier__icontains=self.q) | Q(organization__name__icontains=self.q) |
Q(organization__name_original__icontains=self.q) |
Q(organization__acronym__icontains=self.q)).order_by('name')[:10]
return qs
class GrantAutocompleteView(autocomplete.Select2QuerySetView):
"""
View to feed the Select2 widget.
"""
def get_queryset(self):
if not self.request.user.has_perm('scipost.can_draft_publication'):
return None
qs = Funder.objects.all()
if self.q:
qs = qs.filter(
Q(funder__name__icontains=self.q) |
Q(funder__acronym__icontains=self.q) |
Q(number__icontains=self.q) | Q(recipient_name__icontains=self.q) |
Q(recipient__user__last_name__icontains=self.q) |
Q(recipient__user__first_name__icontains=self.q) |
Q(further_details__icontains=self.q)).order_by('funder__name', 'number')[:10]
return qs
@permission_required('scipost.can_view_all_funding_info', raise_exception=True)
def funders_dashboard(request):
"""Administration of Funders and Grants."""
......
......@@ -40,54 +40,3 @@ class PublicationLookup(LookupChannel):
"""
if not request.user.has_perm('scipost.can_create_registration_invitations'):
raise PermissionDenied
@register('funder_lookup')
class FunderLookup(LookupChannel):
model = Funder
def get_query(self, q, request):
return self.model.objects.filter(
Q(name__icontains=q) | Q(acronym__icontains=q) |
Q(identifier__icontains=q) | Q(organization__name__icontains=q) |
Q(organization__name_original__icontains=q) |
Q(organization__acronym__icontains=q)).order_by('name')[:10]
def format_item_display(self, item):
"""(HTML) format item for displaying item in the selected deck area."""
return u"<span class='auto_lookup_display'>%s</span>" % str(item)
def format_match(self, item):
"""(HTML) Format item for displaying in the dropdown."""
return str(item)
def check_auth(self, request):
"""Check for required permissions."""
if not request.user.has_perm('scipost.can_draft_publication'):
raise PermissionDenied
@register('grant_lookup')
class GrantLookup(LookupChannel):
model = Grant
def get_query(self, q, request):
return (self.model.objects.filter(
Q(funder__name__icontains=q) | Q(funder__acronym__icontains=q) |
Q(number__icontains=q) | Q(recipient_name__icontains=q) |
Q(recipient__user__last_name__icontains=q) |
Q(recipient__user__first_name__icontains=q) |
Q(further_details__icontains=q)).order_by('funder__name', 'number')[:10])
def format_item_display(self, item):
"""(HTML) format item for displaying item in the selected deck area."""
return u"<span class='auto_lookup_display'>%s</span>" % str(item)
def format_match(self, item):
"""(HTML) Format item for displaying in the dropdown."""
return str(item)
def check_auth(self, request):
"""Check for required permissions."""
if not request.user.has_perm('scipost.can_draft_publication'):
raise PermissionDenied
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment