def get_context_data(self, **kwargs): """Update context data to add publication.""" context = super(DataDepotPublishedView, self).get_context_data(**kwargs) logger.info('Get context Data') pub = Publication(project_id=kwargs['project_id'].strip('/')) logger.debug('pub: %s', pub.to_dict()) context['citation_title'] = pub.project.value.title context['citation_date'] = pub.created context['doi'] = pub.project.doi context['keywords'] = pub.project.value.keywords.split(',') context['authors'] = [{ 'full_name': '{last_name}, {first_name}'.format(last_name=user['last_name'], first_name=user['first_name']), 'institution': getattr(getattr(user, 'profile'), 'institution', '') } for user in pub.users] context['publication'] = pub if self.request.user.is_authenticated: context['angular_init'] = json.dumps({ 'authenticated': True, }) else: context['angular_init'] = json.dumps({ 'authenticated': False, }) return context
def get(self, request, project_id): pub = Publication(project_id=project_id) if pub is not None and hasattr(pub, 'project'): return JsonResponse(pub.to_dict()) else: return JsonResponse({'status': 404, 'message': 'Not found'}, status=404)
def save_publication(self, project_id): from designsafe.apps.api.agave.filemanager.public_search_index import Publication from designsafe.apps.api.projects.managers import publication as PublicationManager try: pub = Publication(project_id=project_id) publication = PublicationManager.reserve_publication(pub.to_dict()) pub.update(**publication) except Exception as exc: logger.error('Proj Id: %s. %s', project_id, exc, exc_info=True) raise self.retry(exc=exc)