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 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.factories import ContributorFactory
from scipost.models import Contributor
from journals.constants import SCIPOST_JOURNALS_DOMAINS 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 CommentaryFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = Commentary model = Commentary
abstract = True
requested_by = factory.SubFactory(ContributorFactory) requested_by = factory.SubFactory(ContributorFactory)
vetted_by = factory.SubFactory(ContributorFactory) type = factory.Iterator(COMMENTARY_TYPES, getter=lambda c: c[0])
type = COMMENTARY_TYPES[0][0] discipline = factory.Iterator(SCIPOST_DISCIPLINES, getter=lambda c: c[0])
discipline = DISCIPLINE_PHYSICS domain = factory.Iterator(SCIPOST_JOURNALS_DOMAINS, getter=lambda c: c[0])
domain = SCIPOST_JOURNALS_DOMAINS[0][0] subject_area = factory.Iterator(SCIPOST_SUBJECT_AREAS[0][1], getter=lambda c: c[0])
subject_area = SCIPOST_SUBJECT_AREAS[0][1][0][0] pub_title = factory.Faker('text')
pub_title = factory.Faker('bs') pub_DOI = factory.Sequence(lambda n: random_external_doi())
pub_DOI = '10.1103/PhysRevB.92.214427'
arxiv_identifier = factory.Sequence(lambda n: random_arxiv_identifier_with_version_number()) arxiv_identifier = factory.Sequence(lambda n: random_arxiv_identifier_with_version_number())
author_list = factory.Faker('name') arxiv_link = factory.Faker('uri')
pub_abstract = factory.Faker('text') 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 @factory.post_generation
def create_urls(self, create, extracted, **kwargs): def create_urls(self, create, extracted, **kwargs):
self.parse_links_into_urls(commit=create) self.parse_links_into_urls(commit=create)
@factory.post_generation
class EmptyCommentaryFactory(CommentaryFactory): def add_authors(self, create, extracted, **kwargs):
pub_DOI = None contributors = list(Contributor.objects.order_by('?')
arxiv_identifier = None .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): class VettedCommentaryFactory(CommentaryFactory):
vetted = True vetted = True
vetted_by = factory.SubFactory(ContributorFactory)
class UnpublishedVettedCommentaryFactory(VettedCommentaryFactory): class UnpublishedVettedCommentaryFactory(VettedCommentaryFactory):
......
...@@ -8,17 +8,10 @@ from scipost.behaviors import ArxivCallable, TimeStampedModel ...@@ -8,17 +8,10 @@ from scipost.behaviors import ArxivCallable, TimeStampedModel
from scipost.models import Contributor from scipost.models import Contributor
from scipost.constants import SCIPOST_DISCIPLINES, DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS from scipost.constants import SCIPOST_DISCIPLINES, DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS
from .constants import COMMENTARY_TYPES
from .managers import CommentaryManager from .managers import CommentaryManager
COMMENTARY_PUBLISHED = 'published'
COMMENTARY_PREPRINT = 'preprint'
COMMENTARY_TYPES = (
(COMMENTARY_PUBLISHED, 'published paper'),
(COMMENTARY_PREPRINT, 'arXiv preprint'),
)
class Commentary(ArxivCallable, TimeStampedModel): class Commentary(ArxivCallable, TimeStampedModel):
""" """
A Commentary contains all the contents of a SciPost Commentary page for a given publication. 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