Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 8664)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 8665)
@@ -19,5 +19,4 @@
 """
 import os
-import pytz
 import sys
 import grok
@@ -914,5 +913,7 @@
 
     def update(self):
-        if self.context.locked:
+        if self.context.locked or (
+            self.context.__parent__.expired and
+            self.context.__parent__.strict_deadline):
             self.emit_lock_message()
             return
@@ -963,11 +964,4 @@
         if state != PAID:
             self.flash(_('The form cannot be submitted. Wrong state!'))
-            return
-        cond1 = self.context.__parent__.strict_deadline
-        cond2 = self.context.__parent__.enddate
-        cond3 = self.context.__parent__.enddate < datetime.now(pytz.utc)
-        if cond1 and (not cond2 or cond3):
-            self.flash(
-                _('The form cannot be submitted. Application period has expired!'))
             return
         IWorkflowInfo(self.context).fireTransition('submit')
@@ -1023,14 +1017,6 @@
 
     def update(self):
-        # Check if application has started ...
-        if not self.context.startdate or (
-            self.context.startdate > datetime.now(pytz.utc)):
-            self.flash(_('Application has not yet started.'))
-            self.redirect(self.url(self.context))
-            return
-        # ... or ended
-        if not self.context.enddate or (
-            self.context.enddate < datetime.now(pytz.utc)):
-            self.flash(_('Application has ended.'))
+        if self.context.expired:
+            self.flash(_('Outside application period.'))
             self.redirect(self.url(self.context))
             return
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/container.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/container.py	(revision 8664)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/container.py	(revision 8665)
@@ -21,4 +21,6 @@
 from random import SystemRandom as r
 import grok
+import pytz
+from datetime import datetime
 from zope.component import getUtility
 from zope.component.factory import Factory
@@ -101,4 +103,17 @@
         return getUtility(IApplicantsUtils).getApplicantsStatistics(self)
 
+    @property
+    def expired(self):
+        # Check if application has started ...
+        if not self.startdate or (
+            self.startdate > datetime.now(pytz.utc)):
+            return True
+        # ... or ended
+        if not self.enddate or (
+            self.enddate < datetime.now(pytz.utc)):
+            return True
+        return False
+
+
 ApplicantsContainer = attrs_to_fields(ApplicantsContainer)
 
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 8664)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/tests/test_browser.py	(revision 8665)
@@ -773,4 +773,5 @@
         self.assertTrue('Final Submit' in self.browser.contents)
         self.fill_correct_values() # fill other fields with correct values
+        self.browser.getControl("Save").click()
         self.browser.getControl("Final Submit").click()
         # We forgot to upload a passport picture
@@ -789,11 +790,18 @@
             in self.browser.contents)
         self.browser.getControl(name="confirm_passport").value = True
+        # If application period has expired and strict-deadline is set
+        # applicants do notsee edit button and can't open
+        # the edit form.
         self.applicantscontainer.enddate = datetime.now(pytz.utc)
-        self.browser.getControl("Final Submit").click()
-        self.assertTrue(
-            'Application period has expired' in self.browser.contents)
+        self.browser.open(self.view_path)
+        self.assertFalse(
+            'Edit application record' in self.browser.contents)
+        self.browser.open(self.edit_path)
+        self.assertTrue(
+            'form is locked' in self.browser.contents)
         # We can either postpone the enddate ...
         self.applicantscontainer.enddate = datetime.now(
             pytz.utc) + timedelta(days=10)
+        self.browser.open(self.edit_path)
         self.browser.getControl(name="confirm_passport").value = True
         self.browser.getControl("Final Submit").click()
@@ -811,4 +819,5 @@
         self.browser.goBack(count=1)
         self.browser.getControl("Save").click()
+        # The form is locked.
         self.assertTrue(
             'The requested form is locked' in self.browser.contents)
Index: /main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py
===================================================================
--- /main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py	(revision 8664)
+++ /main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py	(revision 8665)
@@ -157,5 +157,7 @@
         """Get a URL to the target...
         """
-        if self.context.locked:
+        if self.context.locked or (
+            self.context.__parent__.expired and
+            self.context.__parent__.strict_deadline):
             return
         return self.view.url(self.view.context, self.target)
