Index: main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/fileupload.pt
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/fileupload.pt	(revision 7110)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/browser_templates/fileupload.pt	(revision 7111)
@@ -13,11 +13,15 @@
           LINK
         </a>
-        <input type="submit" id="delete"
-               name="delete" value="Delete" class="button" />
-        <br /><br />
+        <input type="submit"
+               tal:attributes="id python:('delete_%s' % viewlet.input_name);
+                  name python:('delete_%s' % viewlet.input_name)"
+               value="Delete" class="button" />
+        <br />
       </tal:file>
       <input type="file" tal:attributes="name viewlet/input_name"/>
-      <input type="submit" id="upload"
-             name="upload" value="Upload" class="button" />
+      <input type="submit"
+               tal:attributes="id python:('upload_%s' % viewlet.input_name);
+                  name python:('upload_%s' % viewlet.input_name)"
+               value="Upload" class="button" />
       <br />
       <span i18n:translate="">
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py	(revision 7110)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_browser.py	(revision 7111)
@@ -374,5 +374,5 @@
         ctrl = self.browser.getControl(name='birth_certificate')
         file_ctrl = ctrl.mech_control
-        file_ctrl.add_file(pseudo_image, filename='myphoto.jpg')
+        file_ctrl.add_file(pseudo_image, filename='my_birth_certificate.jpg')
         # The Save action does not upload files
         self.browser.getControl("Save (no upload)").click() # submit form
@@ -380,10 +380,10 @@
             '<a target="image" href="birth_certificate.jpg">'
             in self.browser.contents)
-        # ... but the Upload submit button does
+        # ... but the correct upload submit button does
         pseudo_image = StringIO('I pretend to be a graphics file')
         ctrl = self.browser.getControl(name='birth_certificate')
         file_ctrl = ctrl.mech_control
-        file_ctrl.add_file(pseudo_image, filename='myphoto.jpg')
-        self.browser.getControl("Upload").click()
+        file_ctrl.add_file(pseudo_image, filename='my_birth_certificate.jpg')
+        self.browser.getControl(name='upload_birth_certificate').click()
         # There is a correct <img> link included
         self.assertTrue(
@@ -401,6 +401,6 @@
         ctrl = self.browser.getControl(name='birth_certificate')
         file_ctrl = ctrl.mech_control
-        file_ctrl.add_file(pseudo_image, filename='myphoto.jpg')
-        self.browser.getControl("Upload").click()
+        file_ctrl.add_file(pseudo_image, filename='my_birth_certificate.jpg')
+        self.browser.getControl(name='upload_birth_certificate').click()
         self.assertTrue(
             'Uploaded file is too big' in self.browser.contents)
@@ -410,21 +410,42 @@
         file_ctrl = ctrl.mech_control
         file_ctrl.add_file(pseudo_image, filename='my.photo.jpg')
-        self.browser.getControl("Upload").click()
+        self.browser.getControl(name='upload_birth_certificate').click()
         self.assertTrue('File name contains more than one dot'
             in self.browser.contents)
         ctrl = self.browser.getControl(name='birth_certificate')
         file_ctrl = ctrl.mech_control
-        file_ctrl.add_file(pseudo_image, filename='myphoto')
-        self.browser.getControl("Upload").click()
+        file_ctrl.add_file(pseudo_image, filename='my_birth_certificate')
+        self.browser.getControl(name='upload_birth_certificate').click()
         self.assertTrue('File name has no extension' in self.browser.contents)
         ctrl = self.browser.getControl(name='birth_certificate')
         file_ctrl = ctrl.mech_control
-        file_ctrl.add_file(pseudo_image, filename='myphoto.bmp')
-        self.browser.getControl("Upload").click()
+        file_ctrl.add_file(pseudo_image, filename='my_birth_certificate.bmp')
+        self.browser.getControl(name='upload_birth_certificate').click()
         self.assertTrue('.jpg file extension expected' in self.browser.contents)
         # Managers can delete files
-        self.browser.getControl("Delete").click()
+        self.browser.getControl(name='delete_birth_certificate').click()
         self.assertTrue(
             'File birth_certificate.jpg deleted'
+            in self.browser.contents)
+        # Managers can add and delete second file
+        self.browser.open(self.edit_clearance_student_path)
+        pseudo_image = StringIO('I pretend to be a graphics file')
+        ctrl = self.browser.getControl(name='birth_certificate')
+        file_ctrl = ctrl.mech_control
+        file_ctrl.add_file(pseudo_image, filename='my_acceptance_letter.jpg')
+        self.browser.getControl(name='upload_acceptance_letter').click()
+        self.assertFalse(
+            '<a target="image" href="acceptance_letter.jpg">'
+            in self.browser.contents)
+        ctrl = self.browser.getControl(name='acceptance_letter')
+        file_ctrl = ctrl.mech_control
+        file_ctrl.add_file(pseudo_image, filename='my_acceptance_letter.jpg')
+        self.browser.getControl(name='upload_acceptance_letter').click()
+        self.assertTrue(
+            '<a target="image" href="acceptance_letter.jpg">'
+            in self.browser.contents)
+        self.browser.getControl(name='delete_acceptance_letter').click()
+        self.assertTrue(
+            'File acceptance_letter.jpg deleted'
             in self.browser.contents)
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/students/viewlets.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/students/viewlets.py	(revision 7110)
+++ main/waeup.sirp/trunk/src/waeup/sirp/students/viewlets.py	(revision 7111)
@@ -278,5 +278,6 @@
     def update(self):
         self.max_upload_size = string_from_bytes(self.mus)
-        delete_button = self.request.form.get('delete', None)
+        delete_button = self.request.form.get('delete_%s' % self.input_name, None)
+        upload_button = self.request.form.get('upload_%s' % self.input_name, None)
         if delete_button:
             handle_file_delete(
@@ -286,15 +287,12 @@
                 self.view.url(self.context, self.view.__name__))
             return
-        upload_button = self.request.form.get('upload', None)
         if upload_button:
             upload = self.request.form.get(self.input_name, None)
             if upload:
                 # We got a fresh upload
-                file_changed = handle_file_upload(
-                    upload, self.context, self.view, self.mus, self.download_name)
-                if file_changed is False:  # False is not None!
-                    self.view.redirect(
-                        self.view.url(self.context, self.view.__name__))
-                    return # error during file upload. Ignore other values
+                handle_file_upload(upload,
+                    self.context, self.view, self.mus, self.download_name)
+                self.view.redirect(
+                    self.view.url(self.context, self.view.__name__))
         return
 
@@ -314,4 +312,20 @@
     download_name = u'birth_certificate.jpg'
     input_name = u'birth_certificate'
+
+class AcceptanceLetterDisplay(FileDisplay):
+    """Acceptance Letter upload viewlet.
+    """
+    grok.order(1)
+    label = u'Acceptance Letter:'
+    download_name = u'acceptance_letter.jpg'
+
+class AcceptanceLetterUpload(FileUpload):
+    """AcceptanceLetter upload viewlet.
+    """
+    grok.order(1)
+    label = u'Acceptance Letter (jpg only):'
+    mus = 1024 * 150
+    download_name = u'acceptance_letter.jpg'
+    input_name = u'acceptance_letter'
 
 class Image(grok.View):
@@ -338,6 +352,12 @@
 
 class BirthCertificateImage(Image):
-    """Renders birth certificate jpeg image.
+    """Renders birth certificate jpeg scan.
     """
     grok.name('birth_certificate.jpg')
     download_name = u'birth_certificate.jpg'
+
+class AcceptanceLetterImage(Image):
+    """Renders acceptance letter jpeg scan.
+    """
+    grok.name('acceptance_letter.jpg')
+    download_name = u'acceptance_letter.jpg'
