diff --git a/SciPost_v1/settings.py b/SciPost_v1/settings.py index 93080c61d9e7012a312a59d231d697b70c22c400..9c9c14867438a7d096c4c664dcf8975f8434dd0d 100644 --- a/SciPost_v1/settings.py +++ b/SciPost_v1/settings.py @@ -107,7 +107,11 @@ SHELL_PLUS_POST_IMPORTS = ( ('theses.factories', ('ThesisLinkFactory')), ('comments.factories', ('CommentFactory')), ('submissions.factories', ('SubmissionFactory', 'EICassignedSubmissionFactory')), - ('commentaries.factories', ('EmptyCommentaryFactory', 'VettedCommentaryFactory', 'UnvettedCommentaryFactory')), + ('commentaries.factories', + ('EmptyCommentaryFactory', + 'VettedCommentaryFactory', + 'UnvettedCommentaryFactory', + 'UnpublishedVettedCommentaryFactory',)), ) MATHJAX_ENABLED = True diff --git a/commentaries/factories.py b/commentaries/factories.py index 82319e0cd3c3aa39d06b7c1c2338b4d45b6ee67c..31f1354fa2c7c811daccdbfa7bd9a27cdf55850f 100644 --- a/commentaries/factories.py +++ b/commentaries/factories.py @@ -1,11 +1,11 @@ import factory -from .models import Commentary, COMMENTARY_TYPES - from scipost.constants import DISCIPLINE_PHYSICS, SCIPOST_SUBJECT_AREAS from scipost.factories import ContributorFactory from journals.models import SCIPOST_JOURNALS_DOMAINS +from common.helpers import random_arxiv_identifier_with_version_number +from .models import Commentary, COMMENTARY_TYPES class CommentaryFactory(factory.django.DjangoModelFactory): class Meta: @@ -18,12 +18,16 @@ class CommentaryFactory(factory.django.DjangoModelFactory): discipline = DISCIPLINE_PHYSICS domain = SCIPOST_JOURNALS_DOMAINS[0][0] subject_area = SCIPOST_SUBJECT_AREAS[0][1][0][0] - pub_title = factory.Sequence(lambda n: "Commentary %d" % n) + pub_title = factory.Faker('bs') pub_DOI = '10.1103/PhysRevB.92.214427' - arxiv_identifier = '1610.06911v1' + arxiv_identifier = factory.Sequence(lambda n: random_arxiv_identifier_with_version_number()) author_list = factory.Faker('name') pub_abstract = factory.Faker('text') + @factory.post_generation + def create_urls(self, create, extracted, **kwargs): + self.parse_links_into_urls(commit=create) + class EmptyCommentaryFactory(CommentaryFactory): pub_DOI = None @@ -34,5 +38,9 @@ class VettedCommentaryFactory(CommentaryFactory): vetted = True +class UnpublishedVettedCommentaryFactory(VettedCommentaryFactory): + pub_DOI = '' + + class UnvettedCommentaryFactory(CommentaryFactory): vetted = False diff --git a/common/helpers/__init__.py b/common/helpers/__init__.py index d91d1905c12f9529071e5406d04f90cd16891b0f..d1875920b99074217a6ce3d80fa10128bd4e568a 100644 --- a/common/helpers/__init__.py +++ b/common/helpers/__init__.py @@ -1,3 +1,6 @@ +import random +import string + def model_form_data(model, form_class, form_kwargs={}): ''' Returns a dict that can be used to instantiate a form object. @@ -25,6 +28,14 @@ def model_form_data(model, form_class, form_kwargs={}): form_fields = list(form_class(**form_kwargs).fields.keys()) return filter_keys(model_data, form_fields) +def random_arxiv_identifier_with_version_number(): + return random_arxiv_identifier_without_version_number() + "v0" + +def random_arxiv_identifier_without_version_number(): + return random_digits(4) + "." + random_digits(5) + +def random_digits(n): + return "".join(random.choice(string.digits) for _ in range(n)) def filter_keys(dictionary, keys_to_keep): # Field is empty if not on model. diff --git a/submissions/factories.py b/submissions/factories.py index ade2eba39812e9f88f26b2ebcf660bae3c6d0546..1abdf6974e4c7caa28ae6ebcb49a9eb1096df83a 100644 --- a/submissions/factories.py +++ b/submissions/factories.py @@ -1,8 +1,7 @@ import factory -import random -import string from scipost.factories import ContributorFactory +from common.helpers import random_arxiv_identifier_with_version_number from .models import Submission @@ -18,7 +17,6 @@ class SubmissionFactory(factory.django.DjangoModelFactory): abstract = factory.Faker('text') arxiv_link = factory.Faker('uri') arxiv_identifier_w_vn_nr = factory.Sequence(lambda n: random_arxiv_identifier_with_version_number()) - arxiv_identifier_wo_vn_nr = factory.LazyAttribute(lambda obj: obj.arxiv_identifier_w_vn_nr[0:-2]) domain = 'E' @@ -26,13 +24,3 @@ class EICassignedSubmissionFactory(SubmissionFactory): status = 'EICassigned' editor_in_charge = factory.SubFactory(ContributorFactory) open_for_commenting = True - - -def random_arxiv_identifier_with_version_number(): - return random_arxiv_identifier_without_version_number() + "v0" - -def random_arxiv_identifier_without_version_number(): - return random_digits(4) + "." + random_digits(5) - -def random_digits(n): - return "".join(random.choice(string.digits) for _ in range(n))