From ca71fb110fa1a22c8c6d9c7aaeb824c44ef4e418 Mon Sep 17 00:00:00 2001 From: "J.-S. Caux" <J.S.Caux@uva.nl> Date: Thu, 28 Jun 2018 06:20:28 +0200 Subject: [PATCH] Partial work on Prospective Fellows --- colleges/forms.py | 9 +++- .../colleges/_prospectivefellow_card.html | 7 ++- .../colleges/prospectivefellow_list.html | 2 +- colleges/urls.py | 2 + colleges/views.py | 48 +++++++++++-------- 5 files changed, 46 insertions(+), 22 deletions(-) diff --git a/colleges/forms.py b/colleges/forms.py index 9e122f940..f2df23911 100644 --- a/colleges/forms.py +++ b/colleges/forms.py @@ -10,7 +10,7 @@ from proceedings.models import Proceedings from submissions.models import Submission from scipost.models import Contributor -from .models import Fellowship, ProspectiveFellow +from .models import Fellowship, ProspectiveFellow, ProspectiveFellowEvent class AddFellowshipForm(forms.ModelForm): @@ -225,3 +225,10 @@ class ProspectiveFellowCreateForm(forms.ModelForm): model = ProspectiveFellow fields = ['title', 'first_name', 'last_name', 'email', 'discipline', 'expertises', 'webpage', 'status', 'contributor'] + + +class ProspectiveFellowEventForm(forms.ModelForm): + + class Meta: + model = ProspectiveFellowEvent + fields = ['event', 'comments'] diff --git a/colleges/templates/colleges/_prospectivefellow_card.html b/colleges/templates/colleges/_prospectivefellow_card.html index 7b4aff424..47c302400 100644 --- a/colleges/templates/colleges/_prospectivefellow_card.html +++ b/colleges/templates/colleges/_prospectivefellow_card.html @@ -23,5 +23,10 @@ </div> <div class="col-md-5"> <h3>Add an event for this Prospective Fellow</h3> - </div> + <form class="d-block mt-2 mb-3" action="{% url 'colleges:prospective_Fellow_event_create' pk=prosfel.id %}" method="post"> + {% csrf_token %} + {{ pfevent_form|bootstrap }} + <input type="submit" name="submit" value="Submit" class="btn btn-outline-secondary"> + </form> + </div> diff --git a/colleges/templates/colleges/prospectivefellow_list.html b/colleges/templates/colleges/prospectivefellow_list.html index 4d5ac386c..a91f731cd 100644 --- a/colleges/templates/colleges/prospectivefellow_list.html +++ b/colleges/templates/colleges/prospectivefellow_list.html @@ -34,7 +34,7 @@ </tr> <tr id="collapse{{ prosfel.id }}" class="collapse" role="tabpanel" aria-labelledby="heading{{ prosfel.id }}" style="background-color: #fff;"> <td colspan="4"> - {% include 'colleges/_prospectivefellow_card.html' with prosfel=prosfel %} + {% include 'colleges/_prospectivefellow_card.html' with prosfel=prosfel pfevent_form=pfevent_form %} </td> </tr> {% empty %} diff --git a/colleges/urls.py b/colleges/urls.py index 4c31ec0d9..9815eb3a5 100644 --- a/colleges/urls.py +++ b/colleges/urls.py @@ -52,4 +52,6 @@ urlpatterns = [ views.ProspectiveFellowUpdateView.as_view(), name='prospective_Fellow_update'), url(r'^prospectivefellows/(?P<pk>[0-9]+)/delete/$', views.ProspectiveFellowDeleteView.as_view(), name='prospective_Fellow_delete'), + url(r'^prospectivefellows/(?P<pk>[0-9]+)/events/add$', + views.ProspectiveFellowEventCreateView.as_view(), name='prospective_Fellow_event_create'), ] diff --git a/colleges/views.py b/colleges/views.py index 02ea1a107..23a757dcb 100644 --- a/colleges/views.py +++ b/colleges/views.py @@ -16,9 +16,11 @@ from .forms import FellowshipForm, FellowshipTerminateForm, FellowshipRemoveSubm FellowshipAddSubmissionForm, AddFellowshipForm, SubmissionAddFellowshipForm,\ FellowshipRemoveProceedingsForm, FellowshipAddProceedingsForm, SubmissionAddVotingFellowForm,\ FellowVotingRemoveSubmissionForm,\ - ProspectiveFellowCreateForm + ProspectiveFellowCreateForm, ProspectiveFellowEventForm from .models import Fellowship, ProspectiveFellow +from scipost.mixins import PermissionsMixin + @login_required @permission_required('scipost.can_manage_college_composition', raise_exception=True) @@ -299,50 +301,41 @@ def fellowship_add_proceedings(request, id): - -@method_decorator(login_required, name='dispatch') -@method_decorator(permission_required('scipost.can_manage_college_composition', raise_exception=True), - name='dispatch') -class ProspectiveFellowCreateView(CreateView): +class ProspectiveFellowCreateView(PermissionsMixin, CreateView): """ Formview to create a new Prospective Fellow. """ + permission_required = 'scipost.can_manage_college_composition' form_class = ProspectiveFellowCreateForm template_name = 'colleges/prospectivefellow_form.html' success_url = reverse_lazy('colleges:prospective_Fellows') -@method_decorator(login_required, name='dispatch') -@method_decorator(permission_required('scipost.can_manage_college_composition', raise_exception=True), - name='dispatch') -class ProspectiveFellowUpdateView(UpdateView): +class ProspectiveFellowUpdateView(PermissionsMixin, UpdateView): """ Formview to update a Prospective Fellow. """ + permission_required = 'scipost.can_manage_college_composition' model = ProspectiveFellow form_class = ProspectiveFellowCreateForm template_name = 'colleges/prospectivefellow_form.html' success_url = reverse_lazy('colleges:prospective_Fellows') -@method_decorator(login_required, name='dispatch') -@method_decorator(permission_required('scipost.can_manage_college_composition', raise_exception=True), - name='dispatch') -class ProspectiveFellowDeleteView(DeleteView): +class ProspectiveFellowDeleteView(PermissionsMixin, DeleteView): """ Delete a Prospective Fellow. """ + permission_required = 'scipost.can_manage_college_composition' model = ProspectiveFellow success_url = reverse_lazy('colleges:prospective_Fellows') -@method_decorator(login_required, name='dispatch') -@method_decorator(permission_required('scipost.can_manage_college_composition', raise_exception=True), - name='dispatch') -class ProspectiveFellowListView(ListView): +class ProspectiveFellowListView(PermissionsMixin, ListView): """ List the ProspectiveFellow object instances. """ + permission_required = 'scipost.can_manage_college_composition' model = ProspectiveFellow paginate_by = 50 @@ -354,5 +347,22 @@ class ProspectiveFellowListView(ListView): if 'discipline' in self.request.GET: queryset = queryset.filter(discipline=self.request.GET['discipline']) if 'expertise' in self.request.GET: - queryset = queryset.filter(expertises__in=self.request.GET['expertise']) + queryset = queryset.filter(expertises__contains=self.request.GET['expertise']) return queryset + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context['pfevent_form'] = ProspectiveFellowEventForm() + return context + + +class ProspectiveFellowEventCreateView(PermissionsMixin, CreateView): + """ + Add an event for a Prospective Fellow. + """ + permission_required = 'scipost.can_manage_college_composition' + form_class = ProspectiveFellowEventForm + + def form_valid(self, form): + messages.success(self.request, 'Event added successfully') + return super().form_valid(form) -- GitLab