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_title
A 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.
slug
A slugified version of the short-title to use in URLs (required).
The slugs are automatically constructed from the
short_title
inadmin
.
status
The point in the publication process where the publication currently rests (required).
All publication models include an
status
field, which represents the where in publication process the publication currently exists. Django-CV implements thestatus
field by using anIntegerField
with thechoices
parameter 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_discipline
The discipline to which the publication contributes most directly.
A
ForeignKey
relationship to acv.models.Discipline
object. Can be useful for researchers who work in multiple disciplines to separate their CV into sections for each discipline.other_disciplines
Disciplines other than the primary discipline to which the publication contributes.
A
ManyToManyField
relationship tocv.models.Discipline
objects.
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.DisplayableManager
that returns only articles for whichdisplay==True
.
published
- uses
cv.models.PublishedManager
that returns all articles that have been accepted for publication or published (forthcoming, in press, and published).
inprep
- uses
cv.models.InprepManager
that returns all articles being prepared for publication.
revise
- uses
cv.models.ReviseManager
that 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_html
that converts text entered in Markdown inabstract
field- to html, and
is_published
that indicates whetherstatus
field 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/html
Returns 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/html
Returns context
{{article}}
that represents a singleArticle
instance.- 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-systems
Returns 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
BookEdition
instance with the referencing theBook
instance on which the user calls the method.
dict
: a dictionary containing field/value pairs forBookEdition
fields;edition
must be one of thedict
keys
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/html
Returns context
{{book_objects}}
with four objects on the dot path:
total_books
- Integer of total number of books from all three managers:
books_published_list
QuerySet
of 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/html
Returns context
{{book}}
that represents a singleBook
instance.
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-systems
application/x-bibtex
Returns 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/html
Returns context
{{chapter_objects}}
with four objects on the dot path:
total_chapters
- Integer of total number of chapters from all three managers:
chapters_published_list
QuerySet
of all published chapters (uses the published manager <topics-pubs-published-manager>)chapters_revise_list
QuerySet
of all chapters in the revision process (uses the revise manager <topics-pubs-revise-manager>)chapters_inprep_list
QuerySet
of 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/html
Returns context
{{chapter}}
that represents a singleChapter
instance.- 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-systems
application/x-bibtex
Returns 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/)