Index: main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- main/waeup.kofa/trunk/CHANGES.txt	(revision 13054)
+++ main/waeup.kofa/trunk/CHANGES.txt	(revision 13055)
@@ -4,4 +4,6 @@
 1.3.2.dev0 (unreleased)
 =======================
+
+* Rename student views which are not layout-aware and thus not pages.
 
 * Register KofaSourceOrderedMultiSelectWidget for IterableSource and
Index: main/waeup.kofa/trunk/docs/source/userdocs/students/browser.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/students/browser.rst	(revision 13054)
+++ main/waeup.kofa/trunk/docs/source/userdocs/students/browser.rst	(revision 13055)
@@ -25,6 +25,6 @@
 users, students and applicants do see a single-column theme with
 only a static top navigation bar. Students can navigate to the
-various display form pages of their record by pulling down the 'My Data'
-in the navigation bar.
+various display form pages of their record by pulling down the 'My
+Data' in the navigation bar.
 
 Officers see a double-column theme after logging in. The left column
@@ -58,5 +58,4 @@
 are called display, edit or add form pages respectively. Kofa is
 using the `Zope Formlib`_ package to auto-generate these forms.
-
 
 .. note::
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/layout.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/layout.py	(revision 13054)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/layout.py	(revision 13055)
@@ -167,5 +167,10 @@
     grok.baseclass()
 
-class KofaForm(UtilityView,Form):
+class KofaPage(UtilityView,Page):
+    """A megrok.layout page with additional methods.
+    """
+    grok.baseclass()
+
+class KofaFormPage(UtilityView,Form):
     """A megrok.layout.Form with additional methods.
     """
@@ -173,14 +178,9 @@
 
     def setUpWidgets(self,ignore_request=False):
-        super(KofaForm,self).setUpWidgets(ignore_request)
+        super(KofaFormPage,self).setUpWidgets(ignore_request)
         # Width parameters will be overridden by Bootstrap
         # so we have to set the css class
         if self.widgets.get('body'):
             self.widgets['body'].height = 10
-
-class KofaPage(UtilityView,Page):
-    """A megrok.layout page with additional methods.
-    """
-    grok.baseclass()
 
 class KofaDisplayFormPage(UtilityView,DisplayForm):
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 13054)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 13055)
@@ -44,5 +44,5 @@
 from waeup.kofa.utils.helpers import html2dict
 from waeup.kofa.browser.layout import (
-    KofaPage, KofaForm, KofaEditFormPage, KofaAddFormPage,
+    KofaPage, KofaFormPage, KofaEditFormPage, KofaAddFormPage,
     KofaDisplayFormPage, NullValidator)
 from waeup.kofa.browser.interfaces import (
@@ -415,5 +415,5 @@
 #
 
-class ContactAdminForm(KofaForm):
+class ContactAdminFormPage(KofaFormPage):
     grok.name('contactadmin')
     #grok.context(IUniversity)
@@ -424,5 +424,5 @@
 
     def update(self):
-        super(ContactAdminForm, self).update()
+        super(ContactAdminFormPage, self).update()
         self.form_fields.get('body').field.default = None
         return
@@ -461,5 +461,5 @@
         return
 
-class EnquiriesForm(ContactAdminForm):
+class EnquiriesFormPage(ContactAdminFormPage):
     """Captcha'd page to let anonymous send emails to the administrator.
     """
@@ -471,5 +471,5 @@
 
     def update(self):
-        super(EnquiriesForm, self).update()
+        super(EnquiriesFormPage, self).update()
         # Handle captcha
         self.captcha = getUtility(ICaptchaManager).getCaptcha()
@@ -843,5 +843,5 @@
         return
 
-class ContactUserForm(ContactAdminForm):
+class ContactUserFormPage(ContactAdminFormPage):
     grok.name('contactuser')
     grok.context(IUserAccount)
@@ -2431,5 +2431,5 @@
         return
 
-class ChangePasswordRequestPage(KofaForm):
+class ChangePasswordRequestPage(KofaFormPage):
     """Captcha'd page for all kind of users to request a password change.
     """
Index: main/waeup.kofa/trunk/src/waeup/kofa/documents/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/documents/browser.py	(revision 13054)
+++ main/waeup.kofa/trunk/src/waeup/kofa/documents/browser.py	(revision 13055)
@@ -39,5 +39,5 @@
 from waeup.kofa.browser.layout import (
     KofaPage, KofaEditFormPage, KofaAddFormPage, KofaDisplayFormPage,
-    KofaForm, NullValidator, jsaction, action, UtilityView)
+    NullValidator, jsaction, action, UtilityView)
 from waeup.kofa.widgets.datewidget import (
     FriendlyDateWidget, FriendlyDateDisplayWidget,
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 13054)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/browser.py	(revision 13055)
@@ -36,8 +36,7 @@
 from waeup.kofa.browser.layout import (
     KofaPage, KofaEditFormPage, KofaAddFormPage, KofaDisplayFormPage,
-    KofaForm, NullValidator,
-    jsaction, action, UtilityView)
+    NullValidator, jsaction, action, UtilityView)
 from waeup.kofa.browser.breadcrumbs import Breadcrumb
-from waeup.kofa.browser.pages import ContactAdminForm, ExportCSVView, doll_up
+from waeup.kofa.browser.pages import ContactAdminFormPage, ExportCSVView, doll_up
 from waeup.kofa.browser.interfaces import ICaptchaManager
 from waeup.kofa.hostels.hostel import NOT_OCCUPIED
@@ -445,5 +444,5 @@
         return form_fields
 
-class ContactStudentForm(ContactAdminForm):
+class ContactStudentFormPage(ContactAdminFormPage):
     grok.context(IStudent)
     grok.name('contactstudent')
@@ -453,5 +452,5 @@
 
     def update(self, subject=u'', body=u''):
-        super(ContactStudentForm, self).update()
+        super(ContactStudentFormPage, self).update()
         self.form_fields.get('subject').field.default = subject
         self.form_fields.get('body').field.default = body
@@ -483,5 +482,5 @@
         return
 
-class ExportPDFAdmissionSlipPage(UtilityView, grok.View):
+class ExportPDFAdmissionSlip(UtilityView, grok.View):
     """Deliver a PDF Admission slip.
     """
@@ -586,5 +585,5 @@
         return
 
-class StudentActivatePage(UtilityView, grok.View):
+class StudentActivateView(UtilityView, grok.View):
     """ Activate student account
     """
@@ -605,5 +604,5 @@
         return
 
-class StudentDeactivatePage(UtilityView, grok.View):
+class StudentDeactivateView(UtilityView, grok.View):
     """ Deactivate student account
     """
@@ -748,5 +747,5 @@
         return
 
-class StudentClearPage(UtilityView, grok.View):
+class StudentClearView(UtilityView, grok.View):
     """ Clear student by clearance officer
     """
@@ -1034,5 +1033,5 @@
 
 class StudentTranscriptRequestPage(KofaPage):
-    """ Page to transcript by student
+    """ Page to request transcript by student
     """
     grok.context(IStudent)
@@ -1198,5 +1197,5 @@
             'a':self.context.student.display_fullname})
 
-class ExportPDFTranscriptPage(UtilityView, grok.View):
+class ExportPDFTranscriptSlip(UtilityView, grok.View):
     """Deliver a PDF slip of the context.
     """
@@ -1217,5 +1216,5 @@
             self.redirect(self.url(self.context))
             return
-        super(ExportPDFTranscriptPage, self).update()
+        super(ExportPDFTranscriptSlip, self).update()
         self.semester_dict = getUtility(IKofaUtils).SEMESTER_DICT
         self.level_dict = level_dict(self.context)
@@ -1347,5 +1346,5 @@
             'b':level_title})
 
-class ExportPDFCourseRegistrationSlipPage(UtilityView, grok.View):
+class ExportPDFCourseRegistrationSlip(UtilityView, grok.View):
     """Deliver a PDF slip of the context.
     """
@@ -1505,5 +1504,5 @@
         return
 
-class ValidateCoursesPage(UtilityView, grok.View):
+class ValidateCoursesView(UtilityView, grok.View):
     """ Validate course list by course adviser
     """
@@ -1531,5 +1530,5 @@
         return
 
-class RejectCoursesPage(UtilityView, grok.View):
+class RejectCoursesView(UtilityView, grok.View):
     """ Reject course list by course adviser
     """
@@ -1845,5 +1844,5 @@
             'b':self.context.p_id})
 
-class OnlinePaymentApprovePage(UtilityView, grok.View):
+class OnlinePaymentApproveView(UtilityView, grok.View):
     """ Callback view
     """
@@ -1870,5 +1869,5 @@
         return
 
-class OnlinePaymentFakeApprovePage(OnlinePaymentApprovePage):
+class OnlinePaymentFakeApproveView(OnlinePaymentApproveView):
     """ Approval view for students.
 
@@ -1876,9 +1875,8 @@
     must be neutralized in custom pages!
     """
-
     grok.name('fake_approve')
     grok.require('waeup.payStudent')
 
-class ExportPDFPaymentSlipPage(UtilityView, grok.View):
+class ExportPDFPaymentSlip(UtilityView, grok.View):
     """Deliver a PDF slip of the context.
     """
@@ -2146,5 +2144,5 @@
             mapping = {'a':self.context.getSessionString()})
 
-class ExportPDFBedTicketSlipPage(UtilityView, grok.View):
+class ExportPDFBedTicketSlip(UtilityView, grok.View):
     """Deliver a PDF slip of the context.
     """
@@ -2184,5 +2182,5 @@
             omit_fields=self.omit_fields)
 
-class BedTicketRelocationPage(UtilityView, grok.View):
+class BedTicketRelocationView(UtilityView, grok.View):
     """ Callback view
     """
@@ -3033,5 +3031,5 @@
         return list(set(hitlist))
 
-class ClearAllStudentsInDepartmentPage(UtilityView, grok.View):
+class ClearAllStudentsInDepartmentView(UtilityView, grok.View):
     """ Clear all students of a department in state 'clearance requested'.
     """
Index: main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 13054)
+++ main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_browser.py	(revision 13055)
@@ -944,5 +944,5 @@
         logcontent = open(logfile).read()
         self.assertTrue(
-            'zope.mgr - students.browser.OnlinePaymentApprovePage '
+            'zope.mgr - students.browser.OnlinePaymentApproveView '
             '- K1000000 - schoolfee payment approved'
             in logcontent)
@@ -1079,5 +1079,5 @@
         logcontent = open(logfile).read()
         self.assertTrue(
-            'zope.mgr - students.browser.OnlinePaymentApprovePage '
+            'zope.mgr - students.browser.OnlinePaymentApproveView '
             '- K1000000 - schoolfee payment approved'
             in logcontent)
@@ -1246,5 +1246,5 @@
         # Relocation is properly logged
         logcontent = open(logfile).read()
-        self.assertTrue('zope.mgr - students.browser.BedTicketRelocationPage '
+        self.assertTrue('zope.mgr - students.browser.BedTicketRelocationView '
             '- K1000000 - relocated: hall-1_A_101_B' in logcontent)
         # The payment object still shows the original payment item
@@ -1942,7 +1942,7 @@
             self.app['datacenter'].storage, 'logs', 'students.log')
         logcontent = open(logfile).read()
-        self.assertTrue('zope.mgr - students.browser.StudentDeactivatePage - '
+        self.assertTrue('zope.mgr - students.browser.StudentDeactivateView - '
                         'K1000000 - account deactivated' in logcontent)
-        self.assertTrue('zope.mgr - students.browser.StudentActivatePage - '
+        self.assertTrue('zope.mgr - students.browser.StudentActivateView - '
                         'K1000000 - account activated' in logcontent)
 
