diff --git a/submissions/forms.py b/submissions/forms.py
index 0a8cb0c3ffb5b8bd9cad62c9a42dd4ca37a3fc0e..43e02014b2217cacd32a5ff3c408a788c0dcd618 100644
--- a/submissions/forms.py
+++ b/submissions/forms.py
@@ -76,6 +76,8 @@ class SubmissionForm(forms.ModelForm):
             'rows': 3})
 
 
+
+
 ######################
 # Editorial workflow #
 ######################
diff --git a/submissions/models.py b/submissions/models.py
index 2ea5a6c80cecdb9cdbc796f30b55e1ec87b17d8a..7188213097645f8f1d32d308cf567a1dfa17e2de 100644
--- a/submissions/models.py
+++ b/submissions/models.py
@@ -67,33 +67,33 @@ submission_type_dict = dict(SUBMISSION_TYPE)
 
 class Submission(models.Model):
     # Main submission fields
-    is_current = models.BooleanField(default=True)
-    is_resubmission = models.BooleanField(default=False)
-    submitted_by = models.ForeignKey(Contributor, on_delete=models.CASCADE)
-    editor_in_charge = models.ForeignKey(Contributor, related_name='EIC', blank=True, null=True,
-                                         on_delete=models.CASCADE)
-    submitted_to_journal = models.CharField(max_length=30, choices=SCIPOST_JOURNALS_SUBMIT,
-                                            verbose_name="Journal to be submitted to")
-    submission_type = models.CharField(max_length=10, choices=SUBMISSION_TYPE,
-                                       blank=True, null=True, default=None)
+    author_comments = models.TextField(blank=True, null=True)
+    author_list = models.CharField(max_length=1000, verbose_name="author list")
     discipline = models.CharField(max_length=20, choices=SCIPOST_DISCIPLINES, default='physics')
     domain = models.CharField(max_length=3, choices=SCIPOST_JOURNALS_DOMAINS)
-    subject_area = models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS,
-                                    verbose_name='Primary subject area', default='Phys:QP')
-    secondary_areas = ChoiceArrayField(
-        models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS),
-        blank=True, null=True)
-    status = models.CharField(max_length=30, choices=SUBMISSION_STATUS)  # set by Editors
-    author_comments = models.TextField(blank=True, null=True)
+    editor_in_charge = models.ForeignKey(Contributor, related_name='EIC', blank=True, null=True,
+                                         on_delete=models.CASCADE)
+    is_current = models.BooleanField(default=True)
+    is_resubmission = models.BooleanField(default=False)
     list_of_changes = models.TextField(blank=True, null=True)
-    remarks_for_editors = models.TextField(blank=True, null=True)
-    referees_suggested = models.TextField(blank=True, null=True)
-    referees_flagged = models.TextField(blank=True, null=True)
+    open_for_commenting = models.BooleanField(default=False)
     open_for_reporting = models.BooleanField(default=False)
+    referees_flagged = models.TextField(blank=True, null=True)
+    referees_suggested = models.TextField(blank=True, null=True)
+    remarks_for_editors = models.TextField(blank=True, null=True)
     reporting_deadline = models.DateTimeField(default=timezone.now)
-    open_for_commenting = models.BooleanField(default=False)
+    secondary_areas = ChoiceArrayField(
+        models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS),
+        blank=True, null=True)
+    status = models.CharField(max_length=30, choices=SUBMISSION_STATUS, default='unassigned')  # set by Editors
+    subject_area = models.CharField(max_length=10, choices=SCIPOST_SUBJECT_AREAS,
+                                    verbose_name='Primary subject area', default='Phys:QP')
+    submission_type = models.CharField(max_length=10, choices=SUBMISSION_TYPE,
+                                       blank=True, null=True, default=None)
+    submitted_by = models.ForeignKey(Contributor, on_delete=models.CASCADE)
+    submitted_to_journal = models.CharField(max_length=30, choices=SCIPOST_JOURNALS_SUBMIT,
+                                            verbose_name="Journal to be submitted to")
     title = models.CharField(max_length=300)
-    author_list = models.CharField(max_length=1000, verbose_name="author list")
 
     # Authors which have been mapped to contributors:
     authors = models.ManyToManyField(Contributor, blank=True, related_name='authors_sub')
@@ -111,7 +111,7 @@ class Submission(models.Model):
 
     # Metadata
     metadata = JSONField(default={}, blank=True, null=True)
-    submission_date = models.DateField(verbose_name='submission date')
+    submission_date = models.DateField(verbose_name='submission date', default=timezone.now)
     latest_activity = models.DateTimeField(default=timezone.now)
 
     class Meta:
diff --git a/submissions/services.py b/submissions/services.py
index 535d3cf8c98e5cea422e4e17019120266b6be4c9..a634d62ef2e7bbc7f1d233cece2575096a747300 100644
--- a/submissions/services.py
+++ b/submissions/services.py
@@ -15,6 +15,7 @@ class ArxivCaller():
     isvalid = None
     errorcode = ''
     resubmission = False
+    previous_submissions = []
     arxiv_journal_ref = ''
     arxiv_doi = ''
     metadata = {}
@@ -54,7 +55,8 @@ class ArxivCaller():
         previous_submissions = self.different_versions(self.identifier_without_vn_nr)
         if previous_submissions:
             if previous_submissions[0].status == 'revision_requested':
-                resubmission = True
+                self.resubmission = True
+                self.previous_submissions = previous_submissions
             else:
                 self.errorcode = 'previous_submission_undergoing_refereeing'
                 self.isvalid = False
diff --git a/submissions/templates/submissions/new_submission.html b/submissions/templates/submissions/new_submission.html
new file mode 100644
index 0000000000000000000000000000000000000000..71fb9dcc12c2ea218e0749b1d1b2c3e578da911b
--- /dev/null
+++ b/submissions/templates/submissions/new_submission.html
@@ -0,0 +1,85 @@
+{% extends 'scipost/base.html' %}
+
+{% block pagetitle %}: submit manuscript{% endblock pagetitle %}
+
+{% block bodysup %}
+
+
+<script>
+$(document).ready(function(){
+  $("#id_submission_type").closest('tr').hide()
+
+  $('select#id_submitted_to_journal').on('change', function (){
+  var selection = $(this).val();
+  switch(selection){
+    case "SciPost Physics":
+      $("#id_submission_type").closest('tr').show()
+      break;
+    default:
+      $("#id_submission_type").closest('tr').hide()
+  }
+});
+
+  var isresub = $("#id_is_resubmission").val();
+  switch(isresub){
+    case "True":
+      $("#id_author_comments").closest('tr').show()
+      $("#id_list_of_changes").closest('tr').show()
+      break;
+    default:
+      $("#id_author_comments").closest('tr').hide()
+      $("#id_list_of_changes").closest('tr').hide()
+  }
+
+});
+</script>
+
+<section>
+  <div class="flex-greybox">
+    <h1>Submit a manuscript to SciPost</h1>
+  </div>
+
+  <p>Before submitting, make sure you agree with the
+    <a href="{% url 'journals:journals_terms_and_conditions' %}">
+      SciPost Journals Terms and Conditions</a>.</p>
+  <p>You should also make sure you understand the
+    <a href="{% url 'submissions:sub_and_ref_procedure' %}#pwr">
+      refereeing procedure</a> and its open aspect.</p>
+  <p>In particular, make sure you are familiar with the
+    <a href="{% url 'journals:journals_terms_and_conditions' %}#license_and_copyright_agreement">
+      license and copyright agreement</a>
+    and the <a href="{% url 'journals:journals_terms_and_conditions' %}#author_obligations">
+      author obligations</a>.</p>
+  <p>Please prepare your manuscript according to the
+    <a href="{% url 'submissions:author_guidelines' %}">author guidelines</a>.</p>
+
+
+  {% if perms.scipost.can_submit_manuscript %}
+
+  {% if form.arxiv_link.value %}
+  <form id="full_submission_form" action="{% url 'submissions:submit_manuscript' %}" method="post">
+    {% csrf_token %}
+    <table>
+      <ul>
+	{{ form.as_table }}
+      </ul>
+    </table>
+    <p>By clicking on Submit, you state that you have read and agree with
+      the <a href="{% url 'journals:journals_terms_and_conditions' %}">
+	SciPost Journals Terms and Conditions</a>, the
+      <a href="{% url 'journals:journals_terms_and_conditions' %}#license_and_copyright_agreement">
+	license and copyright agreement</a>
+      and the <a href="{% url 'journals:journals_terms_and_conditions' %}#author_obligations">
+	author obligations</a>.</p>
+    <input type="submit" value="Submit"/>
+  </form>
+  {% endif %}
+
+  {% else %}
+  <h3>You are currently not allowed to submit a manuscript.</h3>
+  {% endif %}
+
+</section>
+
+
+{% endblock bodysup %}
diff --git a/submissions/templates/submissions/prefill_using_identifier.html b/submissions/templates/submissions/prefill_using_identifier.html
new file mode 100644
index 0000000000000000000000000000000000000000..41f3dd90c645969b1b5752d8c4166a787f00c905
--- /dev/null
+++ b/submissions/templates/submissions/prefill_using_identifier.html
@@ -0,0 +1,86 @@
+{% extends 'scipost/base.html' %}
+
+{% block pagetitle %}: submit manuscript{% endblock pagetitle %}
+
+{% block bodysup %}
+
+
+<script>
+$(document).ready(function(){
+  $("#id_submission_type").closest('tr').hide()
+
+  $('select#id_submitted_to_journal').on('change', function (){
+  var selection = $(this).val();
+  switch(selection){
+    case "SciPost Physics":
+      $("#id_submission_type").closest('tr').show()
+      break;
+    default:
+      $("#id_submission_type").closest('tr').hide()
+  }
+});
+
+  var isresub = $("#id_is_resubmission").val();
+  switch(isresub){
+    case "True":
+      $("#id_author_comments").closest('tr').show()
+      $("#id_list_of_changes").closest('tr').show()
+      break;
+    default:
+      $("#id_author_comments").closest('tr').hide()
+      $("#id_list_of_changes").closest('tr').hide()
+  }
+
+});
+</script>
+
+<section>
+  <div class="flex-greybox">
+    <h1>Submit a manuscript to SciPost</h1>
+  </div>
+
+  <p>Before submitting, make sure you agree with the
+    <a href="{% url 'journals:journals_terms_and_conditions' %}">
+      SciPost Journals Terms and Conditions</a>.</p>
+  <p>You should also make sure you understand the
+    <a href="{% url 'submissions:sub_and_ref_procedure' %}#pwr">
+      refereeing procedure</a> and its open aspect.</p>
+  <p>In particular, make sure you are familiar with the
+    <a href="{% url 'journals:journals_terms_and_conditions' %}#license_and_copyright_agreement">
+      license and copyright agreement</a>
+    and the <a href="{% url 'journals:journals_terms_and_conditions' %}#author_obligations">
+      author obligations</a>.</p>
+  <p>Please prepare your manuscript according to the
+    <a href="{% url 'submissions:author_guidelines' %}">author guidelines</a>.</p>
+
+
+  {% if perms.scipost.can_submit_manuscript %}
+
+  <div class="flex-greybox">
+    <h3><em>Please provide the arXiv identifier for your Submission:</em></h3>
+    <p>
+      <em>(give the identifier without prefix but with version number, as per the placeholder)</em>
+    </p>
+    <form action="{% url 'submissions:prefill_using_identifier' %}" method="post">
+      {% csrf_token %}
+      {{ form.as_p }}
+      <input type="submit" value="Query arXiv"/>
+    </form>
+  </div>
+  <br/>
+  <!-- {% if errormessage %}
+  <h3 style="color: red;">Error: {{ errormessage }}</h3>
+  {% endif %} -->
+
+  {% if resubmessage %}
+  <h3 style="color: green;">{{ resubmessage }}</h3>
+  {% endif %}
+
+  {% else %}
+  <h3>You are currently not allowed to submit a manuscript.</h3>
+  {% endif %}
+
+</section>
+
+
+{% endblock bodysup %}
diff --git a/submissions/templates/submissions/submit_manuscript.html b/submissions/templates/submissions/submit_manuscript.html
index 8bb92e95a355883202f2b3350d17ff5991680603..55a6f49aa898a9022d570434037288017dc4ad6d 100644
--- a/submissions/templates/submissions/submit_manuscript.html
+++ b/submissions/templates/submissions/submit_manuscript.html
@@ -68,9 +68,9 @@ $(document).ready(function(){
     </form>
   </div>
   <br/>
-  {% if errormessage %}
+  <!-- {% if errormessage %}
   <h3 style="color: red;">Error: {{ errormessage }}</h3>
-  {% endif %}
+  {% endif %} -->
 
   {% if resubmessage %}
   <h3 style="color: green;">{{ resubmessage }}</h3>
diff --git a/submissions/urls.py b/submissions/urls.py
index a8c077b290546fd7ba84aae82049e422f6940cfc..889e80791c8ae74cdbf20e395b2e69f6567ccd1c 100644
--- a/submissions/urls.py
+++ b/submissions/urls.py
@@ -18,9 +18,12 @@ urlpatterns = [
         name='submission_wo_vn_nr'),
     url(r'^(?P<arxiv_identifier_w_vn_nr>[0-9]{4,}.[0-9]{5,}v[0-9]{1,2})/$',
         views.submission_detail, name='submission'),
+    # url(r'^prefill_using_identifier$',
+    #     views.prefill_using_identifier, name='prefill_using_identifier'),
     url(r'^prefill_using_identifier$',
-        views.prefill_using_identifier, name='prefill_using_identifier'),
-    url(r'^submit_manuscript$', views.submit_manuscript, name='submit_manuscript'),
+        views.PrefillUsingIdentifierView.as_view(), name='prefill_using_identifier'),
+    # url(r'^submit_manuscript$', views.submit_manuscript, name='submit_manuscript'),
+    url(r'^submit_manuscript$', views.SubmissionCreateView.as_view(), name='submit_manuscript'),
     url(r'^pool$', views.pool, name='pool'),
     # Assignment of Editor-in-charge
     url(r'^assign_submission/(?P<arxiv_identifier_w_vn_nr>[0-9]{4,}.[0-9]{5,}v[0-9]{1,2})$',
diff --git a/submissions/views.py b/submissions/views.py
index 319447775ba20819b8b1c6d7930a8ce5cb9e91d4..81a73f5dae80421aa1277ad4137ee38ca328c2d0 100644
--- a/submissions/views.py
+++ b/submissions/views.py
@@ -43,9 +43,102 @@ from django.views.generic.edit import UpdateView, CreateView, FormView
 # SUBMISSIONS:
 ###############
 
-@permission_required('scipost.can_submit_manuscript', raise_exception=True)
-def prefill_using_identifier(request):
-    if request.method == "POST":
+# @permission_required('scipost.can_submit_manuscript', raise_exception=True)
+# def prefill_using_identifier(request):
+#     if request.method == "POST":
+#         identifierform = SubmissionIdentifierForm(request.POST)
+#         if identifierform.is_valid():
+#             # Use the ArxivCaller class to make the API calls
+#             caller = ArxivCaller()
+#             caller.process(identifierform.cleaned_data['identifier'])
+#
+#             if caller.is_valid():
+#                 # Arxiv response is valid and can be shown
+#
+#                 metadata = caller.metadata
+#                 is_resubmission = caller.resubmission
+#                 title = metadata['entries'][0]['title']
+#                 authorlist = metadata['entries'][0]['authors'][0]['name']
+#                 for author in metadata['entries'][0]['authors'][1:]:
+#                     authorlist += ', ' + author['name']
+#                 arxiv_link = metadata['entries'][0]['id']
+#                 abstract = metadata['entries'][0]['summary']
+#                 initialdata = {'is_resubmission': is_resubmission,
+#                                'metadata': metadata,
+#                                'title': title, 'author_list': authorlist,
+#                                'arxiv_identifier_w_vn_nr': caller.identifier_with_vn_nr,
+#                                'arxiv_identifier_wo_vn_nr': caller.identifier_without_vn_nr,
+#                                'arxiv_vn_nr': caller.version_nr,
+#                                'arxiv_link': arxiv_link, 'abstract': abstract}
+#                 if is_resubmission:
+#                     resubmessage = ('There already exists a preprint with this arXiv identifier '
+#                                     'but a different version number. \nYour Submission will be '
+#                                     'handled as a resubmission.')
+#                     initialdata['submitted_to_journal'] = previous_submissions[0].submitted_to_journal
+#                     initialdata['submission_type'] = previous_submissions[0].submission_type
+#                     initialdata['discipline'] = previous_submissions[0].discipline
+#                     initialdata['domain'] = previous_submissions[0].domain
+#                     initialdata['subject_area'] = previous_submissions[0].subject_area
+#                     initialdata['secondary_areas'] = previous_submissions[0].secondary_areas
+#                     initialdata['referees_suggested'] = previous_submissions[0].referees_suggested
+#                     initialdata['referees_flagged'] = previous_submissions[0].referees_flagged
+#                 else:
+#                     resubmessage = ''
+#
+#                 form = SubmissionForm(initial=initialdata)
+#                 context = {'identifierform': identifierform,
+#                            'form': form,
+#                            'resubmessage': resubmessage}
+#                 return render(request, 'submissions/submit_manuscript.html', context)
+#
+#             else:
+#                 # Arxiv response is not valid
+#                 errormessages = {
+#                     'preprint_does_not_exist':
+#                         'A preprint associated to this identifier does not exist.',
+#                     'paper_published_journal_ref':
+#                         ('This paper has been published as ' + caller.arxiv_journal_ref +
+#                          '. You cannot submit it to SciPost anymore.'),
+#                     'paper_published_doi':
+#                         ('This paper has been published under DOI ' + caller.arxiv_doi +
+#                          '. You cannot submit it to SciPost anymore.'),
+#                     'arxiv_timeout': 'Arxiv did not respond in time. Please try again later',
+#                     'arxiv_bad_request':
+#                         ('There was an error with requesting identifier ' +
+#                          caller.identifier_with_vn_nr +
+#                          ' from Arxiv. Please check the identifier and try again.'),
+#                     'previous_submission_undergoing_refereeing':
+#                         ('There exists a preprint with this arXiv identifier '
+#                          'but an earlier version number, which is still undergoing '
+#                          'peer refereeing.'
+#                          'A resubmission can only be performed after request '
+#                          'from the Editor-in-charge. Please wait until the '
+#                          'closing of the previous refereeing round and '
+#                          'formulation of the Editorial Recommendation '
+#                          'before proceeding with a resubmission.'),
+#                     'preprint_already_submitted': 'This preprint version has already been submitted to SciPost.'
+#                 }
+#
+#                 identifierform.add_error(None, errormessages[caller.errorcode])
+#                 form = SubmissionForm()
+#                 return render(request, 'submissions/submit_manuscript.html',
+#                               {'identifierform': identifierform, 'form': form})
+#         else:
+#             form = SubmissionForm()
+#             return render(request, 'submissions/submit_manuscript.html',
+#                           {'identifierform': identifierform, 'form': form})
+#     # return redirect(reverse('submissions:submit_manuscript'))
+#     form = SubmissionForm()
+#     identifierform = SubmissionIdentifierForm()
+#     return render(request, 'submissions/submit_manuscript.html',
+#                   {'identifierform': identifierform, 'form': form})
+
+
+class PrefillUsingIdentifierView(FormView):
+    form_class = SubmissionIdentifierForm
+    template_name = 'submissions/prefill_using_identifier.html'
+
+    def post(self, request):
         identifierform = SubmissionIdentifierForm(request.POST)
         if identifierform.is_valid():
             # Use the ArxivCaller class to make the API calls
@@ -71,6 +164,7 @@ def prefill_using_identifier(request):
                                'arxiv_vn_nr': caller.version_nr,
                                'arxiv_link': arxiv_link, 'abstract': abstract}
                 if is_resubmission:
+                    previous_submissions = caller.previous_submissions
                     resubmessage = ('There already exists a preprint with this arXiv identifier '
                                     'but a different version number. \nYour Submission will be '
                                     'handled as a resubmission.')
@@ -89,7 +183,7 @@ def prefill_using_identifier(request):
                 context = {'identifierform': identifierform,
                            'form': form,
                            'resubmessage': resubmessage}
-                return render(request, 'submissions/submit_manuscript.html', context)
+                return render(request, 'submissions/new_submission.html', context)
 
             else:
                 # Arxiv response is not valid
@@ -120,122 +214,236 @@ def prefill_using_identifier(request):
                 }
 
                 identifierform.add_error(None, errormessages[caller.errorcode])
-                form = SubmissionForm()
-                return render(request, 'submissions/submit_manuscript.html',
-                              {'identifierform': identifierform, 'form': form})
+                return render(request, 'submissions/prefill_using_identifier.html',
+                              {'form': identifierform})
         else:
-            form = SubmissionForm()
-            return render(request, 'submissions/submit_manuscript.html',
-                          {'identifierform': identifierform, 'form': form})
-    return redirect(reverse('submissions:submit_manuscript'))
+            return render(request, 'submissions/prefill_using_identifier.html',
+                          {'form': identifierform})
+
+class SubmissionCreateView(CreateView):
+
+    model = Submission
+    fields = [
+        'is_resubmission',
+        'discipline',
+        'submitted_to_journal',
+        'submission_type',
+        'domain',
+        'subject_area',
+        'secondary_areas',
+        'title',
+        'author_list',
+        'abstract',
+        'arxiv_identifier_w_vn_nr',
+        'arxiv_identifier_wo_vn_nr',
+        'arxiv_vn_nr',
+        'arxiv_link',
+        'metadata',
+        'author_comments',
+        'list_of_changes',
+        'remarks_for_editors',
+        'referees_suggested',
+        'referees_flagged'
+    ]
+
+    template_name = 'submissions/new_submission.html'
+
+    def get(self, request):
+        # Only use prefilled forms
+        return redirect('submissions:prefill_using_identifier')
+
+    @transaction.atomic
+    def form_valid(self, form):
+        submitted_by = Contributor.objects.get(user=self.request.user)
+        form.instance.submitted_by = submitted_by
+        form.instance.is_current = True
+
+        if form.cleaned_data['is_resubmission']:
+            form.instance.open_for_reporting = True
+            form.instance.open_for_commenting = True
+
+            deadline = timezone.now() + datetime.timedelta(days=28)  # for papers
+            if form.cleaned_data['submitted_to_journal'] == 'SciPost Physics Lecture Notes':
+                deadline += datetime.timedelta(days=28)
+            form.instance.reporting_deadline = deadline
+
+            # Take information from previous submission(s)
+            previous_submissions = self.previous_submissions(form)
+            form.instance.editor_in_charge = previous_submissions[0].editor_in_charge
+            form.instance.status = 'EICassigned'
+
+            self.mark_previous_submissions_as_deprecated(previous_submissions)
+
+        submission = form.save()
+
+        if form.cleaned_data['is_resubmission']:
+            # Add many-to-many data
+            for author in previous_submissions[0].authors.all():
+                print('Previous submissions!!')
+                submission.authors.add(author)
+            for author in previous_submissions[0].authors_claims.all():
+                submission.authors_claims.add(author)
+            for author in previous_submissions[0].authors_false_claims.all():
+                submission.authors_false_claims.add(author)
 
+            submission.save()
 
-@login_required
-@permission_required('scipost.can_submit_manuscript', raise_exception=True)
-@transaction.atomic
-def submit_manuscript(request):
-    if request.method == 'POST':
-        form = SubmissionForm(request.POST)
-        if form.is_valid():
-            submitted_by = Contributor.objects.get(user=request.user)
-            # Verify if submitter is among the authors
-            if submitted_by.user.last_name not in form.cleaned_data['author_list']:
-                errormessage = ('Your name does not match that of any of the authors. '
-                                'You are not authorized to submit this preprint.')
-                identifierform = SubmissionIdentifierForm()
-                return render(request, 'submissions/submit_manuscript.html',
-                              {'identifierform': identifierform, 'form': form,
-                               'errormessage': errormessage})
-            submission = Submission(
-                is_current=True,
-                is_resubmission=form.cleaned_data['is_resubmission'],
-                submitted_by=submitted_by,
-                submitted_to_journal=form.cleaned_data['submitted_to_journal'],
-                submission_type=form.cleaned_data['submission_type'],
-                discipline=form.cleaned_data['discipline'],
-                domain=form.cleaned_data['domain'],
-                subject_area=form.cleaned_data['subject_area'],
-                secondary_areas=form.cleaned_data['secondary_areas'],
-                status='unassigned',
-                title=form.cleaned_data['title'],
-                author_list=form.cleaned_data['author_list'],
-                abstract=form.cleaned_data['abstract'],
-                arxiv_identifier_w_vn_nr=form.cleaned_data['arxiv_identifier_w_vn_nr'],
-                arxiv_identifier_wo_vn_nr=form.cleaned_data['arxiv_identifier_wo_vn_nr'],
-                arxiv_vn_nr=form.cleaned_data['arxiv_vn_nr'],
-                arxiv_link=form.cleaned_data['arxiv_link'],
-                metadata=form.cleaned_data['metadata'],
-                submission_date=timezone.now(),
-                remarks_for_editors=form.cleaned_data['remarks_for_editors'],
-                referees_suggested=form.cleaned_data['referees_suggested'],
-                referees_flagged=form.cleaned_data['referees_flagged'],
+            # Make assignment
+            assignment = EditorialAssignment(
+                submission=submission,
+                to=submission.editor_in_charge,
+                accepted=True,
+                date_created=timezone.now(),
+                date_answered=timezone.now(),
             )
+            assignment.save()
+
+            # Assign permissions
+            assign_perm('can_take_editorial_actions', submission.editor_in_charge.user, submission)
+            ed_admins = Group.objects.get(name='Editorial Administrators')
+            assign_perm('can_take_editorial_actions', ed_admins, submission)
+
+            # Send emails
+            SubmissionUtils.load({'submission': submission})
+            SubmissionUtils.send_authors_resubmission_ack_email()
+            SubmissionUtils.send_EIC_reappointment_email()
+        else:
+            # Add many-to-many data
+            submission.authors.add(submitted_by)
             submission.save()
-            submission.authors.add(submitted_by)  # must be author to be able to submit
-            submission.save()
-            # If this is a resubmission, mark previous submissions as deprecated:
-            if form.cleaned_data['is_resubmission']:
-                previous_submissions = Submission.objects.filter(
-                    arxiv_identifier_wo_vn_nr=form.cleaned_data['arxiv_identifier_wo_vn_nr']
-                ).exclude(pk=submission.id).order_by('-arxiv_vn_nr')
-                for sub in previous_submissions:
-                    sub.is_current = False
-                    sub.open_for_reporting = False
-                    sub.status = 'resubmitted'
-                    sub.save()
-                # Handle this submission in same way as if assignment had been accepted
-                submission.open_for_reporting = True
-                deadline = timezone.now() + datetime.timedelta(days=28)  # for papers
-                if submission.submitted_to_journal == 'SciPost Physics Lecture Notes':
-                    deadline += datetime.timedelta(days=28)
-                submission.reporting_deadline = deadline
-                submission.open_for_commenting = True
-                submission.latest_activity = timezone.now()
-                # We keep the same (most recent) Editor-in-charge by default
-                submission.editor_in_charge = previous_submissions[0].editor_in_charge
-                submission.status = 'EICassigned'
-                # Keep the info about authors:
-                for author in previous_submissions[0].authors.all():
-                    submission.authors.add(author)
-                for author in previous_submissions[0].authors_claims.all():
-                    submission.authors_claims.add(author)
-                for author in previous_submissions[0].authors_false_claims.all():
-                    submission.authors_false_claims.add(author)
-                submission.author_comments = form.cleaned_data['author_comments']
-                submission.list_of_changes = form.cleaned_data['list_of_changes']
-                submission.save()
-                assignment = EditorialAssignment(
-                    submission=submission,
-                    to=submission.editor_in_charge,
-                    accepted=True,
-                    date_created=timezone.now(),
-                    date_answered=timezone.now(),
-                )
-                assignment.save()
-                SubmissionUtils.load({'submission': submission})
-                SubmissionUtils.send_authors_resubmission_ack_email()
-                assign_perm('can_take_editorial_actions', submission.editor_in_charge.user, submission)
-                ed_admins = Group.objects.get(name='Editorial Administrators')
-                assign_perm('can_take_editorial_actions', ed_admins, submission)
-                SubmissionUtils.send_EIC_reappointment_email()
-            else:
-                SubmissionUtils.load({'submission': submission})
-                SubmissionUtils.send_authors_submission_ack_email()
-
-            # return HttpResponseRedirect(reverse('submissions:submit_manuscript_ack'))
-            context = {'ack_header': 'Thank you for your Submission to SciPost',
-                       'ack_message': 'Your Submission will soon be handled by an Editor. ',
-                       'followup_message': 'Return to your ',
-                       'followup_link': reverse('scipost:personal_page'),
-                       'followup_link_label': 'personal page'}
-            return render(request, 'scipost/acknowledgement.html', context)
-        else:  # form is invalid
-            pass
-    else:
-        form = SubmissionForm()
-    identifierform = SubmissionIdentifierForm()
-    return render(request, 'submissions/submit_manuscript.html',
-                  {'identifierform': identifierform, 'form': form})
+
+            # Send emails
+            SubmissionUtils.load({'submission': submission})
+            SubmissionUtils.send_authors_submission_ack_email()
+
+        context = {'ack_header': 'Thank you for your Submission to SciPost',
+                   'ack_message': 'Your Submission will soon be handled by an Editor. ',
+                   'followup_message': 'Return to your ',
+                   'followup_link': reverse('scipost:personal_page'),
+                   'followup_link_label': 'personal page'}
+        return render(self.request, 'scipost/acknowledgement.html', context)
+
+    def mark_previous_submissions_as_deprecated(self, previous_submissions):
+        for sub in previous_submissions:
+            sub.is_current = False
+            sub.open_for_reporting = False
+            sub.status = 'resubmitted'
+            sub.save()
+
+    def previous_submissions(self, form):
+        return Submission.objects.filter(
+            arxiv_identifier_wo_vn_nr=form.cleaned_data['arxiv_identifier_wo_vn_nr']
+        )
+
+
+
+
+# @login_required
+# @permission_required('scipost.can_submit_manuscript', raise_exception=True)
+# @transaction.atomic
+# def submit_manuscript(request):
+#     if request.method == 'POST':
+#         form = SubmissionForm(request.POST)
+#         if form.is_valid():
+#             submitted_by = Contributor.objects.get(user=request.user)
+#             # Verify if submitter is among the authors
+            # if submitted_by.user.last_name not in form.cleaned_data['author_list']:
+            #     errormessage = ('Your name does not match that of any of the authors. '
+            #                     'You are not authorized to submit this preprint.')
+            #     identifierform = SubmissionIdentifierForm()
+            #     return render(request, 'submissions/submit_manuscript.html',
+            #                   {'identifierform': identifierform, 'form': form,
+            #                    'errormessage': errormessage})
+#             submission = Submission(
+#                 is_current=True,
+#                 is_resubmission=form.cleaned_data['is_resubmission'],
+#                 submitted_by=submitted_by,
+#                 submitted_to_journal=form.cleaned_data['submitted_to_journal'],
+#                 submission_type=form.cleaned_data['submission_type'],
+#                 discipline=form.cleaned_data['discipline'],
+#                 domain=form.cleaned_data['domain'],
+#                 subject_area=form.cleaned_data['subject_area'],
+#                 secondary_areas=form.cleaned_data['secondary_areas'],
+#                 status='unassigned',
+#                 title=form.cleaned_data['title'],
+#                 author_list=form.cleaned_data['author_list'],
+#                 abstract=form.cleaned_data['abstract'],
+#                 arxiv_identifier_w_vn_nr=form.cleaned_data['arxiv_identifier_w_vn_nr'],
+#                 arxiv_identifier_wo_vn_nr=form.cleaned_data['arxiv_identifier_wo_vn_nr'],
+#                 arxiv_vn_nr=form.cleaned_data['arxiv_vn_nr'],
+#                 arxiv_link=form.cleaned_data['arxiv_link'],
+#                 metadata=form.cleaned_data['metadata'],
+#                 submission_date=timezone.now(),
+#                 remarks_for_editors=form.cleaned_data['remarks_for_editors'],
+#                 referees_suggested=form.cleaned_data['referees_suggested'],
+#                 referees_flagged=form.cleaned_data['referees_flagged'],
+#             )
+#             submission.save()
+#             submission.authors.add(submitted_by)  # must be author to be able to submit
+#             submission.save()
+#             # If this is a resubmission, mark previous submissions as deprecated:
+#             if form.cleaned_data['is_resubmission']:
+#                 previous_submissions = Submission.objects.filter(
+#                     arxiv_identifier_wo_vn_nr=form.cleaned_data['arxiv_identifier_wo_vn_nr']
+#                 ).exclude(pk=submission.id).order_by('-arxiv_vn_nr')
+#                 for sub in previous_submissions:
+#                     sub.is_current = False
+#                     sub.open_for_reporting = False
+#                     sub.status = 'resubmitted'
+#                     sub.save()
+#                 # Handle this submission in same way as if assignment had been accepted
+#                 submission.open_for_reporting = True
+#                 deadline = timezone.now() + datetime.timedelta(days=28)  # for papers
+#                 if submission.submitted_to_journal == 'SciPost Physics Lecture Notes':
+#                     deadline += datetime.timedelta(days=28)
+#                 submission.reporting_deadline = deadline
+#                 submission.open_for_commenting = True
+#                 submission.latest_activity = timezone.now()
+#                 # We keep the same (most recent) Editor-in-charge by default
+#                 submission.editor_in_charge = previous_submissions[0].editor_in_charge
+#                 submission.status = 'EICassigned'
+#                 # Keep the info about authors:
+#                 for author in previous_submissions[0].authors.all():
+#                     submission.authors.add(author)
+#                 for author in previous_submissions[0].authors_claims.all():
+#                     submission.authors_claims.add(author)
+#                 for author in previous_submissions[0].authors_false_claims.all():
+#                     submission.authors_false_claims.add(author)
+#                 submission.author_comments = form.cleaned_data['author_comments']
+#                 submission.list_of_changes = form.cleaned_data['list_of_changes']
+#                 submission.save()
+#                 assignment = EditorialAssignment(
+#                     submission=submission,
+#                     to=submission.editor_in_charge,
+#                     accepted=True,
+#                     date_created=timezone.now(),
+#                     date_answered=timezone.now(),
+#                 )
+#                 assignment.save()
+#                 SubmissionUtils.load({'submission': submission})
+#                 SubmissionUtils.send_authors_resubmission_ack_email()
+#                 assign_perm('can_take_editorial_actions', submission.editor_in_charge.user, submission)
+#                 ed_admins = Group.objects.get(name='Editorial Administrators')
+#                 assign_perm('can_take_editorial_actions', ed_admins, submission)
+#                 SubmissionUtils.send_EIC_reappointment_email()
+#             else:
+#                 SubmissionUtils.load({'submission': submission})
+#                 SubmissionUtils.send_authors_submission_ack_email()
+#
+#             # return HttpResponseRedirect(reverse('submissions:submit_manuscript_ack'))
+#             context = {'ack_header': 'Thank you for your Submission to SciPost',
+#                        'ack_message': 'Your Submission will soon be handled by an Editor. ',
+#                        'followup_message': 'Return to your ',
+#                        'followup_link': reverse('scipost:personal_page'),
+#                        'followup_link_label': 'personal page'}
+#             return render(request, 'scipost/acknowledgement.html', context)
+#         else:  # form is invalid
+#             pass
+#     else:
+#         form = SubmissionForm()
+#     identifierform = SubmissionIdentifierForm()
+#     return render(request, 'submissions/submit_manuscript.html',
+#                   {'identifierform': identifierform, 'form': form})
 
 
 def submissions(request, to_journal=None):