Index: main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- main/waeup.kofa/trunk/CHANGES.txt	(revision 15416)
+++ main/waeup.kofa/trunk/CHANGES.txt	(revision 15417)
@@ -4,4 +4,6 @@
 1.6.1.dev0 (unreleased)
 =======================
+
+* Add graduated students filter.
 
 * Backup deleted graduated student data somewhere else to ease graduated
Index: main/waeup.kofa/trunk/src/waeup/kofa/hostels/hostel.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/hostels/hostel.py	(revision 15416)
+++ main/waeup.kofa/trunk/src/waeup/kofa/hostels/hostel.py	(revision 15417)
@@ -260,4 +260,9 @@
                           'accommodation'][str(accommodation_session)]
         except KeyError:
+            self.owner = NOT_OCCUPIED
+            sh, sex, bt = self.bed_type.split('_')
+            bt = u'%s_%s_reserved' % (sh, sex)
+            self.bed_type = bt
+            notify(grok.ObjectModifiedEvent(self))
             return
         if bedticket.maint_payment_made:
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py	(revision 15416)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/batching.py	(revision 15417)
@@ -234,4 +234,5 @@
                 value = row['state']
                 IWorkflowState(obj).setState(value)
+                notify(grok.ObjectModifiedEvent(obj))
                 msg = _("State '${a}' set", mapping = {'a':value})
                 history = IObjectHistory(obj)
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 15416)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 15417)
@@ -263,5 +263,6 @@
         form = self.request.form
         self.hitlist = []
-        if form.get('searchtype', None) in ('suspended', TRANSREQ, TRANSVAL):
+        if form.get('searchtype', None) in (
+            'suspended', TRANSREQ, TRANSVAL, GRADUATED):
             self.searchtype = form['searchtype']
             self.searchterm = None
@@ -305,5 +306,6 @@
         form = self.request.form
         self.hitlist = []
-        if form.get('searchtype', None) in ('suspended', TRANSREQ, TRANSVAL):
+        if form.get('searchtype', None) in (
+            'suspended', TRANSREQ, TRANSVAL, GRADUATED):
             self.searchtype = form['searchtype']
             self.searchterm = None
@@ -374,4 +376,5 @@
         self.context.addStudent(student)
         IWorkflowState(student).setState(GRADUATED)
+        notify(grok.ObjectModifiedEvent(student))
         self.flash(_('Student record created.'))
         self.redirect(self.url(self.context[student.student_id], 'index'))
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/containermanagepage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/containermanagepage.pt	(revision 15416)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/containermanagepage.pt	(revision 15417)
@@ -22,4 +22,7 @@
       <option i18n:translate="" value="transcript validated">
         in state 'transcript validated' (search term omitted)
+      </option>
+      <option i18n:translate="" value="graduated">
+        in state 'graduated' (search term omitted)
       </option>
     </select>
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/containerpage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/containerpage.pt	(revision 15416)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser_templates/containerpage.pt	(revision 15417)
@@ -22,4 +22,7 @@
       <option i18n:translate="" value="transcript validated">
         in state 'transcript validated' (search term omitted)
+      </option>
+      <option i18n:translate="" value="graduated">
+        in state 'graduated' (search term omitted)
       </option>
     </select>
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/catalog.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/catalog.py	(revision 15416)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/catalog.py	(revision 15417)
@@ -29,5 +29,5 @@
 from waeup.kofa.students.interfaces import IStudent, ICourseTicket
 from waeup.kofa.university.vocabularies import course_levels
-from waeup.kofa.students.workflow import (TRANSREQ, TRANSVAL)
+from waeup.kofa.students.workflow import TRANSREQ, TRANSVAL, GRADUATED
 
 class StudentsCatalog(grok.Indexes):
@@ -89,5 +89,5 @@
                 hitlist.append(StudentQueryResultItem(student, view=view))
         return hitlist
-    elif searchtype in (TRANSREQ, TRANSVAL):
+    elif searchtype in (TRANSREQ, TRANSVAL, GRADUATED):
         cat = queryUtility(ICatalog, name='students_catalog')
         results = cat.searchResults(state=(searchtype, searchtype))
