diff --git a/journals/views.py b/journals/views.py index ff585961693be45bbf3f648e8ae21be434f68006..5169628d3b5b865e26adf5528aa052ec71a70c80 100644 --- a/journals/views.py +++ b/journals/views.py @@ -786,12 +786,11 @@ def allocate_orgpubfractions(request, doi_label): request.user.has_perm('scipost.can_publish_accepted_submission')): raise Http404 - if not publication.pubfractions.all().exists(): - # Create new OrgPubFraction objects from existing data, spreading weight evenly - for org in publication.get_organizations(): - pubfrac = OrgPubFraction(publication=publication, - organization=org, fraction=0) - pubfrac.save() + # Create OrgPubFraction objects from existing organization links + for org in publication.get_organizations(): + pubfrac, created = OrgPubFraction.objects.get_or_create( + publication=publication, organization=org) + formset = OrgPubFractionsFormSet(request.POST or None, queryset=publication.pubfractions.all()) if formset.is_valid():