def download_article(request, article_index): article = Article.objects.get(id=article_index) ArticleDownload.add_download(article) file_manager = ArticleFilesManager(article_index) filepath = file_manager.get_pdf_file_path() wrapper = FileWrapper(file(filepath)) response = HttpResponse(wrapper, content_type='text/plain') response['Content-Disposition'] = 'attachment; filename="%s"' % (str(article.id) + '.pdf') response['Content-Length'] = os.path.getsize(filepath) return response
def article_details(request, article_index): template = loader.get_template('search/article_details.html') article = Article.objects.get(id=article_index) try: article_import = ArticleImport.objects.get(article_id=article_index) article_template = article_import.template files_manager = ArticleFilesManager(article_import.id) abstract_path = files_manager.get_abstract_file_path() af = file(abstract_path, 'r+') abstract = af.read() if af is not None else None af.close() except Exception as e: abstract = None article_import = None article_template = None authors = article.authors.all() references = article.article.all() referenced_times = article.reference.all().count() article_themes = ArticleTheme.objects.filter(article=article) themes_map = {} for article_theme in article_themes: if article_theme.extraction_type not in themes_map: themes_map[article_theme.extraction_type] = [] themes_map[article_theme.extraction_type].append(article_theme.theme) iaas = InstitutionAuthorArticle.objects.filter(article=article) institutions = [iaa.institution for iaa in iaas] as_sugest = ArticleSugestedArticle.objects.filter(article=article) sugested_articles= [a_sugest.sugested_article for a_sugest in as_sugest] sugested_themes = ArticleSugestedTheme.objects.filter(article=article) number_downloads = ArticleDownload.get_download_count(article) number_likes = ArticleLike.get_likes_count(article) context = RequestContext(request, {'article': article, 'authors': authors, 'article_template': article_template, 'references': references, 'institutions': institutions, 'abstract': abstract, 'themes_map': themes_map.iteritems(), 'referenced_times': referenced_times, 'article_import': article_import, 'sugested_articles': sugested_articles, 'sugested_themes': sugested_themes, 'number_downloads': number_downloads, 'number_likes': number_likes, 'maps_api': settings.MAPS_API }) return HttpResponse(template.render(context))