SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 185000c8 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Make Publication citation a computed field

parent da965cc8
No related branches found
No related tags found
No related merge requests found
# Generated by Django 3.2.12 on 2022-02-20 20:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('journals', '0114_journal_required_article_elements'),
]
operations = [
migrations.AddField(
model_name='publication',
name='cf_citation',
field=models.CharField(blank=True, max_length=1024),
),
]
...@@ -167,6 +167,7 @@ class Publication(models.Model): ...@@ -167,6 +167,7 @@ class Publication(models.Model):
) # Needs `auto_now` as its not explicity updated anywhere? ) # Needs `auto_now` as its not explicity updated anywhere?
# Calculated fields # Calculated fields
cf_citation = models.CharField(max_length=1024, blank=True)
cf_author_affiliation_indices_list = ArrayField( cf_author_affiliation_indices_list = ArrayField(
ArrayField( ArrayField(
models.PositiveSmallIntegerField(blank=True, null=True), default=list models.PositiveSmallIntegerField(blank=True, null=True), default=list
...@@ -361,30 +362,38 @@ class Publication(models.Model): ...@@ -361,30 +362,38 @@ class Publication(models.Model):
@property @property
def citation(self): def citation(self):
if self.cf_citation:
return self.cf_citation
citation = ""
"""Return Publication name in the preferred citation format.""" """Return Publication name in the preferred citation format."""
if self.in_issue and self.in_issue.in_volume: if self.in_issue and self.in_issue.in_volume:
return "{journal} {volume}, {paper_nr} ({year})".format( citation = "{journal} {volume}, {paper_nr} ({year})".format(
journal=self.in_issue.in_volume.in_journal.name_abbrev, journal=self.in_issue.in_volume.in_journal.name_abbrev,
volume=self.in_issue.in_volume.number, volume=self.in_issue.in_volume.number,
paper_nr=self.get_paper_nr(), paper_nr=self.get_paper_nr(),
year=self.publication_date.strftime("%Y"), year=self.publication_date.strftime("%Y"),
) )
elif self.in_issue and self.in_issue.in_journal: elif self.in_issue and self.in_issue.in_journal:
return "{journal} {issue}, {paper_nr} ({year})".format( citation = "{journal} {issue}, {paper_nr} ({year})".format(
journal=self.in_issue.in_journal.name_abbrev, journal=self.in_issue.in_journal.name_abbrev,
issue=self.in_issue.number, issue=self.in_issue.number,
paper_nr=self.get_paper_nr(), paper_nr=self.get_paper_nr(),
year=self.publication_date.strftime("%Y"), year=self.publication_date.strftime("%Y"),
) )
elif self.in_journal: elif self.in_journal:
return "{journal} {paper_nr} ({year})".format( citation = "{journal} {paper_nr} ({year})".format(
journal=self.in_journal.name_abbrev, journal=self.in_journal.name_abbrev,
paper_nr=self.paper_nr, paper_nr=self.paper_nr,
year=self.publication_date.strftime("%Y"), year=self.publication_date.strftime("%Y"),
) )
return "{paper_nr} ({year})".format( else:
paper_nr=self.paper_nr, year=self.publication_date.strftime("%Y") citation = "{paper_nr} ({year})".format(
) paper_nr=self.paper_nr, year=self.publication_date.strftime("%Y")
)
self.cf_citation = citation
self.save()
return citation
def get_cc_license_URI(self): def get_cc_license_URI(self):
for (key, val) in CC_LICENSES_URI: for (key, val) in CC_LICENSES_URI:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment