Index: WAeUP_SRP/trunk/Academics.py
===================================================================
--- WAeUP_SRP/trunk/Academics.py	(revision 360)
+++ WAeUP_SRP/trunk/Academics.py	(revision 361)
@@ -22,4 +22,13 @@
 p_home = Globals.package_home(globals())
 i_home = Globals.INSTANCE_HOME
+
+def makeCertificateCode(code):
+    code = code.replace('.','')
+    code = code.replace('(','')
+    code = code.replace(')','')
+    code = code.replace('/','')
+    code = code.replace(' ','')
+    code = code.replace('_','')
+    return code
 
 class AcademicsFolder(CPSDocument): ###(
@@ -272,11 +281,5 @@
             dep = deps[depid]
             certificates = dep.certificates
-            code = certificate.get('CertCode')
-            code = code.replace('.','')
-            code = code.replace('(','')
-            code = code.replace(')','')
-            code = code.replace('/','')
-            code = code.replace(' ','')
-            code = code.replace('_','')
+            code = makeCertificateCode(certificate.get('CertCode'))
             certificate_id = code
             c = getattr(certificates,certificate_id,None)
Index: WAeUP_SRP/trunk/Students.py
===================================================================
--- WAeUP_SRP/trunk/Students.py	(revision 360)
+++ WAeUP_SRP/trunk/Students.py	(revision 361)
@@ -13,20 +13,89 @@
 from Products.CPSCore.CPSBase import CPSBaseBTreeFolder as BaseBTreeFolder
 from Products.CPSCore.CPSMembershipTool import CPSUnrestrictedUser
-##class StudentsFolder(BaseBTreeFolder): ###(
-##    """
-##    WAeUP container for the various WAeUP containers data
-##    """
-##    meta_type = 'Students Folder'
-##    portal_type = meta_type
-##    security = ClassSecurityInfo()
-##
-##
-##InitializeClass(StudentsFolder)
-
-##def addStudentsFolder(container, id, REQUEST=None, **kw):
-##    """Add a Student."""
-##    ob = StudentsFolder(id, **kw)
-##    return CPSBase_adder(container, ob, REQUEST=REQUEST)
-#####)
+from Products.WAeUP_SRP.Academics import makeCertificateCode
+
+class StudentsFolder(CPSDocument): ###(
+    """
+    WAeUP container for the various WAeUP containers data
+    """
+    meta_type = 'Students Folder'
+    portal_type = meta_type
+    security = ClassSecurityInfo()
+
+    security.declareProtected(ModifyPortalContent,"loadFullTimeStudentsFromCSV")###(
+    def loadFullTimeStudentsFromCSV(self):
+        """load Fulltime Studentdata from CSV values"""
+        #return
+        name = 'short_full_time'
+        no_import = False
+        logger = logging.getLogger('%s_import' % name)
+        logger.info('Start loading from %s.csv' % name)
+        students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()
+        try:
+            students = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
+        except:
+            logger.error('Error reading %s.csv' % name)
+            return
+        l = self.portal_catalog({'meta_type': "Student"})
+        studs = {}
+        for s in l:
+            studs[s.id] = s.getObject()
+        l = self.portal_catalog({'meta_type': "Certificate"})
+        certs = {}
+        for c in l:
+            certs[s.id] = c.getObject()
+        for student in students:
+            logger.info('processing "%(MatricNo)s","%(EntryRegNo)s","%(CurrentSession)s","%(StudentLevel)s","%(fullname)s","%(FirstName)s","%(MiddleName)s","%(Lastname)s","%(FormerSurname)s","%(Sex)s","%(Nationality)s","%(State)s","%(LGA)s","%(PermanentAddress)s","%(PermanentAddressCity)s","%(CampusAddress)s","%(PhoneNumber)s","%(Emailaddress)s","%(Mode)s","%(CourseMajor)s","%(Faculty)s","%(Dept)s"' % student)
+            sid = student.get('MatricNo')
+            certcode = makeCertificateCode(student.get('CourseMajor'))
+            s = studs.get(sid,None)
+            if certcode not in certs.keys():
+                em = 'Certificate with ID %s %s not found' % (certcode, student.get('CourseMajor'))
+                if not no_import:
+                    no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
+                    no_import.write('"MatricNo","EntryRegNo","CurrentSession","StudentLevel","fullname","FirstName","MiddleName","Lastname","FormerSurname","Sex","Nationality","State","LGA","PermanentAddress","PermanentAddressCity","CampusAddress","PhoneNumber","Emailaddress","Mode","CourseMajor","Faculty","Dept"\n')
+                logger.info(em)
+                no_import.write('"%(MatricNo)s","%(EntryRegNo)s","%(CurrentSession)s","%(StudentLevel)s","%(fullname)s","%(FirstName)s","%(MiddleName)s","%(Lastname)s","%(FormerSurname)s","%(Sex)s","%(Nationality)s","%(State)s","%(LGA)s","%(PermanentAddress)s","%(PermanentAddressCity)s","%(CampusAddress)s","%(PhoneNumber)s","%(Emailaddress)s","%(Mode)s","%(CourseMajor)s","%(Faculty)s","%(Dept)s"' % student)
+                continue
+            if s is None:
+                #self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
+                logger.info('Creating Student with ID %(MatricNo)s %(fullname)s' % faculty)
+                students_folder.invokeFactory('Student', sid)
+                s = getattr(self,sid)
+                s.invokeFactory('StudentPersonal','personal')
+                sp = getattr(self,sid)
+                d = {'Title': 'Personal Data'}
+                d['fullname'] = student.get('fullname')
+                d['firstname'] = student.get('FirstName')
+                d['middlename'] = student.get('MiddleName')
+                d['lastname'] = student.get('LastName')
+                d['former_surname'] = student.get('FormerSurname')
+                d['sex'] = student.get('Sex') == 'M'
+                d['nationality'] = student.get('Nationality')
+                d['state'] = student.get('State') 
+                d['lga'] = student.get('LGA') 
+                d['street'] = student.get('PermanentAddress')
+                d['city'] = student.get('PermanentAddressCity')
+                d['campus_address'] = student.get('CampusAddress')
+                d['phone'] = student.get('PhoneNumber')
+                d['email'] = student.get('EmailAddress')
+                f.getContent().edit(mapping=d)
+            else:
+                em = 'Faculty with ID %(MatricNo)s %(fullname)s already exists' % student
+                if not no_import:
+                    no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
+                    no_import.write('"MatricNo","EntryRegNo","CurrentSession","StudentLevel","fullname","FirstName","MiddleName","Lastname","FormerSurname","Sex","Nationality","State","LGA","PermanentAddress","PermanentAddressCity","CampusAddress","PhoneNumber","Emailaddress","Mode","CourseMajor","Faculty","Dept"\n')
+                logger.info(em)
+                no_import.write('"%(MatricNo)s","%(EntryRegNo)s","%(CurrentSession)s","%(StudentLevel)s","%(fullname)s","%(FirstName)s","%(MiddleName)s","%(Lastname)s","%(FormerSurname)s","%(Sex)s","%(Nationality)s","%(State)s","%(LGA)s","%(PermanentAddress)s","%(PermanentAddressCity)s","%(CampusAddress)s","%(PhoneNumber)s","%(Emailaddress)s","%(Mode)s","%(CourseMajor)s","%(Faculty)s","%(Dept)s"' % student)
+        return self.students.folder_contents()
+    ###)
+
+InitializeClass(StudentsFolder)
+
+def addStudentsFolder(container, id, REQUEST=None, **kw):
+    """Add a Student."""
+    ob = StudentsFolder(id, **kw)
+    return CPSBase_adder(container, ob, REQUEST=REQUEST)
+###)
 
 class Student(CPSDocument): ###(
Index: WAeUP_SRP/trunk/__init__.py
===================================================================
--- WAeUP_SRP/trunk/__init__.py	(revision 360)
+++ WAeUP_SRP/trunk/__init__.py	(revision 361)
@@ -26,4 +26,5 @@
 from Products.WAeUP_SRP.Academics import CourseTicket, addCourseTicket
 from Products.WAeUP_SRP.Academics import CertificateCourse, addCertificateCourse
+from Products.WAeUP_SRP.Students import StudentsFolder, addStudentsFolder
 from Products.WAeUP_SRP.Students import Student, addStudent
 from Products.WAeUP_SRP.Students import StudentPersonal, addStudentPersonal
@@ -49,4 +50,5 @@
     AccoFolder,
     Accommodation,
+    StudentsFolder,
     Student,
     StudentPersonal,
@@ -70,4 +72,5 @@
     addAccoFolder,
     addAccommodation,
+    addStudentsFolder,
     addStudent,
     addStudentPersonal,
@@ -91,4 +94,5 @@
     {}, # AccoFolder
     {}, # Accommodation
+    {}, # StudentsFolder,
     {}, # Student,
     {}, # StudentPersonal,
Index: WAeUP_SRP/trunk/profiles/default/schemas.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/schemas.xml	(revision 360)
+++ WAeUP_SRP/trunk/profiles/default/schemas.xml	(revision 361)
@@ -17,5 +17,4 @@
  <object name="student_admission" meta_type="CPS Schema"/>
  <object name="student_clearance" meta_type="CPS Schema"/>
- <object name="student_clearence" meta_type="CPS Schema"/>
  <object name="student_documents" meta_type="CPS Schema"/>
  <object name="student_eligibility" meta_type="CPS Schema"/>
Index: WAeUP_SRP/trunk/profiles/default/schemas/student_clearence.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/schemas/student_clearence.xml	(revision 360)
+++ 	(revision )
@@ -1,21 +1,0 @@
-<?xml version="1.0"?>
-<object name="student_clearence" meta_type="CPS Schema">
- <field name="lastname" meta_type="CPS String Field">
-  <property name="is_searchabletext">True</property>
- </field>
- <field name="reg_nr" meta_type="CPS String Field">
-  <property name="is_searchabletext">True</property>
- </field>
- <field name="sc_id" meta_type="CPS String Field">
-  <property name="is_searchabletext">True</property>
-  <property name="acl_write_roles">SectionReader</property>
- </field>
- <field name="sc_pin" meta_type="CPS String Field">
-  <property name="is_searchabletext">True</property>
-  <property name="acl_write_roles">SectionReader</property>
- </field>
- <field name="sc_value" meta_type="CPS Float Field">
-  <property name="default_expr">python:800.</property>
-  <property name="is_searchabletext">True</property>
- </field>
-</object>
Index: WAeUP_SRP/trunk/profiles/default/schemas/student_personal.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/schemas/student_personal.xml	(revision 360)
+++ WAeUP_SRP/trunk/profiles/default/schemas/student_personal.xml	(revision 361)
@@ -1,20 +1,31 @@
 <?xml version="1.0"?>
 <object name="student_personal" meta_type="CPS Schema">
- <field name="age" meta_type="CPS DateTime Field"/>
  <field name="birthday" meta_type="CPS DateTime Field"/>
+ <field name="campus_address" meta_type="CPS String Field"/>
+ <field name="city" meta_type="CPS String Field"/>
  <field name="email" meta_type="CPS String Field">
   <property name="is_searchabletext">True</property>
  </field>
+ <field name="entry_reg_no" meta_type="CPS String Field"/>
  <field name="firstname" meta_type="CPS String Field">
   <property name="is_searchabletext">True</property>
  </field>
+ <field name="former_surname" meta_type="CPS String Field">
+  <property name="is_searchabletext">True</property>
+ </field>
+ <field name="fullname" meta_type="CPS String Field"/>
  <field name="lastname" meta_type="CPS String Field">
   <property name="is_searchabletext">True</property>
  </field>
+ <field name="lga" meta_type="CPS String Field"/>
+ <field name="matricel_nr" meta_type="CPS String Field"/>
  <field name="middlename" meta_type="CPS String Field">
   <property name="is_searchabletext">True</property>
  </field>
+ <field name="nationality" meta_type="CPS String Field"/>
+ <field name="phone" meta_type="CPS Boolean Field"/>
  <field name="sex" meta_type="CPS Boolean Field"/>
- <field name="username" meta_type="CPS String Field">
+ <field name="state" meta_type="CPS String Field"/>
+ <field name="street" meta_type="CPS String Field">
   <property name="is_searchabletext">True</property>
  </field>
Index: WAeUP_SRP/trunk/profiles/default/types/StudentsFolder.xml
===================================================================
--- WAeUP_SRP/trunk/profiles/default/types/StudentsFolder.xml	(revision 360)
+++ WAeUP_SRP/trunk/profiles/default/types/StudentsFolder.xml	(revision 361)
@@ -41,7 +41,5 @@
  <action title="Add JAMB Data" action_id="add_jamb" category="object"
     condition_expr="" url_expr="string:${object/absolute_url}/create_jamb"
-    visible="True">
-  <permission value="University Manage"/>
- </action>
+    visible="True"/>
  <action title="Check Admission Status" action_id="check_admission"
     category="object"
@@ -68,6 +66,8 @@
  <action title="action_folder_contents" action_id="contents" category="object"
     condition_expr="" url_expr="string:${object/absolute_url}/folder_contents"
-    visible="False">
-  <permission value="University Manage"/>
- </action>
+    visible="False"/>
+ <action title="import fulltime students" action_id="import_fulltime"
+    category="import" condition_expr=""
+    url_expr="string:${object_url}/loadFullTimeStudentsFromCSV"
+    visible="True"/>
 </object>
Index: WAeUP_SRP/trunk/skins/waeup_custom/getCPSCandidateLocalRoles.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_custom/getCPSCandidateLocalRoles.py	(revision 360)
+++ WAeUP_SRP/trunk/skins/waeup_custom/getCPSCandidateLocalRoles.py	(revision 361)
@@ -18,3 +18,3 @@
 mtool = getToolByName(context, 'portal_membership')
 #return mtool.getCPSCandidateLocalRoles(context)
-return ['SectionReader','SectionManager']
+return ['Manager','SectionReader','SectionManager']
Index: WAeUP_SRP/trunk/skins/waeup_custom/getContentInfo.py
===================================================================
--- WAeUP_SRP/trunk/skins/waeup_custom/getContentInfo.py	(revision 360)
+++ WAeUP_SRP/trunk/skins/waeup_custom/getContentInfo.py	(revision 361)
@@ -200,8 +200,8 @@
     info['type_l10n'] = cpsmcat(proxy.getTypeInfo().Title())
 else:
-    LOG("getContentInfo() pb getting Type Information",
-        DEBUG,
-        'Proxy :',
-        proxy)
+##    LOG("getContentInfo() pb getting Type Information",
+##        DEBUG,
+##        'Proxy :',
+##        proxy)
     info['type_l10n'] = ''
 info['review_state'] = wtool.getInfoFor(proxy, 'review_state', '')
