Index: main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- main/waeup.kofa/trunk/CHANGES.txt	(revision 12843)
+++ main/waeup.kofa/trunk/CHANGES.txt	(revision 12844)
@@ -4,4 +4,8 @@
 1.3.2.dev0 (unreleased)
 =======================
+
+* Add ReportsManager role.
+
+* Do not automatically allow ImportManagers to import user data.
 
 * Skip empty rows produced by spreadsheet software.
Index: main/waeup.kofa/trunk/docs/source/userdocs/security.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/security.rst	(revision 12843)
+++ main/waeup.kofa/trunk/docs/source/userdocs/security.rst	(revision 12844)
@@ -60,4 +60,7 @@
    :noindex:
 
+.. autoclass:: waeup.kofa.reports.ManageReports()
+   :noindex:
+
 Application Section Permissions
 -------------------------------
@@ -127,5 +130,6 @@
 Many global roles do only bundle one or two permissions. The objective behind is to share responsibilities and distribute tasks.
 
-The highly specialized roles are:
+Global General Roles
+--------------------
 
 .. autoclass:: waeup.kofa.permissions.AcademicsOfficer()
@@ -153,10 +157,46 @@
    :noindex:
 
+.. autoclass:: waeup.kofa.reports.ReportsManager()
+   :noindex:
+
 In contrast to these specialized sets of permissions, there are two sets which delegate extensive powers on portal managers. 
 
-.. autoclass:: waeup.kofa.permissions.PortalManager
+.. autoclass:: waeup.kofa.permissions.PortalManager()
    :noindex:
 
 .. autoclass:: waeup.kofa.permissions.CCOfficer()
+   :noindex:
+
+Global Application Section Roles
+--------------------------------
+
+.. autoclass:: waeup.kofa.applicants.permissions.ApplicantRole()
+   :noindex:
+
+.. autoclass:: waeup.kofa.applicants.permissions.ApplicationsOfficer()
+   :noindex:
+
+.. autoclass:: waeup.kofa.applicants.permissions.ApplicationsManager()
+   :noindex:
+
+Global Student Section Roles
+----------------------------
+
+.. autoclass:: waeup.kofa.students.permissions.StudentRole()
+   :noindex:
+
+.. autoclass:: waeup.kofa.students.permissions.StudentsOfficer()
+   :noindex:
+
+.. autoclass:: waeup.kofa.students.permissions.StudentsManager()
+   :noindex:
+
+.. autoclass:: waeup.kofa.students.permissions.StudentsClearanceOfficer()
+   :noindex:
+
+.. autoclass:: waeup.kofa.students.permissions.StudentsCourseAdviser()
+   :noindex:
+
+.. autoclass:: waeup.kofa.students.permissions.StudentImpersonator()
    :noindex:
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/permissions.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 12843)
+++ main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 12844)
@@ -23,6 +23,6 @@
 
 class Public(grok.Permission):
-    """The everyone-can-do-this-permission is being applied to views/pages
-    that are used by everyone.
+    """The Public or everyone-can-do-this-permission is being applied
+    to views/pages that are used by everyone.
     """
     grok.name('waeup.Public')
@@ -30,6 +30,6 @@
 class Anonymous(grok.Permission):
     """The Anonymous permission is applied to
-    views/pages which are dedicated to anonymous users only. Logged-in users
-    can't access these views.
+    views/pages which are dedicated to anonymous users only.
+    Logged-in users can't access these views.
     """
     grok.name('waeup.Anonymous')
@@ -49,5 +49,5 @@
 
 class ManageAcademics(grok.Permission):
-    """The ManageAcademics permission is applied to all edit
+    """The ManageAcademics permission is applied to all edit/manage
     pages in the Academic Section. Users who have this permission
     can change/edit context objects.
@@ -57,6 +57,6 @@
 class ManagePortal(grok.Permission):
     """The ManagePortal permission is used for very few pages
-    (e.g. the DatacenterSettings page) and is dedicated to portal managers.
-    It is furthermore used to control delete methods of container
+    (e.g. the DatacenterSettings page). Only PortalManagers have this 
+    permission. It is furthermore used to control delete methods of container
     pages in the Academic Section. The ManageAcademics permission,
     described above, does enable users to edit content but not to
@@ -72,6 +72,6 @@
     user accounts. Editing a user account includes the option to assign
     or remove roles. That means that a user with this permission can lock out
-    other users by either removing their account or by removing all
-    permsissions. Only the system administrator will be able to revert this.
+    other users by either removing their account or by removing 
+    permissions.
     """
     grok.name('waeup.manageUsers')
@@ -83,5 +83,5 @@
     export the data as csv files.
 
-    Bursary or Department Officers don't have the general ExportData
+    Bursary or Department Officers don't have the ExportData
     permission (see Roles section) and are only allowed to export bursary
     or payments overview data respectively.
@@ -91,5 +91,5 @@
 class ClearAllStudents(grok.Permission):
     """The ClearAllStudents permission allows to clear all students
-    in a department.
+    in a department at one sweep.
     """
     grok.name('waeup.clearAllStudents')
@@ -114,5 +114,6 @@
 class ManageDataCenter(grok.Permission):
     """The ManageDataCenter permission allows to access all pages
-    in the data center. It does not automatically allow to process data.
+    in the Data Center and to upload files. It does not automatically
+    allow to process uploaded data.
     """
     grok.name('waeup.manageDataCenter')
@@ -120,12 +121,11 @@
 class ImportData(grok.Permission):
     """The ImportData permission allows to batch process (import) any kind of 
-    portal data except for user data. This processor requires the ManageUsers
-    permission too.
+    portal data except for user data. This User Data processor
+    requires also the ManageUsers permission.
     """
     grok.name('waeup.importData')
 
 class ExportData(grok.Permission):
-    """The ExportData permission allows to export any kind of portal
-    data.
+    """The ExportData permission allows to export any kind of portal data.
     """
     grok.name('waeup.exportData')
@@ -340,5 +340,5 @@
 # Site Roles
 class AcademicsOfficer(grok.Role):
-    """An Academics Officer can  can view but not edit data in the
+    """An Academics Officer can view but not edit data in the
     Academics Section. 
 
@@ -353,5 +353,5 @@
 class AcademicsManager(grok.Role):
     """An Academics Manager can view and edit all data in the
-    Academics section. A user with this role can access all manage pages
+    Academics Section, i.e. access all manage pages
     at faculty, department, course, certificate and certificate course level.
     """
@@ -364,5 +364,6 @@
 class ACManager(grok.Role):
     """This is the role for Access Code Managers.
-    An ACManager can view and manage the Accesscodes Section.
+    An ACManager can view and manage the Accesscodes Section, see
+    ManageACBatches permission above.
     """
     grok.name('waeup.ACManager')
@@ -373,6 +374,6 @@
     """This single-permission role is dedicated to those users
     who are charged with batch processing of portal data.
-    A DataCenterManager manager can access all pages in the Data Center
-    (see ManageDataCenter permission above).
+    A DataCenterManager manager can access all pages in the Data Center,
+    see ManageDataCenter permission above.
     """
     grok.name('waeup.DataCenterManager')
@@ -385,5 +386,5 @@
     available except for the User Processor. This processor requires the
     UsersManager role too. The ImportManager role includes the
-    DataCenterManager role.
+    DataCenterManager role but not vice versa.
     """
     grok.name('waeup.ImportManager')
@@ -395,5 +396,5 @@
     """An ExportManager is a DataCenterManager who is also allowed
     to export all kind of portal data. The ExportManager role includes the
-    DataCenterManager role.
+    DataCenterManager role but not vice versa.
     """
     grok.name('waeup.ExportManager')
@@ -404,5 +405,5 @@
 class BursaryOfficer(grok.Role):
     """BursaryOfficers can export bursary data. They can't access the
-    Data Center but see export buttons in the Academic Section.
+    Data Center but see student data export buttons in the Academic Section.
     """
     grok.name('waeup.BursaryOfficer')
@@ -413,5 +414,7 @@
 
 class UsersManager(grok.Role):
-    """See ManageUsers permission.
+    """A UsersManager can add, remove or edit
+    user accounts, see ManageUsers permission for further information.
+    Be very careful with this role.
     """
     grok.name('waeup.UsersManager')
@@ -421,5 +424,7 @@
 
 class WorkflowManager(grok.Role):
-    """See TriggerTransition permission.
+    """The WorkflowManager can trigger workflow transitions
+    of student and document objects, see TriggerTransition permission
+    for further information.
     """
     grok.name('waeup.WorkflowManager')
@@ -430,8 +435,8 @@
     """The portal manager role is the maximum set of Kofa permissions
     which are needed to manage the entire portal. This set must not
-    be changed or customized. It is recommended to assign this role only
-    to only a few portal administrators. A less dangerous manager role is the
-    CCOfficer role described below. For the most tasks the CCOfficer role
-    is sufficient.
+    be customized. It is recommended to assign this role only
+    to a few certified Kofa administrators.
+    A less dangerous manager role is the CCOfficer role described below.
+    For the most tasks the CCOfficer role is sufficient.
     """
     grok.name('waeup.PortalManager')
@@ -474,6 +479,6 @@
     or StudentImpersonator.
 
-    CCOfficer is a base class which means that this role is meant
-    for customization. It is not used in the `waeup.kofa` base package.
+    CCOfficer is a base class which means that this role is subject to
+    customization. It is not used in the ``waeup.kofa`` base package.
     """
     grok.baseclass()
Index: main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt	(revision 12843)
+++ main/waeup.kofa/trunk/src/waeup/kofa/permissions.txt	(revision 12844)
@@ -39,8 +39,8 @@
     >>> from waeup.kofa.permissions import get_waeup_roles
     >>> len(list(get_waeup_roles()))
-    24
+    25
 
     >>> len(list(get_waeup_roles(also_local=True)))
-    45
+    46
 
 
@@ -67,4 +67,5 @@
      u'waeup.ImportManager',
      u'waeup.PortalManager',
+     u'waeup.ReportsManager',
      u'waeup.Student',
      u'waeup.StudentImpersonator',
Index: main/waeup.kofa/trunk/src/waeup/kofa/reports.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/reports.py	(revision 12843)
+++ main/waeup.kofa/trunk/src/waeup/kofa/reports.py	(revision 12844)
@@ -139,8 +139,15 @@
     """
 
-class manageReportsPermission(grok.Permission):
-    """A permission to manage reports.
+class ManageReports(grok.Permission):
+    """The ManageReports permission allows to view, add and remove reports.
     """
     grok.name('waeup.manageReports')
+
+class ReportsManager(grok.Role):
+    """The ReportsManager has the permission to manage reports.
+    """
+    grok.name('waeup.ReportsManager')
+    grok.title(u'Reports Manager')
+    grok.permissions('waeup.manageReports')
 
 def get_generators():
