Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/accesscodes.py
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/accesscodes.py	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/accesscodes.py	(revision 6403)
@@ -66,6 +66,6 @@
         self.entry_num = entry_num
         self.num = num
-        self.invalidated_num = 0
-        self.disabled_num = 0
+        #self.invalidated_num = 0
+        #self.disabled_num = 0
         self._entries = list()
         self._acids = OIBTree()
@@ -124,30 +124,30 @@
         return
 
-    def invalidate(self, ac_id, student_id=None):
-        """Invalidate the AC with ID ``ac_id``.
-        """
-        num = self._acids[ac_id]
-        self.invalidated_num += 1
-
-    def disable(self, ac_id, user_id=None):
-        """Disable the AC with ID ``ac_id``.
-
-        ``user_id`` is the user ID of the user triggering the
-        process. Already disabled ACs are left untouched.
-        """
-        num = self._acids[ac_id]
-        ac = self.getAccessCode(ac_id)
-        if ac._disabled == True:
-            return
-        self.disabled_num += 1
-
-    def enable(self, ac_id):
-        """(Re-)enable the AC with ID ``ac_id``.
-
-        This leaves the given AC in state ``unused``. Already enabled
-        ACs are left untouched.
-        """
-        num = self._acids[ac_id]
-        self.disabled_num -= 1
+    #def invalidate(self, ac_id, student_id=None):
+    #    """Invalidate the AC with ID ``ac_id``.
+    #    """
+    #    num = self._acids[ac_id]
+    #    self.invalidated_num += 1
+
+    #def disable(self, ac_id, user_id=None):
+    #    """Disable the AC with ID ``ac_id``.
+
+    #    ``user_id`` is the user ID of the user triggering the
+    #    process. Already disabled ACs are left untouched.
+    #    """
+    #    num = self._acids[ac_id]
+    #    ac = self.getAccessCode(ac_id)
+    #    if ac._disabled == True:
+    #        return
+    #    self.disabled_num += 1
+
+    #def enable(self, ac_id):
+    #    """(Re-)enable the AC with ID ``ac_id``.
+
+    #    This leaves the given AC in state ``unused``. Already enabled
+    #    ACs are left untouched.
+    #    """
+    #    num = self._acids[ac_id]
+    #    self.disabled_num -= 1
 
     def createCSVLogFile(self):
@@ -314,36 +314,36 @@
         return None
 
-    def disable(self, ac_id, user_id):
-        """Disable the AC with ID ``ac_id``.
-
-        ``user_id`` is the user ID of the user triggering the
-        process. Already disabled ACs are left untouched.
-        """
-        ac = self.getAccessCode(ac_id)
-        if ac is None:
-            return
-        ac.__parent__.disable(ac_id, user_id)
-        return
-
-    def enable(self, ac_id):
-        """(Re-)enable the AC with ID ``ac_id``.
-
-        This leaves the given AC in state ``unused``. Already enabled
-        ACs are left untouched.
-        """
-        ac = self.getAccessCode(ac_id)
-        if ac is None:
-            return
-        ac.__parent__.enable(ac_id)
-        return
-
-    def invalidate(self, ac_id):
-        """Invalidate the AC with ID ``ac_id``.
-        """
-        ac = self.getAccessCode(ac_id)
-        if ac is None:
-            return
-        ac.__parent__.invalidate(ac_id)
-        return
+    #def disable(self, ac_id, user_id):
+    #    """Disable the AC with ID ``ac_id``.
+
+    #    ``user_id`` is the user ID of the user triggering the
+    #    process. Already disabled ACs are left untouched.
+    #    """
+    #    ac = self.getAccessCode(ac_id)
+    #    if ac is None:
+    #        return
+    #    ac.__parent__.disable(ac_id, user_id)
+    #    return
+
+    #def enable(self, ac_id):
+    #    """(Re-)enable the AC with ID ``ac_id``.
+
+    #    This leaves the given AC in state ``unused``. Already enabled
+    #    ACs are left untouched.
+    #    """
+    #    ac = self.getAccessCode(ac_id)
+    #    if ac is None:
+    #        return
+    #    ac.__parent__.enable(ac_id)
+    #    return
+
+    #def invalidate(self, ac_id):
+    #    """Invalidate the AC with ID ``ac_id``.
+    #    """
+    #    ac = self.getAccessCode(ac_id)
+    #    if ac is None:
+    #        return
+    #    ac.__parent__.invalidate(ac_id)
+    #    return
 
 
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser.py
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser.py	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser.py	(revision 6403)
@@ -121,19 +121,19 @@
             self.searchresults = []
             for result in searchresults:
-                status = u'unused'
-                if result.disabled is True:
-                    status = u'disabled by %s on %s' % (
-                        result.student_id,
-                        result.invalidation_date.strftime('%c')
-                        )
-                elif result.invalidation_date is not None:
-                    status = u'invalidated by %s on %s' % (
-                        result.student_id,
-                        result.invalidation_date.strftime('%c')
-                        )
+                #status = u'unused'
+                #if result.disabled is True:
+                #    status = u'disabled by %s on %s' % (
+                #        result.student_id,
+                #        result.invalidation_date.strftime('%c')
+                #        )
+                #elif result.invalidation_date is not None:
+                #    status = u'invalidated by %s on %s' % (
+                #        result.student_id,
+                #        result.invalidation_date.strftime('%c')
+                #        )
                 entry = dict(
                     serial = result.batch_serial,
-                    code = result.representation,
-                    status = status)
+                    code = result.representation)
+                    #status = status)
                 self.searchresults.append(entry)
         if entries is None:
@@ -141,11 +141,11 @@
         if isinstance(entries, basestring):
             entries = [entries]
-        for entry in entries:
-            if disable is not None:
-                self.context.disable(entry, self.request.principal.id)
-                self.flash('disabled %s' % entry)
-            elif enable is not None:
-                self.context.enable(entry)
-                self.flash('(re-)enabled %s' % entry)
+        #for entry in entries:
+        #    if disable is not None:
+        #        self.context.disable(entry, self.request.principal.id)
+        #        self.flash('disabled %s' % entry)
+        #    elif enable is not None:
+        #        self.context.enable(entry)
+        #        self.flash('(re-)enabled %s' % entry)
         return
 
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser.txt
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser.txt	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser.txt	(revision 6403)
@@ -112,6 +112,4 @@
     ...
     ...5
-    .../
-    ...0
     ...
     ...12.12...
@@ -139,10 +137,4 @@
     >>> browser.getControl(name='form.cost').value = '19.12'
     >>> browser.getControl('Create batch').click()
-
-We also invalidate one entry:
-
-    >>> batch = getRootFolder()['myuniversity']['accesscodes']['BLA-1']
-    >>> ac = list(batch.entries())[0]
-    >>> batch.invalidate(ac.representation)
 
 Creating Archive Files
@@ -311,9 +303,9 @@
     ...                             sorted(os.listdir(ac_storage))[-2])
     >>> print open(archive_file, 'rb').read()
-    "prefix","serial","ac","student","date"
+    "prefix","serial","ac","date"
     "BLA","19.12","1","3"
-    "BLA","0","BLA-1-<10-DIGITS>","","..."
-    "BLA","1","BLA-1-<10-DIGITS>","",""
-    "BLA","2","BLA-1-<10-DIGITS>","",""
+    "BLA","0","BLA-1-<10-DIGITS>"
+    "BLA","1","BLA-1-<10-DIGITS>"
+    "BLA","2","BLA-1-<10-DIGITS>"
 
 Clean up:
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser_templates/batchcontainer.pt
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser_templates/batchcontainer.pt	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser_templates/batchcontainer.pt	(revision 6403)
@@ -10,5 +10,5 @@
       <tr>
         <th>&nbsp;</th>
-	<th>Prefix</th><th>Entries/(invalidated)</th><th>Cost</th>
+	<th>Prefix</th><th>Entries</th><th>Cost</th>
 	<th>Created</th><th>Creator</th>
       </tr>
@@ -28,6 +28,4 @@
 	<td>
 	  <span tal:replace="batch/entry_num">1012</span>
-	  /
-	  <span tal:replace="batch/invalidated_num">512</span>
 	</td>
 	<td tal:content="batch/cost">12.12</td>
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser_templates/searchpage.pt
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser_templates/searchpage.pt	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/browser_templates/searchpage.pt	(revision 6403)
@@ -20,5 +20,5 @@
   <div tal:condition="view/searchresults">
     <h3>Search Results</h3>
-    <table>
+    <table class = "zebra">
       <thead>
 	<tr>
@@ -28,11 +28,9 @@
       </thead>
       <tbody>
-	<tr tal:repeat="item view/searchresults"
-	    tal:attributes="class python: repeat['item'].odd() and 'even' or 'odd'">
+	<tr tal:repeat="item view/searchresults">
 	  <td><input type="checkbox" name="entries"
 	             tal:attributes="value item/code" /></td>
 	  <td tal:content="item/serial">1</td>
 	  <td tal:content="item/code">APP-1-1234567890</td>
-	  <td tal:content="item/status">unused</td>
 	</tr>
       </tbody>
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/interfaces.py
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/interfaces.py	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/interfaces.py	(revision 6403)
@@ -12,5 +12,5 @@
         )
     batch_prefix = schema.TextLine(
-        title = u'Prefix inside batch',
+        title = u'Batch prefix',
         )
     batch_num = schema.Int(
@@ -24,14 +24,14 @@
         default = 0.0, min = 0.0,
         )
-    invalidation_date = schema.Datetime(
-        title = u'Datetime of invalidation',
-        required = False,
-        default = None,
-        )
-    student_id = schema.TextLine(
-        title = u'Student ID or registration number',
-        required = False,
-        default = None,
-        )
+    #invalidation_date = schema.Datetime(
+    #    title = u'Datetime of invalidation',
+    #    required = False,
+    #    default = None,
+    #    )
+    #student_id = schema.TextLine(
+    #    title = u'Student ID or registration number',
+    #    required = False,
+    #    default = None,
+    #    )
     representation = schema.TextLine(
         title = u'Complete title of access code',
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/workflow.py
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/workflow.py	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/accesscodes/workflow.py	(revision 6403)
@@ -35,27 +35,27 @@
 DISABLED = 'disabled'
 
-def invalidate_action(wf, context):
-    batch = getattr(context, '__parent__', None)
-    if batch is None:
-        return
-    pin = context.representation
-    batch.invalidate(pin)
-    return
+#def invalidate_action(wf, context):
+#    batch = getattr(context, '__parent__', None)
+#    if batch is None:
+#        return
+#    pin = context.representation
+#    batch.invalidate(pin)
+#    return
 
-def disable_action(wf, context):
-    batch = getattr(context, '__parent__', None)
-    if batch is None:
-        return
-    pin = context.representation
-    batch.disable(pin)
-    return
+#def disable_action(wf, context):
+#    batch = getattr(context, '__parent__', None)
+#    if batch is None:
+#        return
+#    pin = context.representation
+#    batch.disable(pin)
+#    return
 
-def reenable_action(wf, context):
-    batch = getattr(context, '__parent__', None)
-    if batch is None:
-        return
-    pin = context.representation
-    batch.enable(pin)
-    return
+#def reenable_action(wf, context):
+#    batch = getattr(context, '__parent__', None)
+#    if batch is None:
+#        return
+#    pin = context.representation
+#    batch.enable(pin)
+#    return
 
 ACCESSCODE_TRANSITIONS = (
@@ -71,6 +71,6 @@
         title = 'Use PIN',
         source = INITIALIZED,
-        destination = USED,
-        action = invalidate_action),
+        destination = USED),
+        #action = invalidate_action),
 
     Transition(
@@ -78,6 +78,6 @@
         title = 'Disable unused PIN',
         source = INITIALIZED,
-        destination = DISABLED,
-        action = disable_action),
+        destination = DISABLED),
+        #action = disable_action),
 
     Transition(
@@ -85,6 +85,6 @@
         title = 'Disable used PIN',
         source = USED,
-        destination = DISABLED,
-        action = disable_action),
+        destination = DISABLED),
+        #action = disable_action),
 
     Transition(
@@ -92,6 +92,6 @@
         title = 'Reenable disabled PIN',
         source = DISABLED,
-        destination = INITIALIZED,
-        action = reenable_action),
+        destination = INITIALIZED),
+        #action = reenable_action),
     )
 
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/applicants/browser.py
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/applicants/browser.py	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/applicants/browser.py	(revision 6403)
@@ -562,5 +562,5 @@
             code = course_admitted.code
             return '<a href="%s">%s - %s</a>' %(url,code,title)
-        return 'not yet admitted'
+        return ''
 
 class PDFActionButton(ManageActionButton):
Index: main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/applicants/tests/test_authentication.py
===================================================================
--- main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/applicants/tests/test_authentication.py	(revision 6402)
+++ main/waeup.sirp/branches/accesscodes-with-workflow/src/waeup/sirp/applicants/tests/test_authentication.py	(revision 6403)
@@ -51,7 +51,7 @@
 class FakeAccessCode(object):
     def __init__(self, repr, inv_date=None, disabled=False):
-        self.invalidation_date = inv_date
+        #self.invalidation_date = inv_date
         self.representation = repr
-        self.disabled = disabled
+        #self.disabled = disabled
 
 class FakeInvAccessCode(object):
@@ -82,12 +82,12 @@
             'APP': FakeBatch({
                     'APP-12345': FakeAccessCode('APP-12345'),
-                    'APP-54321': FakeAccessCode('APP-54321', True),
+                    #'APP-54321': FakeAccessCode('APP-54321', True),
                     'APP-11111': FakeAccessCode('APP-11111'),
                     'APP-22222': FakeAccessCode('APP-22222'),
-                    'APP-33333': FakeAccessCode('APP-33333', True),
-                    'APP-44444': FakeAccessCode('APP-44444', True),
-                    'APP-55555': FakeAccessCode('APP-55555', True),
-                    'APP-66666': FakeAccessCode('APP-66666', True, False),
-                    'APP-77777': FakeAccessCode('APP-77777', False, False),
+                    #'APP-33333': FakeAccessCode('APP-33333', True),
+                    #'APP-44444': FakeAccessCode('APP-44444', True),
+                    #'APP-55555': FakeAccessCode('APP-55555', True),
+                    #'APP-66666': FakeAccessCode('APP-66666', True, False),
+                    #'APP-77777': FakeAccessCode('APP-77777', False, False),
                     })
             }
@@ -151,20 +151,20 @@
         # Possible cases, where formal correct authentication
         # data is not valid:
-        result = self.plugin.authenticateCredentials(
-            dict(accesscode='APP-33333'))
-        assert result is None
-
-        result = self.plugin.authenticateCredentials(
-            dict(accesscode='APP-55555'))
-        assert result is None
-
-        result = self.plugin.authenticateCredentials(
-            dict(accesscode='APP-66666'))
-        assert result is None
-
-        result = self.plugin.authenticateCredentials(
-            dict(accesscode='APP-77777'))
-        assert result is None
-        return
+        #result = self.plugin.authenticateCredentials(
+        #    dict(accesscode='APP-33333'))
+        #assert result is None
+
+        #esult = self.plugin.authenticateCredentials(
+        #   dict(accesscode='APP-55555'))
+        #assert result is None
+
+        #result = self.plugin.authenticateCredentials(
+        #    dict(accesscode='APP-66666'))
+        #assert result is None
+
+        #result = self.plugin.authenticateCredentials(
+        #    dict(accesscode='APP-77777'))
+        #assert result is None
+        #return
 
     def test_valid_credentials(self):
@@ -181,7 +181,7 @@
         assert result is not None
 
-        result = self.plugin.authenticateCredentials(
-            dict(accesscode='APP-54321'))
-        assert result is not None
+        #result = self.plugin.authenticateCredentials(
+        #    dict(accesscode='APP-54321'))
+        #assert result is not None
 
         # check the `principalInfo` method of authenticator
