SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 155305b2 authored by Jorran de Wit's avatar Jorran de Wit
Browse files

Add Commentary factories

parent d15aaa8d
No related branches found
No related tags found
No related merge requests found
COMMENTARY_PUBLISHED = 'published'
COMMENTARY_PREPRINT = 'preprint'
COMMENTARY_TYPES = (
(COMMENTARY_PUBLISHED, 'published paper'),
(COMMENTARY_PREPRINT, 'arXiv preprint'),
)
import factory
from scipost.constants import DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS
from scipost.constants import SCIPOST_DISCIPLINES, SCIPOST_SUBJECT_AREAS
from scipost.factories import ContributorFactory
from scipost.models import Contributor
from journals.constants import SCIPOST_JOURNALS_DOMAINS
from common.helpers import random_arxiv_identifier_with_version_number
from common.helpers import random_arxiv_identifier_with_version_number, random_external_doi
from .models import Commentary, COMMENTARY_TYPES
from .constants import COMMENTARY_TYPES
from .models import Commentary
from faker import Faker
class CommentaryFactory(factory.django.DjangoModelFactory):
class Meta:
model = Commentary
abstract = True
requested_by = factory.SubFactory(ContributorFactory)
vetted_by = factory.SubFactory(ContributorFactory)
type = COMMENTARY_TYPES[0][0]
discipline = DISCIPLINE_PHYSICS
domain = SCIPOST_JOURNALS_DOMAINS[0][0]
subject_area = SCIPOST_SUBJECT_AREAS[0][1][0][0]
pub_title = factory.Faker('bs')
pub_DOI = '10.1103/PhysRevB.92.214427'
type = factory.Iterator(COMMENTARY_TYPES, getter=lambda c: c[0])
discipline = factory.Iterator(SCIPOST_DISCIPLINES, getter=lambda c: c[0])
domain = factory.Iterator(SCIPOST_JOURNALS_DOMAINS, getter=lambda c: c[0])
subject_area = factory.Iterator(SCIPOST_SUBJECT_AREAS[0][1], getter=lambda c: c[0])
pub_title = factory.Faker('text')
pub_DOI = factory.Sequence(lambda n: random_external_doi())
arxiv_identifier = factory.Sequence(lambda n: random_arxiv_identifier_with_version_number())
author_list = factory.Faker('name')
pub_abstract = factory.Faker('text')
arxiv_link = factory.Faker('uri')
pub_abstract = factory.lazy_attribute(lambda x: Faker().paragraph())
@factory.post_generation
def arxiv_link(self, create, extracted, **kwargs):
self.arxiv_link = 'https://arxiv.org/abs/%s' % self.arxiv_identifier
self.arxiv_or_DOI_string = self.arxiv_identifier
@factory.post_generation
def create_urls(self, create, extracted, **kwargs):
self.parse_links_into_urls(commit=create)
class EmptyCommentaryFactory(CommentaryFactory):
pub_DOI = None
arxiv_identifier = None
@factory.post_generation
def add_authors(self, create, extracted, **kwargs):
contributors = list(Contributor.objects.order_by('?')
.exclude(pk=self.requested_by.pk).all()[:4])
for contrib in contributors:
self.author_list += ', %s %s' % (contrib.user.first_name, contrib.user.last_name)
if create:
self.authors.add(contrib)
class VettedCommentaryFactory(CommentaryFactory):
vetted = True
vetted_by = factory.SubFactory(ContributorFactory)
class UnpublishedVettedCommentaryFactory(VettedCommentaryFactory):
......
......@@ -8,17 +8,10 @@ from scipost.behaviors import ArxivCallable, TimeStampedModel
from scipost.models import Contributor
from scipost.constants import SCIPOST_DISCIPLINES, DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS
from .constants import COMMENTARY_TYPES
from .managers import CommentaryManager
COMMENTARY_PUBLISHED = 'published'
COMMENTARY_PREPRINT = 'preprint'
COMMENTARY_TYPES = (
(COMMENTARY_PUBLISHED, 'published paper'),
(COMMENTARY_PREPRINT, 'arXiv preprint'),
)
class Commentary(ArxivCallable, TimeStampedModel):
"""
A Commentary contains all the contents of a SciPost Commentary page for a given publication.
......
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