Index: main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- main/waeup.kofa/trunk/CHANGES.txt	(revision 14946)
+++ main/waeup.kofa/trunk/CHANGES.txt	(revision 14948)
@@ -4,4 +4,6 @@
 1.6.dev0 (unreleased)
 =======================
+
+* Add `CreateStudents` permission and `StudentsCreator` role.
 
 * Do not allow uploading data with trailing whitespaces.
Index: main/waeup.kofa/trunk/docs/source/userdocs/security.rst
===================================================================
--- main/waeup.kofa/trunk/docs/source/userdocs/security.rst	(revision 14946)
+++ main/waeup.kofa/trunk/docs/source/userdocs/security.rst	(revision 14948)
@@ -107,4 +107,7 @@
    :noindex:
 
+.. autoclass:: waeup.kofa.applicants.permissions.CreateStudents()
+   :noindex:
+
 Students Section Permissions
 ----------------------------
@@ -209,4 +212,7 @@
 
 .. autoclass:: waeup.kofa.applicants.permissions.ApplicationsManager()
+   :noindex:
+
+.. autoclass:: waeup.kofa.applicants.permissions.StudentsCreator()
    :noindex:
 
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 14946)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/browser.py	(revision 14948)
@@ -664,5 +664,5 @@
     grok.context(IApplicant)
     grok.name('createstudent')
-    grok.require('waeup.manageStudent')
+    grok.require('waeup.createStudents')
 
     def update(self):
@@ -685,5 +685,5 @@
     #grok.context(IApplicantsContainer)
     grok.name('createallstudents')
-    grok.require('waeup.managePortal')
+    grok.require('waeup.createStudents')
 
     def update(self):
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/permissions.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/permissions.py	(revision 14946)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/permissions.py	(revision 14948)
@@ -57,4 +57,10 @@
     grok.name('waeup.payApplicant')
 
+class CreateStudents(grok.Permission):
+    """The CreateStudents permission allows to create a bunch student
+    records from application records.
+    """
+    grok.name('waeup.createStudents')
+
 # Local role
 
@@ -96,2 +102,12 @@
     grok.permissions('waeup.manageApplication', 'waeup.viewApplication',
                      'waeup.viewApplicantsTab', 'waeup.payApplicant')
+
+class StudentsCreator(grok.Role):
+    """The Students Creator is allowed to create a bunch of student 
+    records from application records.
+    """
+    grok.name('waeup.StudentsCreator')
+    grok.title(u'Students Creator')
+    grok.permissions('waeup.viewApplication',
+                     'waeup.viewApplicantsTab',
+                     'waeup.createStudents')
Index: main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py	(revision 14946)
+++ main/waeup.kofa/trunk/src/waeup/kofa/applicants/viewlets.py	(revision 14948)
@@ -180,5 +180,5 @@
     grok.context(IApplicantsRoot)
     grok.view(ApplicantsRootPage)
-    grok.require('waeup.managePortal')
+    grok.require('waeup.createStudents')
     icon = 'actionicon_entrance.png'
     text = _('Create students')
@@ -193,5 +193,5 @@
     grok.context(IApplicantsContainer)
     grok.view(ApplicantsContainerPage)
-    grok.require('waeup.managePortal')
+    grok.require('waeup.createStudents')
     icon = 'actionicon_entrance.png'
     text = _('Create students')
@@ -257,5 +257,5 @@
     grok.order(4)
     grok.context(IApplicant)
-    grok.require('waeup.manageApplication')
+    grok.require('waeup.createStudents')
     icon = 'actionicon_entrance.png'
     text = _('Create student')
Index: main/waeup.kofa/trunk/src/waeup/kofa/doctests/permissions.txt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/doctests/permissions.txt	(revision 14946)
+++ main/waeup.kofa/trunk/src/waeup/kofa/doctests/permissions.txt	(revision 14948)
@@ -39,8 +39,8 @@
     >>> from waeup.kofa.permissions import get_waeup_roles
     >>> len(list(get_waeup_roles()))
-    27
+    28
 
     >>> len(list(get_waeup_roles(also_local=True)))
-    48
+    49
 
 
@@ -74,4 +74,5 @@
      u'waeup.StudentsClearanceOfficer',
      u'waeup.StudentsCourseAdviser',
+     u'waeup.StudentsCreator',
      u'waeup.StudentsManager',
      u'waeup.StudentsOfficer',
Index: main/waeup.kofa/trunk/src/waeup/kofa/permissions.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 14946)
+++ main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 14948)
@@ -566,5 +566,5 @@
                      'waeup.clearStudentFinancially',  # not used in base pkg
                      'waeup.uploadStudentFile', 'waeup.showStudents',
-                     'waeup.clearAllStudents',
+                     'waeup.clearAllStudents', 'waeup.createStudents',
                      'waeup.editScores',
                      'waeup.triggerTransition',
@@ -614,5 +614,5 @@
         'waeup.clearStudent', 'waeup.payStudent',
         'waeup.uploadStudentFile', 'waeup.showStudents',
-        'waeup.clearAllStudents',
+        'waeup.clearAllStudents', 'waeup.createStudents',
         'waeup.editScores',
         # 'waeup.triggerTransition',
Index: main/waeup.kofa/trunk/src/waeup/kofa/utils/tests/test_helpers.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/utils/tests/test_helpers.py	(revision 14946)
+++ main/waeup.kofa/trunk/src/waeup/kofa/utils/tests/test_helpers.py	(revision 14948)
@@ -533,5 +533,5 @@
             'some text that \n'
             '\n'      # this empty line will break
-            'is not a csv file \n' + chr(0x92) + '\n'
+            'is not a csv file\n' + chr(0x92) + '\n'
             ).splitlines()
         self.assertEqual(helpers.check_csv_charset(csv), 2)
