Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 9037)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 9038)
@@ -844,6 +844,13 @@
                 self.flash(_("Only csv files are allowed."))
                 return
-            target = os.path.join(self.context.storage,
-                                  self.getNormalizedFileName(filename))
+            normalized_filename = self.getNormalizedFileName(filename)
+            finished_file = os.path.join(
+                self.context.storage, 'finished', normalized_filename)
+            unfinished_file = os.path.join(
+                self.context.storage, 'unfinished', normalized_filename)
+            if os.path.exists(finished_file) or os.path.exists(unfinished_file):
+                self.flash(_("File with same name was uploaded earlier."))
+                return
+            target = os.path.join(self.context.storage, normalized_filename)
             open(target, 'wb').write(uploadfile.read())
             os.chmod(target, 0664)
Index: main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py	(revision 9037)
+++ main/waeup.kofa/trunk/src/waeup/kofa/university/tests/test_batching.py	(revision 9038)
@@ -26,4 +26,5 @@
 from zope.securitypolicy.interfaces import (
     IPrincipalRoleMap, IPrincipalRoleManager)
+from zope.testbrowser.testing import Browser
 from zope.interface.verify import verifyClass, verifyObject
 from waeup.kofa.interfaces import IBatchProcessor
@@ -115,4 +116,9 @@
     def setUp(self):
         super(TestFacultyProcessor, self).setUp()
+
+        self.browser = Browser()
+        self.browser.handleErrors = False
+        self.datacenter_path = 'http://localhost/app/datacenter'
+        self.app['datacenter'].setStoragePath(self.dc_root)
 
         self.proc = FacultyProcessor()
@@ -284,4 +290,37 @@
         self.assertEqual(local_role, 'alfonsrole')
         shutil.rmtree(os.path.dirname(fin_file))
+        return
+
+    def test_upload_import_reupload(self):
+        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+        self.browser.open(self.datacenter_path)
+        self.assertEqual(self.browser.headers['Status'], '200 Ok')
+        self.assertEqual(self.browser.url, self.datacenter_path)
+        self.browser.getLink("Upload data").click()
+        file = open(self.csv_file_faculty)
+        ctrl = self.browser.getControl(name='uploadfile:file')
+        file_ctrl = ctrl.mech_control
+        file_ctrl.add_file(file, filename='sample_faculty_data.csv')
+        self.browser.getControl('Upload').click()
+        self.browser.getLink('Process data').click()
+        self.browser.getControl(name="select").click()
+        importerselect = self.browser.getControl(name='importer')
+        importerselect.getControl('Faculty Processor').selected = True
+        modeselect = self.browser.getControl(name='mode')
+        modeselect.getControl(value='create').selected = True
+        self.browser.getControl('Proceed to step 3').click()
+        self.assertTrue('Header fields OK' in self.browser.contents)
+        self.browser.getControl('Perform import').click()
+        self.assertTrue('Successfully processed 1 rows' in self.browser.contents)
+        # We import the same file a second time.
+        self.browser.open(self.datacenter_path)
+        self.browser.getLink("Upload data").click()
+        file = open(self.csv_file_faculty)
+        ctrl = self.browser.getControl(name='uploadfile:file')
+        file_ctrl = ctrl.mech_control
+        file_ctrl.add_file(file, filename='sample_faculty_data.csv')
+        self.browser.getControl('Upload').click()
+        self.assertTrue(
+            'File with same name was uploaded earlier' in self.browser.contents)
         return
 
