Publications¶
Publications are the central component of Django-CV since publications are the key element of CVs. Django-CV includes four types of publications: books, articles, chapters, and reports.
Common Features¶
Publications, regardless of type, all have some common traits such as titles and lists of
authors. Django-CV defines a number of common features across the four different types of
publications. Internally, Django-CV does this by defining a series of abstract classes.
The different publication models inherit from the
VitaePublicationModel abstract model.
Common Fields¶
The following fields are common across the four types of publications:
title- The title of the publication (required).
short_titleA shortened title of the publication with a maximum length of 80 characters (required).
This can be the “running head” of a publication. Django-CV uses the slugified version of the short title to construct URLs for the item.
slugA slugified version of the short-title to use in URLs (required).
The slugs are automatically constructed from the
short_titleinadmin.
statusThe point in the publication process where the publication currently rests (required).
All publication models include an
statusfield, which represents the where in publication process the publication currently exists. Django-CV implements thestatusfield by using anIntegerFieldwith thechoicesparameter defined incv.constants.PUBLICATION_STATUS:Integer Status 0 In preparation 1 Working paper 20 Submitted 30 Revision for resubmission invited 35 Resubmitted 40 Conditionally accepted 50 Forthcoming 55 In press 60 Published 99 “Resting” pub_date- The date that the publication was published in final form.
primary_disciplineThe discipline to which the publication contributes most directly.
A
ForeignKeyrelationship to acv.models.Disciplineobject. Can be useful for researchers who work in multiple disciplines to separate their CV into sections for each discipline.other_disciplinesDisciplines other than the primary discipline to which the publication contributes.
A
ManyToManyFieldrelationship tocv.models.Disciplineobjects.
Ordering¶
The publication models order model instances by status in ascending order then by
pub_date in descending order. This places the publications with the highest
probability of changing at the top of sorted lists.
Note
The publication models do not use pub_date field to identify published
articles and the built-in templates do not print the pub_date field.
Therefore, users can use the pub_date field to order unpublished manuscripts
in a convenient order.
Common Managers¶
For all types of publications, users may access instances of publication models using four
custom managers (in addition to the default manager using objects) that will
return all objects:
displayable: default- uses
cv.models.DisplayableManagerthat returns only articles for whichdisplay==True.
published- uses
cv.models.PublishedManagerthat returns all articles that have been accepted for publication or published (forthcoming, in press, and published).
inprep- uses
cv.models.InprepManagerthat returns all articles being prepared for publication.
revise- uses
cv.models.ReviseManagerthat returns all articles that are in the process of submission or revision (submitted, under revision for resubmission, resubmitted, or conditionally accepted).
The custom managers the include multiple statuses retain the default ordering of the
model (that is, they are ordered by status, then pub_date, then
submission_date).
Authorship Sets¶
Publication types also share the common trait of having authors. More precisely, publications have _authorships_ since a list of authors contains information, such as the order of authorship.
For all publication type models, Django-CV includes an authorship
attribute that returns a QuerySet of
authorships, e.g.:
>>> from cv.models import Article
>>> article = Article.objects.all().first()
>>> article.authorship.all()
<QuerySet [<ArticleAuthorship: Kahneman, Daniel>,
<ArticleAuthorship: Tversky, Amos]>]
Internally, the authorship attributes are implemented as a
django.db.models.ManyToManyField`s that relate an instance of the
publication type (e.g., :class:`Article, Book, etc.) to
Collaborator through a third model.
Authorship models for all publication types have three common fields:
display_order- Integer that classifies the position of the author in the list of authors (required)
print_middle- Boolean that indicates whether the author’s middle initials should be printed in list of authors (default=True)
student_colleague- Choice field with possible values defined by CV_STUDENT_LEVELS_CHOICES setting; allows display of student collaborations
Types of Publications¶
Articles¶
| Model field reference | cv.models.Article |
| Authorship set | cv.models.ArticleAuthorship |
The Article model contains two non-editable fields managed internally that can be
accessed for article instances:
abstract_htmlthat converts text entered in Markdown inabstractfield- to html, and
is_publishedthat indicates whetherstatusfield is one of- “Forthcoming,” “In Press,” or “Published”.
The functions get_previous_published() and get_next_published() will get the
next and previous published articles based on the pub_date field.
Article Views¶
- Article List :
cv.views.ArticleListView Context object {{article_objects}}Template 'cv/lists/article_list.html'URL r'^articles/$'URL name 'article_object_list'MIME type text/htmlReturns context
{{article_objects}}with four objects on the dot path:total_articles- Integer of total number of article objects from all three status-based managers:
article_published_list- queryset of all published articles (uses the published manager <topics-pubs-published-manager>)
article_revise_list- queryset of all articles in the revision process (uses the revise manager <topics-pubs-revise-manager>)
article_inprep_list- queryset of all articles in preparation for submission (uses the inprep manager <topics-pubs-published-manager>)
- Article Detail:
cv.views.ArticleDetailView Context object {{article}}Template 'cv/details/article_detail.html'URL 'articles/<slug:slug>/URL name 'article_object_detail'MIME type text/htmlReturns context
{{article}}that represents a singleArticleinstance.- Article Citation:
cv.views.article_citation_view() Context object {{article}}Templates 'cv/citations/article.ris''cv/citations/article.bib'URL 'articles/<slug:slug>/citation/<str:format>/'URL name 'article_citation'MIME type application/x-research-info-systemsReturns view to allow citation to be downloaded to citation management software.
The
(?P<format>[w]+)named parameter should be one of:'ris'- will create downloadable citation using Reference Manager format specification (see http://endnote.com/sites/rm/files/m/direct_export_ris.pdf).
'bib'- will create downloadable citation using the BibTeX format specification (see http://www.bibtex.org/Format/)
Books¶
The Book class stores instances of books. The summary field
takes Markdown input and saves the converted HTML to the non-editable
summary_html field.
The Book model can store information about different editions of
book instances.
| Model field reference | cv.models.Book |
| Authorship set | cv.models.BookAuthorship |
Custom Methods¶
The Book class has two custom methods related to
Book Editions:
add_edition(dict)¶Creates a new
BookEditioninstance with the referencing theBookinstance on which the user calls the method.
dict: a dictionary containing field/value pairs forBookEditionfields;editionmust be one of thedictkeys
Book Views¶
Book List : cv.views.BookListView
Context object {{book_objects}}Template 'cv/lists/book_list.html'URL 'books/'URL name 'book_object_list'MIME type text/htmlReturns context
{{book_objects}}with four objects on the dot path:
total_books- Integer of total number of books from all three managers:
books_published_listQuerySetof all published books (uses the published manager <topics-pubs-published-manager>)books_revise_list- queryset of all books in the revision process (uses the revise manager <topics-pubs-revise-manager>)
books_inprep_list- queryset of all books in preparation for submission (uses the inprep manager <topics-pubs-published-manager>)
Book Detail: cv.views.BookDetailView
Context object {{book}}Template 'cv/details/book_detail.html'URL 'books/<slug:slug>/'URL name 'book_object_detail'MIME type text/htmlReturns context
{{book}}that represents a singleBookinstance.
Book Citation: cv.views.book_citation_view()
Context object {{book}}Templates 'cv/citations/book.ris''cv/citations/book.bib'URL 'books/<slug:slug>/citation/<str:format>/'URL name 'book_citation'MIME types application/x-research-info-systemsapplication/x-bibtexReturns view to allow citation to be downloaded to citation management software.
The
<str:format>named parameter should be one of:
'ris'- will create downloadable citation using Reference Manager format specification (see http://endnote.com/sites/rm/files/m/direct_export_ris.pdf).
'bib'- will create downloadable citation using the BibTeX format specification (see http://www.bibtex.org/Format/)
Book Editions¶
Django-CV allows users to link multiple editions of a book with the
BookEdition class. This is done through a ForeignKey relationship to
the book. The Book model includes the
get_editions() method to return all editions associated with the
book in reverse chronological order (i.e., newest first).
If an edition has been related to a book, the default templates will use the publication information (publisher, place of publication, ISBN) of the edition instance, not the publication information defined for the book instance.
Chapters¶
The Chapter class stores instances of chapters.
Like Articles, the abstract field takes Markdown input and saves
the converted HTML to the (non-editable) summary_html field.
In addition to the authorship attribute that saves authorship
information, the Chapter class also has an editorship
attribute that contains information about editors of the volume in which the
chapter appears. Like the authorship attribute, the
editorship returns a foreign key
RelatedManager (read more about
related managers).
| Model field reference | cv.models.Chapter |
| Authorship set | cv.models.ChapterAuthorship |
Chapter List : cv.views.ChapterListView
Context object {{chapter_objects}}Template 'cv/lists/chapter_list.html'URL 'chapters/'URL name 'chapter_object_list'MIME type text/htmlReturns context
{{chapter_objects}}with four objects on the dot path:
total_chapters- Integer of total number of chapters from all three managers:
chapters_published_listQuerySetof all published chapters (uses the published manager <topics-pubs-published-manager>)chapters_revise_listQuerySetof all chapters in the revision process (uses the revise manager <topics-pubs-revise-manager>)chapters_inprep_listQuerySetof all chapters in preparation for submission (uses the inprep manager <topics-pubs-published-manager>)
- Chapter Detail:
cv.views.ChapterDetailView Context object {{chapter}}Template 'cv/details/chapter_detail.html'URL 'chapters/<slug:slug>/'URL name 'chapter_object_detail'MIME type text/htmlReturns context
{{chapter}}that represents a singleChapterinstance.- Chapter Citation:
cv.views.book_citation_view() Context object {{chapter}}Templates 'cv/citations/chapter.ris''cv/citations/chapter.bib'URL 'chapter/<slug:slug>/citation/<str:format>/'URL name 'chapter_citation'MIME types application/x-research-info-systemsapplication/x-bibtexReturns view to allow citation to be downloaded to citation management software.
The
<str:format>named parameter should be one of:'ris'- will create downloadable citation using Reference Manager format specification (see http://endnote.com/sites/rm/files/m/direct_export_ris.pdf).
'bib'- will create downloadable citation using the BibTeX format specification (see http://www.bibtex.org/Format/)