diff --git a/colleges/forms.py b/colleges/forms.py index 9e122f940be46d26fca51c75de3830efb926a6ca..f2df2391139a1653b0879a41f7445d9e47bd26fa 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 7b4aff4249980c371ae052ab735ae88385f2c07f..47c30240082873738b91680e6116de790ead3ab1 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 4d5ac386cd23dcf9e4abe01c633a4a415863a016..a91f731cdc142479c7236ae9ebad34fa500b557f 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 4c31ec0d9ba25c8748726e4d6e9ea9e36e752182..9815eb3a51f7de85b7b623e41ce1fe891020cc48 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 02ea1a107c6fb7437c0672b50402de1aba457cd8..23a757dcb45f3772d1d7f8b5b9f14885c97635b9 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)