def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) project = context['project'] if hasattr(project, 'grantagreement'): context['grant_agreement_button_text'] = 'Edit' context['grant_agreement_button_url'] = reverse('logged-grant_management-grant_agreement-update', kwargs={'pk': project.grantagreement.id}) else: context['grant_agreement_button_text'] = 'Create' context['grant_agreement_button_url'] = reverse('logged-grant_management-grant_agreement-add', kwargs={'project': project.id}) context.update({'active_section': 'grant_management', 'active_subsection': 'project-list', 'sidebar_template': 'grant_management/_sidebar-grant_management.tmpl'}) context['breadcrumb'] = [{'name': 'Grant management', 'url': reverse('logged-grant_management-project-list')}, {'name': f'Details ({project.key_pi()})'}] context['lay_summaries_count'] = project.laysummary_set.exclude(text='').count() context['blog_posts_count'] = project.blogpost_set.exclude(text='').count() context.update(comments_attachments_forms('logged-grant_management-project-comment-add', project)) if 'tab' in self.request.GET: context['active_tab'] = self.request.GET['tab'] else: context['active_tab'] = 'finances' return context
def proposal_detail_eligibility_context(proposal): context = {} context.update( utils.comments_attachments_forms( 'logged-call-evaluation-proposal-detail', proposal)) context.update({ 'active_section': 'evaluation', 'active_subsection': 'evaluation-list', 'sidebar_template': 'evaluation/_sidebar-evaluation.tmpl' }) context['breadcrumb'] = [{ 'name': 'Calls to evaluate', 'url': reverse('logged-evaluation-list') }, { 'name': f'List of proposals ({proposal.call.little_name()})', 'url': reverse('logged-call-evaluation-list-proposals', kwargs={'call_id': proposal.call.id}) }, { 'name': 'Proposal' }] context[EligibilityDecisionForm.FORM_NAME] = EligibilityDecisionForm( prefix=EligibilityDecisionForm.FORM_NAME, proposal_id=proposal.id) context['eligibility_history'] = get_eligibility_history(proposal) return context
def get(self, request, *args, **kwargs): context = self.prepare_context(request, *args, **kwargs) proposal = Proposal.objects.get(id=kwargs['pk']) context['external_url'] = self.request.build_absolute_uri( reverse('proposal-update', kwargs={'uuid': proposal.uuid})) context.update( utils.comments_attachments_forms('logged-call-proposal-detail', proposal)) context.update({ 'active_section': 'calls', 'active_subsection': 'call-list', 'sidebar_template': 'logged/_sidebar-calls.tmpl' }) context['breadcrumb'] = [{ 'name': 'Calls', 'url': reverse('logged-call-list') }, { 'name': f'List of proposals ({proposal.call.little_name()})', 'url': reverse('logged-call-list-proposals', kwargs={'call_id': proposal.call.id}) }, { 'name': 'Proposal' }] context['activity'] = get_template_value_for_call( 'activity', proposal.call) return render(request, 'logged/proposal-detail.tmpl', context)
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({ 'active_section': 'lists', 'active_subsection': 'project-list', 'sidebar_template': 'logged/_sidebar-lists.tmpl' }) context.update( utils.comments_attachments_forms('logged-project-comment-add', context['project'])) context['breadcrumb'] = [{ 'name': 'Lists', 'url': reverse('logged-lists') }, { 'name': 'Projects', 'url': reverse('logged-project-list') }, { 'name': f'Details ({context["project"].key_pi()})' }] return context
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) call_evaluation = CallEvaluation.objects.get(id=self.kwargs['pk']) CheckboxSelectMultipleSortable.add_missing_related_objects(CriterionCallEvaluation, call_evaluation, 'call_evaluation', Criterion, 'criterion') criteria = [] for criterion in call_evaluation.criterioncallevaluation_set.order_by('order', 'criterion__name'): criteria.append(({'in_call_evaluation': criterion.enabled, 'name': criterion.criterion.name, 'description': criterion.criterion.description}) ) criteria.sort(key=lambda c: not c['in_call_evaluation']) context['criteria'] = criteria context.update({'active_section': 'evaluation', 'active_subsection': 'evaluation-list', 'sidebar_template': 'evaluation/_sidebar-evaluation.tmpl' }) context['breadcrumb'] = [{'name': 'Calls to evaluate', 'url': reverse('logged-evaluation-list')}, {'name': f'Details ({call_evaluation.call.little_name()})'}] context.update(comments_attachments_forms('logged-call-evaluation-comment-add', call_evaluation)) return context
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) if hasattr(context['project'], 'grantagreement'): context.update(comments_attachments_forms('logged-grant_management-grant_agreement-comment-add', context['project'].grantagreement)) return context
def prepare_context(self, request, *args, **kwargs): context = super().get_context_data(**kwargs) if 'uuid' in kwargs: # Public requests are based on 'uuid' proposal = Proposal.objects.get(uuid=kwargs['uuid']) elif 'pk' in kwargs: # Logged requests (for the comments specially) are based on 'id' proposal = Proposal.objects.get(id=kwargs['pk']) else: assert False call = proposal.call context.update(call_context_for_template(call)) context['proposal'] = proposal context['part_numbers'] = call.get_part_numbers_for_call() context['parts_with_answers'] = ProposalParts(request.POST, request.FILES, proposal, call).get_parts() if request.user.groups.filter(name='logged').exists(): href = description = None if proposal.status_is_draft(): href = reverse('proposal-update', kwargs={'uuid': proposal.uuid}) description = 'Link to draft proposal' elif proposal.status_is_submitted(): href = reverse('proposal-detail', kwargs={'uuid': proposal.uuid}) description = 'Link to view proposal' if href and description: context[ 'link_to_edit_or_display'] = f'(<a href="{href}"><i class="fas fa-link"></i> {description}</a>)' context.update( comments_attachments_forms('logged-proposal-comment-add', proposal)) update_files_enabled = not CallEvaluation.objects.filter( call=proposal.call).exists() context['update_files_enabled'] = update_files_enabled if update_files_enabled is False: context[ 'reason_update_files_disabled'] = 'Files cannot be changed because the evaluation has already started' return context
def prepare_context(self, request, *args, **kwargs): context = super().get_context_data(**kwargs) call = Call.objects.get(id=kwargs['pk']) context['call'] = call context.update({ 'active_section': 'calls', 'active_subsection': 'call-list', 'sidebar_template': 'logged/_sidebar-calls.tmpl' }) context['template_variables'] = get_template_variables_for_call(call) CheckboxSelectMultipleSortable.add_missing_related_objects( BudgetCategoryCall, call, 'call', BudgetCategory, 'budget_category') budget_categories_status = [] for budget_category_call in BudgetCategoryCall.objects.filter( call=call).order_by('order'): in_call = budget_category_call.enabled budget_categories_status.append({ 'in_call': in_call, 'name': budget_category_call.budget_category.name }) context['budget_categories_status'] = budget_categories_status context.update( comments_attachments_forms('logged-call-comment-add', call)) if call.evaluation_is_closed(): url = self.request.build_absolute_uri( reverse('lay-summaries-for_website', kwargs={'call': call.id})) if settings.HTTP_AUTH_INCOMING_LINKS: username_password_tag = f' userpwd="{settings.HTTP_AUTH_INCOMING_LINKS}"' else: username_password_tag = '' context[ 'public_lay_summaries_for_website_url'] = f'[remote_content url="{url}"{username_password_tag}]' context['parts'] = call.parts() return context
def get(self, request, *args, **kwargs): if not user_is_in_group_name(request.user, settings.MANAGEMENT_GROUP_NAME): raise PermissionDenied() proposal_evaluation_id = kwargs['pk'] proposal_evaluation = ProposalEvaluation.objects.get( id=proposal_evaluation_id) context = self.prepare_context( request, *args, **{'pk': proposal_evaluation.proposal.id}) add_proposal_evaluation_form(context, proposal_evaluation.proposal) context.update( comments_attachments_forms( 'logged-proposal-evaluation-comment-add', proposal_evaluation)) context.update({ 'active_section': 'evaluation', 'active_subsection': 'evaluation-list', 'sidebar_template': 'evaluation/_sidebar-evaluation.tmpl' }) context['breadcrumb'] = [{ 'name': 'Calls to evaluate', 'url': reverse('logged-evaluation-list') }, { 'name': f'List of proposals ({proposal_evaluation.proposal.call.little_name()})', 'url': reverse('logged-call-evaluation-list-proposals', kwargs={'call_id': proposal_evaluation.proposal.call.id}) }, { 'name': 'Proposal evaluation' }] return render(request, 'logged/proposal-detail-evaluation-detail.tmpl', context)