Changeset 1593 for WAeUP_SRP/branches


Ignore:
Timestamp:
19 Mar 2007, 18:57:54 (18 years ago)
Author:
uli
Message:

Merged current trunk into uli-branch.

Location:
WAeUP_SRP/branches/uli
Files:
5 deleted
85 edited
9 copied

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/branches/uli/Academics.py

    r1146 r1593  
    5151    def importLocalRoles(self,portal_type): ###(
    5252        name = '%sLocalRoles' % portal_type
    53         logger = logging.getLogger('Import.%s' % name)
     53        logger = logging.getLogger('Academics.AcademicsFolder.importLocalRoles')
    5454        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    5555        logger.info('Start importing %(name)s to %(name)s_%(current)s.csv' % vars())
     
    7474                        member_id = r.split(':')[1]
    7575                        odict[obj_id].manage_setLocalRoles(member_id, roles_dict[r])
    76                         logger.info('importing role for %s %s %s' % (obj_id, member_id,roles_dict[r]))
     76                        logger.info('Importing role for %s %s %s' % (obj_id, member_id,roles_dict[r]))
    7777
    7878###)
     
    8787        name = 'Faculties'
    8888        no_import = False
    89         logger = logging.getLogger('Import.%s_csv' % name)
     89        logger = logging.getLogger('Academics.AcademicsFolder.loadFacultiesFromCSV')
    9090        logger.info('Start loading from %s.csv' % name)
    9191        academics = self.portal_catalog({'meta_type': 'AcademicsFolder'})[-1].getObject()
     
    134134        name = 'Departments'
    135135        no_import = False
    136         logger = logging.getLogger('Import.Departments')
     136        logger = logging.getLogger('Academics.AcademicsFolder.loadDepartmentsFromCSV')
    137137        fields = ("code",
    138138                  "review_state",
     
    191191        name = 'Courses'
    192192        no_import = False
    193         logger = logging.getLogger('Import.Courses')
     193        logger = logging.getLogger('Academics.AcademicsFolder.loadCoursesFromCSV')
    194194        fields = ("code",
    195195                  "review_state",
     
    296296        wf = self.portal_workflow
    297297        no_import_list = []
    298         logger = logging.getLogger('Import.Certificates')
     298        logger = logging.getLogger('Academics.AcademicsFolder.loadCertificatesFromCSV')
    299299        fields = ("code",
    300300                  "review_state",
     
    374374        """install Certificate Courses from CSV values"""
    375375        #return
    376         logger = logging.getLogger('Import.CertificateCourses')
     376        logger = logging.getLogger('Academics.AcademicsFolder.loadCertificateCoursesFromCSV')
    377377        name = 'CertificateCourses'
    378378        wf = self.portal_workflow
    379379        no_import_list = []
    380         logger = logging.getLogger('Import.CertificateCourses')
    381380        fields = ("code",
    382381                  "review_state",
     
    446445                continue
    447446            l.invokeFactory('CertificateCourse',course_code)
    448             logger.info('Creating CertificateCourse %(code)s in certificate %(certificate_code)s Level %(level)s' % cert_course)
     447            logger.info('Creating CertificateCourse %(code)s in Certificate %(certificate_code)s StudyLevel %(level)s' % cert_course)
    449448            cc = getattr(l,course_code)
    450449            semester = 'first'
     
    492491    def exportLocalRoles(self,portal_type): ###(
    493492        name = '%sLocalRoles' % portal_type
    494         logger = logging.getLogger('Export.%s' % name)
     493        logger = logging.getLogger('Academics.AcademicsFolder.exportLocalRoles')
    495494        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    496495        logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars())
     
    505504            for (groupname, roles) in obj.get_local_group_roles():
    506505                lr[ 'group:' + group ] = [x for x in roles]
    507             logger.info('exporting %s %s ' % (obj.id, lr))
     506            logger.info('Exporting %s %s ' % (obj.id, lr))
    508507            export.append('"%s","%s"' % (obj.getId(),lr))
    509508        open("%s/import/%s-%s.csv" % (i_home,name,current),"w+").write('\n'.join(export))
     
    519518        name = 'Faculties'
    520519        no_import = False
    521         logger = logging.getLogger('Export.%s' % name)
     520        logger = logging.getLogger('Academics.AcademicsFolder.exportFacultiesToCSV')
    522521        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    523522        logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars())
     
    526525        export.append('"code","review_state","title","title_prefix","college_code","degree_grade","bank_code"')
    527526        for obj in objects:
    528             logger.info('exporting %s %s ' % (obj.id, obj.title))
     527            logger.info('Exporting %s %s ' % (obj.id, obj.title))
    529528            obj_d = obj.getContent()
    530529            di = {}
     
    552551        name = 'Departments'
    553552        no_import = False
    554         logger = logging.getLogger('Export.%s' % name)
     553        logger = logging.getLogger('Academics.AcademicsFolder.exportDepartmentsToCSV')
    555554        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    556555        logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars())
     
    570569                    di['review_state'] = self.portal_workflow.getInfoFor(department,'review_state','no_state')
    571570                    export.append('"%(code)s","%(review_state)s","%(title)s","%(title_prefix)s","%(faculty_code)s"' % di)
    572                     logger.info('exporting %s %s ' % (department.id, department.title))
     571                    logger.info('Exporting %s %s ' % (department.id, department.title))
    573572                except:
    574573                    logger.info('could not export %s %s ' % (department.id, department.title))
     
    584583        name = 'Courses'
    585584        no_import = False
    586         logger = logging.getLogger('Export.%s' % name)
     585        logger = logging.getLogger('Academics.AcademicsFolder.exportCoursesToCSV')
    587586        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    588587        logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars())
     
    614613                    di['review_state'] = self.portal_workflow.getInfoFor(course,'review_state','no_state')
    615614                    export.append(dataline % di)
    616                     logger.info('exporting %s %s ' % (course.id, course.title))
     615                    logger.info('Exporting %s %s ' % (course.id, course.title))
    617616                    continue
    618617        open("%s/import/%s-%s.csv" % (i_home,name,current),"w+").write('\n'.join(export))
     
    626625        name = 'Certificates'
    627626        no_import = False
    628         logger = logging.getLogger('Export.%s' % name)
     627        logger = logging.getLogger('Academics.AcademicsFolder.exportCertificatesToCSV')
    629628        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    630629        logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars())
     
    668667                    try:
    669668                        export.append(dataline % di)
    670                         logger.info('exporting %s %s ' % (certificate.id, certificate.title))
     669                        logger.info('Exporting %s %s ' % (certificate.id, certificate.title))
    671670                    except:
    672671                        logger.info('could not export %s %s ' % (certificate.id, certificate.title))
     
    682681        name = 'CertificateCourses'
    683682        no_import = False
    684         logger = logging.getLogger('Export.%s' % name)
     683        logger = logging.getLogger('Academics.AcademicsFolder.exportCertificateCoursesToCSV')
    685684        current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    686685        logger.info('Start exporting %(name)s to %(name)s_%(current)s.csv' % vars())
     
    714713                                    try:
    715714                                        export.append(dataline % di)
    716                                         logger.info('exporting %s %s ' % (certificate.id, certificate.title))
     715                                        logger.info('Exporting %s %s ' % (certificate.id, certificate.title))
    717716                                    except:
    718                                         logger.info('could not export %s %s ' % (certificate.id, certificate.title))
     717                                        logger.info('Could not export %s %s ' % (certificate.id, certificate.title))
    719718                                        continue
    720719        open("%s/import/%s-%s.csv" % (i_home,name,current),"w+").write('\n'.join(export))
  • WAeUP_SRP/branches/uli/Accommodation.py

    r1449 r1593  
    107107        no_import = []
    108108        imported = []
    109         logger = logging.getLogger('Import.%s' % name)
     109        logger = logging.getLogger('Accommodation.AccoFolder.importReservedBeds')
    110110        try:
    111111            beds = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
     
    169169                    no_import.append( format_error % bed)
    170170                    continue
    171                 halls[hall] = hall_doc = hall_object.getContent() 
     171                halls[hall] = hall_doc = hall_object.getContent()
    172172            bid = "%(hall)s_%(block)s_%(room)s_%(bed)s" % bed
    173173            res = accommodation(bed = bid)
     
    201201                    acco_doc.edit(mapping={'bed': bid})
    202202                    member = self.portal_membership.getAuthenticatedMember()
    203                     logger.info('"%s","changed reserved bed %s for","%s"' % (member,bid,sid))
     203                    logger.info('%s changed reserved bed %s for %s' % (member,bid,sid))
    204204            accommodation.modifyRecord(bed = bid, student = sid)
    205205            imported.append( format % bed)
     
    227227        return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    228228
    229        
     229
    230230InitializeClass(AccoFolder)
    231231
     
    256256InitializeClass(AccoHall)
    257257
    258    
     258
    259259def addAccoHall(container, id, REQUEST=None, **kw):
    260260    """Add a AccoHall."""
  • WAeUP_SRP/branches/uli/PatchCPSUserFolderUserFolder.py

    r1515 r1593  
    7171    ## patch to assign dynamic roles for WAeUP
    7272    while 1:
     73        if self.isStudent():
     74            break
     75        groups = self.portal_membership.getAuthenticatedMember().getGroups()
     76        if not ("ClearanceOfficers" in groups or "CourseAdvisers" in groups):
     77            break
    7378        if callable(real_object) and hasattr(real_object,'im_self'):
    7479            real_object = real_object.im_self
     80
     81        if real_object is None:
     82            break
    7583        if hasattr(real_object,'portal_type') and\
    76                    real_object.portal_type not in ("Student","StudentClearance","StudentStudyLevel"):
     84                   real_object.portal_type not in ("Student",
     85                                                   "StudentClearance",
     86                                                   "StudentStudyLevel"):
    7787            break
     88        # don't test if it is not a proxy
     89        if real_object.portal_type == real_object.meta_type:
     90            break
     91        # can be later simplified by replacing by students_catalog values - Henrik
     92        # getattr works always because of acquisition ?! Henrik
    7893        sc = getattr(real_object,'study_course',None)
    7994        if sc is None:
    8095            break
     96        #from pdb import set_trace;set_trace()
    8197        sc_obj = sc.getContent()
    82         res_sc = self.portal_catalog(portal_type="Certificate",
    83                                      id = sc_obj.study_course)
    84         if len(res_sc) != 1:
     98        cert_id = sc_obj.study_course
     99        res_cert = self.portal_catalog(id = cert_id)
     100        if len(res_cert) != 1:
    85101            break
    86         cert_path = res_sc[0].getPath().split('/')
     102        certificate_brain = res_cert[0]
     103        certificate_obj = certificate_brain.getObject()
     104        cert_path = certificate_brain.getPath().split('/')
    87105        fac_id = cert_path[-4]
    88106        dep_id = cert_path[-3]
    89 
    90 
    91         # temporary sel-healing function
     107        # temporary self-healing function
    92108        # deprecated after reindexing the students_catalog
    93109        student_id = self.getStudentId()
     
    95111        if len(res) != 1:
    96112            break
    97         self.students_catalog.modifyRecord(id = student_id,
     113        st_entry = res[0]
     114        if st_entry.faculty != fac_id or\
     115           st_entry.department != dep_id or\
     116           st_entry.course != cert_id:
     117               self.students_catalog.modifyRecord(id = student_id,
    98118                                                faculty = fac_id,
    99119                                                department = dep_id,
     120                                                course = cert_id
    100121                                                )
    101 
    102 
    103         res = self.portal_catalog(portal_type="Department",id=dep_id)
    104         if len(res) != 1:
     122        if real_object.portal_type == "StudentStudyLevel":
     123            context_obj = getattr(certificate_obj,real_object.getId(),None)
     124            if context_obj is None:
     125                break
     126            allowed = set(('CourseAdviser', 'SectionManager'))
     127        elif real_object.portal_type == "Student" and "CourseAdvisers" in groups:
     128            #we need some special processing since CourseAdvisers are only
     129            #specified per StudyLevel
     130            allowed = set(('CourseAdviser', 'SectionManager'))
     131            for context_obj in certificate_obj.objectValues():
     132                dynamic_roles = set(self.getRolesInContext(context_obj))
     133                intersect = dynamic_roles & allowed
     134                if intersect:
     135                    roles.extend(list(intersect))
    105136            break
    106         dynamic_roles = self.getRolesInContext(res[0].getObject())
    107         for dr in ('ClearanceOfficer','CourseAdviser', 'SectionManager'):
    108             if dr in dynamic_roles:
    109                 roles.append(dr)
     137        else:
     138            res = self.portal_catalog(portal_type="Department",id=dep_id)
     139            allowed = set(('ClearanceOfficer', 'SectionManager'))
     140            if len(res) != 1:
     141                break
     142            context_obj = res[0].getObject()
     143        dynamic_roles = set(self.getRolesInContext(context_obj))
     144        intersect = dynamic_roles & allowed
     145        if intersect:
     146            roles.extend(list(intersect))
    110147        break
    111148    return roles
  • WAeUP_SRP/branches/uli/ScratchCards.py

    r1395 r1593  
    3737        """import PinBatch"""
    3838        name = "PINS"
    39         logger = logging.getLogger('Import.%s' % name)
     39        logger = logging.getLogger('Students.ScratchCardBatchesFolder.importPinBatch')
    4040        logger.info('Start loading from %s.csv' % name)
    4141        pins_section = self.portal_url.getPortalObject().campus.pins
     
    6666            dict['no_of_pins'] = n - 1
    6767            batch.getContent().edit(mapping=dict)
    68             logger.info('Added %s with %d Pins' % (bid,n-1))
     68            logger.info('%s with %d PINs added' % (bid,n-1))
    6969        return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    7070    ###)
     
    140140            return unused[-max_pins:]
    141141        return unused
    142    
     142
    143143    security.declareProtected(View,"getUsedPins")
    144144    def getUsedPins(self):
  • WAeUP_SRP/branches/uli/Students.py

    r1529 r1593  
    8282    security = ClassSecurityInfo()
    8383
    84     security.declareProtected(ModifyPortalContent,"loadFullTimeStudentsFromCSV")###(
    85     def loadFullTimeStudentsFromCSV(self):
    86         """load Fulltime Studentdata from CSV values"""
    87         import transaction
    88         import random
    89         tr_count = 0
    90         name = 'short_full_time'
    91         no_import = False
    92         if not no_import:
    93             no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
    94             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')
    95         logger = logging.getLogger('Import.%s' % name)
    96         logger.info('Start loading from %s.csv' % name)
    97         pwlist  = []
    98         pwlist.append('"student_id","firstname","middlename","lastname","matric_no","jamb_reg_no","access_code"')
    99         pwl_template = Template('"$student_id","$firstname","$middlename","$lastname","$matric_no","$jamb_reg_no","$access_code"')
    100         students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()
    101         try:
    102             students = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
    103         except:
    104             logger.error('Error reading %s.csv' % name)
    105             return
    106         l = self.portal_catalog({'meta_type': "StudentClearance",})
    107         matrics = []
    108         for s in l:
    109             matrics.append(s.getObject().getContent().matric_no)
    110         print matrics
    111         l = self.portal_catalog({'meta_type': "Certificate"})
    112         certs = {}
    113         for c in l:
    114             ca,ac,fa,dep_id,co,certcode = c.relative_path.split('/')
    115             cid = "%(dep_id)s_%(certcode)s" % vars()
    116             certs[cid] = c.getObject()
    117         for student in students:
    118             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"\n' % student)
    119             sid = student.get('MatricNo')
    120             if sid == "":
    121                 em = 'Empty MatricNo\n'
    122                 logger.info(em)
    123                 no_import.write(em)
    124                 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"\n' % student)
    125                 continue
    126             certcode = makeCertificateCode(student.get('CourseMajor'))
    127             dep_id = student.get('Dept')
    128             fac_id = student.get('Faculty')
    129             cid = "%(dep_id)s_%(certcode)s" % vars()
    130             if cid not in certs.keys():
    131                 em = 'Certificate with ID %s %s not found\n' % (certcode, student.get('CourseMajor'))
    132                 logger.info(em)
    133                 no_import.write(em)
    134                 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"\n' % student)
    135                 continue
    136             certificate_doc = certs[cid].getContent()
    137             level = student.get('StudentLevel')
    138             try:
    139                 int(level)
    140             except:
    141                 em = 'Student with ID %(MatricNo)s StudentLevel is empty\n' % student
    142                 logger.info(em)
    143                 no_import.write(em)
    144                 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"\n' % student)
    145                 continue
    146             matric_no = student.get('MatricNo')
    147             if matric_no not in matrics:
    148                 matrics.append(matric_no)
    149                 sid = self.generateStudentId(student.get('Lastname')[0])
    150                 #self.log('Creating Faculty %(id)s = %(Title)s' % faculty)
    151                 students_folder.invokeFactory('Student', sid)
    152                 logger.info('%(tr_count)s: Creating Student with ID %(sid)s Matric_no %(matric_no)s ' % vars())
    153                 student_obj = getattr(self,sid)
    154                 access_code = "%d" % random.randint(1000000000,9999999999)
    155                 student_obj.getContent().makeStudentMember(sid,access_code,)
    156                 pwl_dict = {'student_id': sid,'access_code':access_code}
    157                 student_obj.invokeFactory('StudentApplication','application')
    158                 application = student_obj.application
    159                 da = {'Title': 'Application Data'}
    160                 student_obj.invokeFactory('StudentPersonal','personal')
    161                 da['jamb_reg_no'] = student.get('EntryRegNo')
    162                 personal = student_obj.personal
    163                 dp = {'Title': 'Personal Data'}
    164                 student_obj.invokeFactory('StudentClearance','clearance')
    165                 clearance = student_obj.clearance
    166                 dc = {'Title': 'Clearance/Eligibility Record'}
    167                 dc['matric_no'] = matric_no
    168                 state = student.get('State')
    169                 lga = student.get('LGA')
    170                 if state and lga:
    171                     lga =  state + ' / ' + lga
    172                 else:
    173                     lga = "None"
    174                 dc['lga'] = lga
    175                 dc['nationality'] = student.get('Nationality')
    176                 dc['email'] = student.get('Emailaddress')
    177                 dp['firstname'] = student.get('FirstName')
    178                 dp['middlename'] = student.get('MiddleName')
    179                 dp['lastname'] = student.get('Lastname')
    180                 dp['former_surname'] = student.get('FormerSurname')
    181                 dp['sex'] = student.get('Sex') == 'F'
    182                 dp['perm_address'] = student.get('PermanentAddress')
    183                 dp['perm_city'] = student.get('PermanentAddressCity')
    184                 dp['campus_address'] = student.get('CampusAddress')
    185                 dp['phone'] = student.get('PhoneNumber')
    186                 application.getContent().edit(mapping=da)
    187                 personal.getContent().edit(mapping=dp)
    188                 clearance.getContent().edit(mapping=dc)
    189                 #
    190                 # Study Course
    191                 #
    192                 student_obj.invokeFactory('StudentStudyCourse','study_course')
    193                 studycourse = student_obj.study_course
    194                 dsc = {}
    195                 from_certificate = ['title',
    196                                    'max_elect',
    197                                    'max_pass',
    198                                    'n_core',
    199                                    'nr_years',
    200                                    'probation_credits',
    201                                    'promotion_credits',
    202                                    'start_level',
    203                                   ]
    204                 for f in from_certificate:
    205                     dsc[f] = getattr(certificate_doc,f)
    206                 dsc['faculty'] = fac_id
    207                 dsc['department'] = dep_id
    208                 dsc['study_course'] = certcode
    209                 css = student.get('CurrentSession') or '2004-2005'
    210                 cs = int(css.split('-')[0]) - 2000
    211                 cl = int(student.get('StudentLevel') or '100')/100
    212                 dsc['entry_session'] = "200%s" % (cs - cl)
    213                 dsc['clr_ac_pin'] = access_code
    214                 studycourse.getContent().edit(mapping=dsc)
    215                 #
    216                 # Level
    217                 #
    218 ##                l = getattr(studycourse,level,None)
    219 ##                if 0 and l is None:
    220 ##                    #self.log('Creating Department %(DeptCode)s = %(Description)s' % dep)
    221 ##                    logger.info('Creating Level %(StudentLevel)s for %(fullname)s' % student)
    222 ##                    studycourse.invokeFactory('StudentStudyLevel', level)
    223 ##                    l = getattr(studycourse, level)
    224 ##                    certificate = certs[certcode]
    225 ##                    cert_level = getattr(certificate,level,None)
    226 ##                    if cert_level is None:
    227 ##                        logger.info('Level %(level)s not in %(certcode)s' % vars())
    228 ##                    l.getContent().edit(mapping={'Title': "Level %s" % level})
    229             else:
    230                 em = 'Student with ID %(MatricNo)s %(fullname)s already exists\n' % student
    231                 logger.info(em)
    232                 no_import.write(em)
    233                 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"\n' % student)
    234                 continue
    235             if tr_count > MAX_TRANS:
    236                 transaction.commit()
    237                 em = 'Transaction commited\n' % student
    238                 logger.info(em)
    239                 tr_count = 0
    240             tr_count += 1
    241             pwl_dict.update(dc)
    242             pwl_dict.update(da)
    243             pwl_dict.update(dp)
    244             wftool = self.portal_workflow
    245             pwlist.append(pwl_template.substitute(pwl_dict))
    246             wftool.doActionFor(student_obj,'clear_and_validate')
    247             student_obj.manage_setLocalRoles(sid, ['Owner',])
    248             wftool.doActionFor(application,'close')
    249             application.manage_setLocalRoles(sid, ['Owner',])
    250             wftool.doActionFor(clearance,'close')
    251             clearance.manage_setLocalRoles(sid, ['Owner',])
    252             wftool.doActionFor(personal,'close')
    253             personal.manage_setLocalRoles(sid, ['Owner',])
    254             wftool.doActionFor(studycourse,'close_for_edit')
    255             studycourse.manage_setLocalRoles(sid, ['Owner',])
    256         open("%s/import/pwlist-%s.csv" % (i_home,name),"w+").write('\n'.join(pwlist))
    257         return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    258     ###)
    259 
    260     security.declareProtected(ModifyPortalContent,"loadPumeResultsFromCSV")###(
    261     def loadPumeResultsFromCSV(self):
    262         """load Fulltime Studentdata from CSV values into pumeresults catalog"""
    263         import transaction
    264         import random
    265 ##        csv_d = {'jamb_reg_no': "RegNumber", ###(
    266 ##                 'status': "Admission Status",
    267 ##                 'name': "Name",
    268 ##                 'score': "Score",
    269 ##                 'sex': "Sex",
    270 ##                 'faculty': "Faculty",
    271 ##                 'department': "Dept",
    272 ##                 'course': "Course",
    273 ##                 'course_code_org': "Course Code",
    274 ##                 }
    275 ###)
    276         csv_d = {'jamb_reg_no': "JAMBRegno",
    277                  'name': "Name",
    278                  'score': "Score",
    279                  'sex': "Sex",
    280                  'course': "Course",
    281                  'faculty': "Faculty",
    282                  'department': "Dept",
    283                  'course_code_org': "Course Code",
    284                  'status': "Admission Status",
    285                  'result_type': None,
    286                  }
    287         csv_fields = [f[1] for f in csv_d.items() if f[1]]
    288         tr_count = 0
    289         total = 0
    290         #name = 'pup_new'
    291         name = 'pup_update'
    292         update = name.endswith('update')
    293         no_import = []
    294         ok_import = []
    295         ok_import.append('%s' % ','.join(['"%s"' % fn for fn in csv_d.keys()]))
    296         no_import.append('%s' % ','.join(['"%s"' % fn for fn in csv_fields]))
    297         current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    298         ok_import_name = "%s/import/%s_imported_%s.csv" % (i_home,name,current)
    299         #open(ok_import_name,"w").write('\n'.join(no_import))
    300         no_import_name = "%s/import/%s_not_imported_%s.csv" % (i_home,name,current)
    301         #open(no_import_name,"w").write('\n'.join(no_import))
    302         logger = logging.getLogger('Import.%s' % name)
    303         starttime = DateTime.now()
    304         logger.info('Start loading from %s.csv' % name)
    305         try:
    306             result = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
    307         except:
    308             logger.error('Error reading %s.csv' % name)
    309             return
    310         pume = self.portal_pumeresults
    311         format = ','.join(['"%%(%s)s"' % fn for fn in csv_fields])
    312         import_format = ','.join(['"%%(%s)s"' % fn for fn in csv_d.keys()])
    313         eduplicate = '%s,"duplicate"' % format
    314         einvalidjamb = '%s,"invalid JambRegNo"' % format
    315         added = 'added ,%s' % format
    316         #from pdb import set_trace;set_trace()
    317         for jamb in result:
    318             dict = {}
    319             for f,fn in csv_d.items():
    320                 dict[f] = jamb.get(csv_d[f])
    321             dict['result_type'] = 'DE'
    322             jnr = jamb.get(csv_d['jamb_reg_no'])
    323             if not checkJambNo(jnr):
    324                 logger.info(einvalidjamb % jamb)
    325                 dd = {}
    326                 for f,fn in csv_d.items():
    327                     dd[fn] = getattr(data,f)
    328                     no_import.append(eduplicate % dd)
    329                     no_import.append(eduplicate % jamb)
    330                 continue
    331             res = pume(jamb_reg_no=jnr)
    332             if len(res) > 0:
    333                 if update:
    334                     try:
    335                         pume.modifyRecord(**dict)
    336                     except ValueError:
    337                         logger.info(eduplicate % jamb)
    338                         continue
    339                     except KeyError:
    340                         pume.addRecord(**dict)
    341                         logger.info(added % jamb)
    342                         continue
    343                 else:
    344                     data = res[0]
    345                     if data.name != jamb.get(csv_d['name']):
    346                         #set_trace()
    347                         logger.info(eduplicate % jamb)
    348                         #em = 'Student with REG-NO %(jamb_reg_no)s already exists\n' % dict
    349                         #logger.info(em)
    350                         dd = {}
    351                         for f,fn in csv_d.items():
    352                             dd[fn] = getattr(data,f)
    353                         no_import.append(eduplicate % dd)
    354                         no_import.append(eduplicate % jamb)
    355                     continue
    356             try:
    357                 pume.addRecord(**dict)
    358                 ok_import.append(import_format % dict)
    359             except ValueError:
    360                 logger.info(eduplicate % jamb)
    361                 #em = 'Student with REG-NO %(jamb_reg_no)s already exists\n' % dict
    362                 #logger.info(em)
    363                 no_import.append(eduplicate % jamb)
    364         logger.info('End loading from %s.csv' % name)
    365         if len(no_import) > 1:
    366             open(no_import_name,"w+").write('\n'.join(no_import))
    367         open(ok_import_name,"w+").write('\n'.join(ok_import))
    368         return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    369     ###)
     84
    37085
    37186    security.declareProtected(ModifyPortalContent,"createDEStudents")###(
     
    405120        no_certificate = "no certificate %s" % format
    406121        open("%s/import/%s_not_imported.csv" % (i_home,name),"w").write('\n'.join(no_import))
    407         logger = logging.getLogger('Import.%s' % name)
    408         logger.info('start loading from %s.csv' % name)
     122        logger = logging.getLogger('Students.StudentsFolder.createDEStudents')
     123        logger.info('Start loading from %s.csv' % name)
    409124        l = self.portal_catalog({'meta_type': "Certificate"})
    410125        certs = {}
     
    418133            return
    419134        for jamb in result:
    420             jamb['Error'] = "Processing "
     135            jamb['Error'] = "Processing"
    421136            logger.info(format % jamb)
    422137            jamb_reg_no = jamb.get(csv_d['jamb_reg_no'])
     
    624339        no_certificate = "no certificate %s" % format
    625340        open("%s/import/%s_not_imported.csv" % (i_home,name),"w").write('\n'.join(no_import))
    626         logger = logging.getLogger('Import.%s' % name)
    627         logger.info('start loading from %s.csv' % name)
     341        logger = logging.getLogger('Students.StudentsFolder.createNewStudents')
     342        logger.info('Start loading from %s.csv' % name)
    628343        l = self.portal_catalog({'meta_type': "Certificate"})
    629344        certs = {}
     
    829544        no_import = []
    830545        imported = []
    831         logger = logging.getLogger('Import.%s' % name)
     546        logger = logging.getLogger('Students.StudentsFolder.importReturningStudents')
    832547        try:
    833548            returning = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
     
    849564            if start:
    850565                start = False
    851                 logger.info('start loading from %s.csv' % name)
     566                logger.info('Start loading from %s.csv' % name)
    852567                s = ','.join(['"%s"' % fn for fn in student.keys()])
    853568                imported.append(s)
     
    922637        for k,v in verdicts_voc.items():
    923638            rverdicts[v.upper()] = k
    924         logger = logging.getLogger('fixVerdicts')
     639        rverdicts['STUDENT ON PROBATION'] = 'C'
     640        logger = logging.getLogger('Students.StudentsFolder.fixVerdicts')
    925641        try:
    926642            verdicts = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
     
    933649            if start:
    934650                start = False
    935                 logger.info('start loading from %s.csv' % name)
     651                logger.info('Start loading from %s.csv' % name)
    936652                s = ','.join(['"%s"' % fn for fn in verdict.keys()])
    937653                no_import.append('%s,"Error"' % s)
     
    957673                        no_import.append( format_error % verdict)
    958674                        continue
    959                 try:
    960                     st_cat.modifyRecord(id = student_id,
     675                st_cat.modifyRecord(id = student_id,
    961676                                    verdict=verdict_code)
    962                 except KeyError:
    963                     student['Error'] = "Not found in students_catalog"
    964                     no_import.append( format_error % student)
    965                     continue
     677
    966678                dsc = {}
    967679                dsc['current_verdict'] = verdict_code
    968680                study_course.getContent().edit(mapping=dsc)
     681            else:
     682                verdict['Error'] = "Not found in students_catalog"
     683                no_import.append( format_error % verdict)
     684                continue
    969685            tr_count += 1
    970686            if tr_count > 1000:
     
    1017733        st_cat = self.students_catalog
    1018734        no_import = []
    1019         logger = logging.getLogger('getEntryMode.%s' % name)
     735        logger = logging.getLogger('Students.StudentsFolder.fixEntryModeForReturning')
    1020736        try:
    1021737            returning = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
     
    1027743            if start:
    1028744                start = False
    1029                 logger.info('start loading from %s.csv' % name)
     745                logger.info('Start loading from %s.csv' % name)
    1030746                s = ','.join(['"%s"' % fn for fn in student.keys()])
    1031747                no_import.append('%s,"Error"' % s)
     
    1120836        no_import = []
    1121837        imported = []
    1122         logger = logging.getLogger('Import.%s' % name)
     838        logger = logging.getLogger('Students.StudentsFolder.updateReturningStudents')
    1123839        try:
    1124840            returning = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
     
    1139855            if start:
    1140856                start = False
    1141                 logger.info('start loading from %s.csv' % name)
     857                logger.info('Start loading from %s.csv' % name)
    1142858                s = ','.join(['"%s"' % fn for fn in student.keys()])
    1143859                imported.append(s)
     
    1214930        no_import = []
    1215931        imported = []
    1216         logger = logging.getLogger('Import.%s' % name)
     932        logger = logging.getLogger('Students.StudentsFolder.importResults')
    1217933        try:
    1218934            results = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
     
    1233949            if start:
    1234950                start = False
    1235                 logger.info('start loading from %s.csv' % name)
     951                logger.info('Start loading from %s.csv' % name)
    1236952                s = ','.join(['"%s"' % fn for fn in result.keys()])
    1237953                imported.append(s)
     
    13391055        open("%s/import/%s_not_imported.csv" % (i_home,name),"w").write(
    13401056                    '\n'.join(no_import))
    1341         logger = logging.getLogger('Import.%s' % name)
     1057        logger = logging.getLogger('Students.StudentsFolder.updateStudyCourse')
    13421058        logger.info('Start loading from %s.csv' % name)
    13431059        l = self.portal_catalog({'meta_type': "Certificate"})
     
    13541070                                     'SearchableText': jamb_reg_no })
    13551071            if not res:
    1356                 em = 'Student with RegNo %s does not exists\n' % jamb_reg_no
     1072                em = 'Student with jamb_reg_no %s does not exists\n' % jamb_reg_no
    13571073                logger.info(em)
    1358                 jamb['Error'] = "Student not exists"
     1074                jamb['Error'] = "Student does not exist"
    13591075                no_import.append(format % jamb)
    13601076                continue
     
    13981114    ###)
    13991115
    1400     security.declareProtected(ModifyPortalContent,"OLDloadPumeResultsFromCSV")###(
    1401     def OLDloadPumeResultsFromCSV(self):
    1402         """load Fulltime Studentdata from CSV values"""
    1403         import transaction
    1404         import random
    1405         wftool = self.portal_workflow
    1406         students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()
    1407         csv_d = {'jamb_reg_no': "JAMBRegno",
    1408                  'jamb_lastname': "Name",
    1409                  'pume_options': "Options",
    1410                  'session': "Session",
    1411                  'days': "Days",
    1412                  'response': "Responce",
    1413                  'wrong': "Wrong",
    1414                  'pume_eng_score': "EngScore",
    1415                  'pume_gen_score': "GenScore",
    1416                  'pume_tot_score': "Score",
    1417                  'batch': "Batch",
    1418                  'serial': "SerialNo",
    1419                  'jamb_score': "JambScore",
    1420                  'omitted':"Omitted",
    1421                  'search_key': "SearchKey",
    1422                  'jamb_sex': "Sex",
    1423                  'fac1': "Fac1",
    1424                  'fac2': "Fac2",
    1425                  'jamb_first_cos': "CourseofStudy",
    1426                  'stud_status':"StudStatus",
    1427                  'registered': "Registered",
    1428                  'jamb_state': "State",
    1429                  'eng_fail': "EngFail",
    1430                  'gen_fail': "GenFail",
    1431                  'un_ans_eng': "UnAnsEng",
    1432                  'un_ans_eng': "UnAnsGen",
    1433                  'total_ans': "TotalUnAns",
    1434                  'dept': "Dept",
    1435                  'jamb_second_cos': "Course2",
    1436                  'jamb_third_cos': "course3",
    1437                  }
    1438         csv_fields = [f[1] for f in csv_d.items()]
    1439         tr_count = 0
    1440         name = 'pume_results'
    1441         no_import = []
    1442         s = ','.join(['"%s"' % fn for fn in csv_fields])
    1443         no_import.append('%s\n' % s)
    1444         logger = logging.getLogger('Import.%s' % name)
    1445         logger.info('Start loading from %s.csv' % name)
    1446         try:
    1447             result = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
    1448         except:
    1449             logger.error('Error reading %s.csv' % name)
    1450             return
    1451         for jamb in result:
    1452             format = ','.join(['"%%(%s)s"' % fn for fn in csv_fields])
    1453             processing = "processing %s" % format
    1454             logger.info(processing % jamb)
    1455             jamb_reg_no = jamb.get(csv_d['jamb_reg_no'])
    1456             #import pdb;pdb.set_trace()
    1457             res = self.portal_catalog({'portal_type': "StudentApplication",
    1458                                      'jamb_reg_no': jamb_reg_no })
    1459             if res:
    1460                 em = 'Student with REG-NO %s already exists\n' % jamb_reg_no
    1461                 logger.info(em)
    1462                 no_import.append(em)
    1463                 no_import.append(format % jamb)
    1464                 continue
    1465             cert_id = jamb.get(csv_d['jamb_first_cos']).upper()
    1466             res = self.portal_catalog({'portal_type': "Certificate",
    1467                                      'id': cert_id })
    1468             if len(res) < 1:
    1469                 em = 'No Certificate with ID %s \n' % cert_id
    1470                 logger.info(em)
    1471                 no_import.append(em)
    1472                 no_import.append(format % jamb)
    1473                 continue
    1474             cert = res[0].getObject()
    1475             cert_path = res[0].getPath()
    1476             cert_doc = cert.getContent()
    1477             jamb_name = jamb.get(csv_d['jamb_lastname'])
    1478             jamb_name.replace('>','')
    1479             names = jamb_name.split()
    1480             letter = names[-1][0].upper()
    1481             sid = self.generateStudentId(letter)
    1482             not_created = True
    1483             while not_created:
    1484                 try:
    1485                     students_folder.invokeFactory('Student', sid)
    1486                     not_created = False
    1487                 except BadRequest:
    1488                     sid = self.generateStudentId(letter)
    1489             logger.info('%(tr_count)s: Creating Student with ID %(sid)s REG-NO %(jamb_reg_no)s ' % vars())
    1490             student = getattr(self,sid)
    1491             student.manage_setLocalRoles(sid, ['Owner',])
    1492             student.invokeFactory('StudentClearance','clearance')
    1493             #wftool.doActionFor(student.clearance,'open')
    1494             dp = {'Title': 'Clearance/Eligibility Record'}
    1495             student.clearance.manage_setLocalRoles(sid, ['Owner',])
    1496             student.invokeFactory('StudentPume','pume')
    1497             dp = {'Title': 'Pume Data'}
    1498             student.invokeFactory('StudentApplication','application')
    1499             da = {'Title': 'Application Data'}
    1500             da["jamb_lastname"] = jamb_name
    1501             da_fields = ('jamb_reg_no',
    1502                          'jamb_sex',
    1503                          'jamb_state',
    1504                          'jamb_score',
    1505                          'jamb_first_cos',
    1506                          'jamb_sex',
    1507                          'jamb_state',
    1508                          'jamb_first_cos',
    1509                          'jamb_second_cos',
    1510                          )
    1511             for f in da_fields:
    1512                 da[f] = jamb.get(csv_d[f])
    1513             app = student.application
    1514             app.getContent().edit(mapping=da)
    1515             app.manage_setLocalRoles(sid, ['Owner',])
    1516             #wftool.doActionFor(app,'close')
    1517             dp_fields = (
    1518                          'pume_eng_score',
    1519                          'pume_gen_score',
    1520                          'pume_tot_score',
    1521                          )
    1522             for f in dp_fields:
    1523                 dp[f] = float(jamb.get(csv_d[f]))
    1524             pume = student.pume
    1525             pume.getContent().edit(mapping=dp)
    1526             #wftool.doActionFor(pume,'close')
    1527             pume.manage_setLocalRoles(sid, ['Owner',])
    1528             #
    1529             # Study Course
    1530             #
    1531             student.invokeFactory('StudentStudyCourse','study_course')
    1532             study_course = student.study_course
    1533             dsc = {}
    1534             from_certificate = ['title',
    1535                                'max_elect',
    1536                                'max_pass',
    1537                                'n_core',
    1538                                'nr_years',
    1539                                'probation_credits',
    1540                                'promotion_credits',
    1541                                'start_level',
    1542                               ]
    1543             for f in from_certificate:
    1544                 dsc[f] = getattr(cert_doc,f)
    1545             cpl = cert_path.split('/')
    1546             dsc['faculty'] = cpl[-4]
    1547             dsc['department'] = cpl[-3]
    1548             dsc['study_course'] = cert_id
    1549             dsc['entry_session'] = jamb.get(csv_d['session'])
    1550             study_course.getContent().edit(mapping=dsc)
    1551             student.getContent().createSubObjects()
    1552             if dp['pume_tot_score']>49:
    1553                 wftool.doActionFor(student,'pume_pass')
    1554                 wftool.doActionFor(student,'admit')
    1555             else:
    1556                 wftool.doActionFor(student,'pume_fail')
    1557                 wftool.doActionFor(student,'reject_admission')
    1558             if len(no_import) > 1:
    1559                 open("%s/import/%s_not_imported.csv" % (i_home,name),"w").write(
    1560                      '\n'.join(no_import))
    1561         return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    1562     ###)
    1563 
    1564     security.declareProtected(ModifyPortalContent,"loadFullTimeStudentsResultsFromCSV") ###(
    1565     def loadFullTimeStudentsResultsFromCSV(self):
    1566         """load Fulltime Studentdata from CSV values"""
    1567         #return
    1568         level_wf_actions = {}
    1569         level_wf_actions["SUCCESSFUL STUDENT"] = "pass_A"
    1570         level_wf_actions["STUDENT WITH CARRYOVER COURSES"] = "pass_B"
    1571         level_wf_actions["STUDENT FOR PROBATION"] = "probate_C"
    1572         level_wf_actions["STUDENT ON PROBATION/TRANSFER"] = "reject_D"
    1573         import transaction
    1574         wftool = self.portal_workflow
    1575         tr_count = 0
    1576         name = 'short_full_time_results_2004_2005'
    1577         no_import = False
    1578         if not no_import:
    1579             no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
    1580             no_import.write('"Matnumber","CosCode","Ansbook","CosStuatus","Session","Mat_Cos","Score","CarryLevel","Grade","Weight","Semster","Verdict","Level","id","GPA"\n')
    1581         logger = logging.getLogger('import.%s' % name)
    1582         logger.info('Start loading from %s.csv' % name)
    1583         students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()
    1584         try:
    1585             results = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
    1586         except:
    1587             logger.error('Error reading %s.csv' % name)
    1588             return
    1589         l = self.portal_catalog({'meta_type': "Course"})
    1590         courses = {}
    1591         for c in l:
    1592             courses[c.id] = c.getObject()
    1593         level_changed = False
    1594         student_changed = False
    1595         sid = ''
    1596         #import pdb;pdb.set_trace()
    1597         for result in results:
    1598             temp_sid = result.get('Matnumber')
    1599             if temp_sid != sid:
    1600                 student_changed = True
    1601                 res = self.portal_catalog({'meta_type': "StudentClearance",
    1602                                          'SearchableText': temp_sid })
    1603                 if not res:
    1604                     em = 'Student with ID %(Matnumber)s not found\n' % result
    1605                     logger.info(em)
    1606                     no_import.write(em)
    1607                     no_import.write('"%(Matnumber)s","%(CosCode)s","%(Ansbook)s","%(CosStuatus)s","%(Session)s","%(Mat_Cos)s","%(Score)s","%(CarryLevel)s","%(Grade)s","%(Weight)s","%(Semster)s","%(Verdict)s","%(Level)s","%(id)s","%(GPA)s"\n' % result)
    1608                     continue
    1609                 elif len(res) > 1:
    1610                     em = 'More than one Student with ID %(Matnumber)s found\n' % result
    1611                     logger.info(em)
    1612                     no_import.write(em)
    1613                     no_import.write('"%(Matnumber)s","%(CosCode)s","%(Ansbook)s","%(CosStuatus)s","%(Session)s","%(Mat_Cos)s","%(Score)s","%(CarryLevel)s","%(Grade)s","%(Weight)s","%(Semster)s","%(Verdict)s","%(Level)s","%(id)s","%(GPA)s"\n' % result)
    1614                     continue
    1615                 sid = temp_sid
    1616                 sf = res[0].getObject().aq_parent
    1617                 sc = getattr(sf,'study_course')
    1618                 level = ''
    1619             else:
    1620                 student_changed = False
    1621             course = result.get('CosCode')
    1622             if course not in courses.keys():
    1623                 em = 'Course with ID %(CosCode)s not found\n' % result
    1624                 logger.info(em)
    1625                 no_import.write(em)
    1626                 no_import.write('"%(Matnumber)s","%(CosCode)s","%(Ansbook)s","%(CosStuatus)s","%(Session)s","%(Mat_Cos)s","%(Score)s","%(CarryLevel)s","%(Grade)s","%(Weight)s","%(Semster)s","%(Verdict)s","%(Level)s","%(id)s","%(GPA)s"\n' % result)
    1627                 continue
    1628             course_doc = courses[course].getContent()
    1629             temp_level = result.get('Level')
    1630             student_id = sf.getId()
    1631             result['StudentId'] = student_id
    1632             if temp_level != level:
    1633                 try:
    1634                     int(temp_level)
    1635                 except:
    1636                     em = 'Result with ID %(Matnumber)s Course %(CosCode)s Level is empty\n' % result
    1637                     logger.info(em)
    1638                     no_import.write(em)
    1639                     no_import.write('"%(Matnumber)s","%(CosCode)s","%(Ansbook)s","%(CosStuatus)s","%(Session)s","%(Mat_Cos)s","%(Score)s","%(CarryLevel)s","%(Grade)s","%(Weight)s","%(Semster)s","%(Verdict)s","%(Level)s","%(id)s","%(GPA)s"\n' % result)
    1640                     continue
    1641                 level_changed = True
    1642                 if 'dlev' in vars().keys():
    1643                     wftool.doActionFor(l,level_wf_actions[dlev['verdict']])
    1644                 level = temp_level
    1645                 l = getattr(sc,level,None)
    1646                 if l is None:
    1647                     logger.info('Creating Level %(Level)s for %(StudentId)s %(Matnumber)s' % result)
    1648                     sc.invokeFactory('StudentStudyLevel', level)
    1649                     l = getattr(sc, level)
    1650                     l.manage_setLocalRoles(student_id, ['Owner',])
    1651             else:
    1652                 level_changed = False
    1653             cr = getattr(l,course,None)
    1654             if cr is None:
    1655                 logger.info('Creating Course %(CosCode)s for %(StudentId)s %(Matnumber)s in Level %(Level)s' % result)
    1656                 l.invokeFactory('StudentCourseResult',course)
    1657             cr = getattr(l,course)
    1658             dcr = {}
    1659             from_course = ['title',
    1660                            'credits',
    1661                            'passmark',
    1662                            ]
    1663             for f in from_course:
    1664                 dcr[f] = getattr(course_doc,f)
    1665             dlev = {}
    1666             dcr['ansbook'] = result.get('Ansbook')
    1667             dcr['semester'] = getInt(result.get('Semster'))
    1668             dcr['status'] = result.get('CosStuatus')
    1669             dcr['score'] = getInt(result.get('Score'))
    1670             dlev['session'] = result.get('Session')
    1671             dcr['carry_level'] = result.get('CarryLevel')
    1672             dcr['grade'] = result.get('Grade')
    1673             dcr['weight'] = result.get('Weight')
    1674             dlev['verdict'] = result.get('Verdict')
    1675             dcr['import_id'] = result.get('id')
    1676             gpa = result.get('GPA').replace(',','.')
    1677             dlev['imported_gpa'] = getFloat(gpa)
    1678             cr.getContent().edit(mapping = dcr)
    1679             cr.manage_setLocalRoles(student_id, ['Owner',])
    1680             l.getContent().edit(mapping = dlev)
    1681             if tr_count > MAX_TRANS:
    1682                 transaction.commit()
    1683                 tr_count = 0
    1684             tr_count += 1
    1685             wftool.doActionFor(cr,'close')
    1686         wftool.doActionFor(l,level_wf_actions[dlev['verdict']])
    1687         return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    1688 
    1689 ###)
    1690 
    1691     security.declareProtected(ModifyPortalContent,"loadJAMBFromCSV")###(
    1692     def loadJAMBFromCSV(self):
    1693         """load JAMB data from CSV values"""
    1694         #return
    1695         students_folder = self.portal_catalog({'meta_type': 'StudentsFolder'})[-1].getObject()
    1696         import transaction
    1697         tr_count = 0
    1698         name = 'SampleJAMBDataII'
    1699         wftool = self.portal_workflow
    1700         no_import = False
    1701         if not no_import:
    1702             no_import = open("%s/import/%s_not_imported.csv" % (i_home,name),"w")
    1703             no_import.write('REG-NO,NAME,SEX,STATE,LGA,ENG-SCORE,SUBJ1,SUBJ1-SCORE,SUBJ2,SUBJ2-SCORE,SUBJ3,SUBJ3-SCORE,AGGREGATE,UNIV1,FACULTY1,COURSE1,UNIV2,FACULTY2,COURSE2')
    1704         logger = logging.getLogger('Import.%s' % name)
    1705         logger.info('Start loading from %s.csv' % name)
    1706         try:
    1707             result = csv.DictReader(open("%s/import/%s.csv" % (i_home,name),"rb"))
    1708         except:
    1709             logger.error('Error reading %s.csv' % name)
    1710             return
    1711         for jamb in result:
    1712             logger.info('processing %(REG-NO)s,%(NAME)s,%(SEX)s,%(STATE)s,%(LGA)s,%(ENG-SCORE)s,%(SUBJ1)s,%(SUBJ1-SCORE)s,%(SUBJ2)s,%(SUBJ2-SCORE)s,%(SUBJ3)s,%(SUBJ3-SCORE)s,%(AGGREGATE)s,%(UNIV1)s,%(FACULTY1)s,%(COURSE1)s,%(UNIV2)s,%(FACULTY2)s,%(COURSE2)s\n' % jamb)
    1713             jamb_reg_no = jamb.get('REG-NO')
    1714             res = self.portal_catalog({'meta_type': "StudentApplication",
    1715                                      'jamb_reg_no': jamb_reg_no })
    1716             if res:
    1717                 em = 'Student with REG-NO %(REG-NO)s already exists\n' % jamb
    1718                 logger.info(em)
    1719                 no_import.write(em)
    1720                 no_import.write('%(REG-NO)s,%(NAME)s,%(SEX)s,%(STATE)s,%(LGA)s,%(ENG-SCORE)s,%(SUBJ1)s,%(SUBJ1-SCORE)s,%(SUBJ2)s,%(SUBJ2-SCORE)s,%(SUBJ3)s,%(SUBJ3-SCORE)s,%(AGGREGATE)s,%(UNIV1)s,%(FACULTY1)s,%(COURSE1)s,%(UNIV2)s,%(FACULTY2)s,%(COURSE2)s\n' % jamb)
    1721                 continue
    1722             jamb_name = jamb.get("NAME")
    1723             jamb_name.replace('>','')
    1724             names = jamb_name.split()
    1725             letter = names[-1][0].upper()
    1726             sid = self.generateStudentId(letter)
    1727             not_created = True
    1728             while not_created:
    1729                 try:
    1730                     students_folder.invokeFactory('Student', sid)
    1731                     not_created = False
    1732                 except BadRequest:
    1733                     sid = self.generateStudentId(letter)
    1734             logger.info('%(tr_count)s: Creating Student with ID %(sid)s REG-NO %(jamb_reg_no)s ' % vars())
    1735             student = getattr(self,sid)
    1736             student.manage_setLocalRoles(sid, ['Owner',])
    1737             student.invokeFactory('StudentApplication','application')
    1738             da = {'Title': 'Application Data'}
    1739             da["jamb_reg_no"] = jamb.get("REG-NO")
    1740             da["jamb_lastname"] = jamb_name
    1741             da["jamb_sex"] = jamb.get("SEX")
    1742             da["jamb_state"] = jamb.get("STATE")
    1743             da["jamb_lga"] = jamb.get("LGA")
    1744             da["jamb_score"] = jamb.get("AGGREGATE")
    1745             da["jamb_first_cos"] = jamb.get("COURSE1")
    1746             da["jamb_second_cos"] = jamb.get("COURSE2")
    1747             da["jamb_first_uni"] = jamb.get("UNIV1")
    1748             da["jamb_second_uni"] = jamb.get("UNIV2")
    1749             app = student.application
    1750             app_doc = app.getContent()
    1751             app_doc.edit(mapping=da)
    1752             #wftool.doActionFor(app,'open',dest_container=app)
    1753             app.manage_setLocalRoles(sid, ['Owner',])
    1754             student.getContent().createSubObjects()
    1755         return self.REQUEST.RESPONSE.redirect("%s" % self.REQUEST.get('URL1'))
    1756     ###)
    1757 
    1758  
     1116
     1117
    17591118    security.declareProtected(View,"fixOwnership")
    17601119    def fixOwnership(self):
  • WAeUP_SRP/branches/uli/WAeUPTables.py

    r1306 r1593  
    142142        rec = records[0]
    143143        self.modifyRecord(bed=rec.bed,student=student_id)
    144         s_logger = logging.getLogger('Accommodation.SearchAndReserveBed')
    145         s_logger.info("%s reserved bed %s" % (student_id,rec.bed))
     144        s_logger = logging.getLogger('WAeUPTables.AccommodationTable.searchAndReserveBed')
     145        s_logger.info('%s reserved bed %s' % (student_id,rec.bed))
    146146        return 1,rec.bed
    147147
  • WAeUP_SRP/branches/uli/WAeUPTool.py

    r1550 r1593  
    109109        student_entry = getattr(self.portal_directories.students,student_id,None)
    110110        if student_entry is None:
    111             return 
     111            return
    112112        setattr(student_entry,'password',password)
    113113    ###)
     
    288288        "create Datastructure for a returning Student"
    289289        #import pdb;pdb.set_trace()
    290         logger = logging.getLogger('Student.CreateData')
     290        logger = logging.getLogger('WAeUPTool.makeStudentData')
    291291        students_folder = self.portal_url.getPortalObject().campus.students
    292292        res = self.students_catalog(id=student_id)
     
    296296        if res:
    297297            student = res[0]
    298         logger.info('"%s", "creating Datastructure"' % student_id)
     298        logger.info('%s creates data structure' % student_id)
    299299        s_results = self.results_import(matric_no = st.matric_no)
    300300        lnr = self.getLevelFromResultsCosCode(s_results)
     
    404404        "create the StudyLevel for a returning Student"
    405405        #import pdb;pdb.set_trace()
    406         logger = logging.getLogger('Student.CreateLevel')
     406        logger = logging.getLogger('WAeUPTool.makeStudentLevel')
    407407        students_folder = self.portal_url.getPortalObject().campus.students
    408408        res = self.students_catalog(id=student_id)
     
    415415        if res:
    416416            results = res
    417         logger.info('"%s", "creating Level", "%s"' % (student_id,level))
     417        logger.info('%s creating Level %s' % (student_id,level))
    418418        #
    419419        # Level
     
    481481    def getLogfileLines(self,filename="event.log",numlines=20):
    482482        """Get last NUMLINES lines of logfile FILENAME.
    483    
     483
    484484        Return last lines' of a file in the instances logfile directory as
    485485        a list. The number of returned lines equals `numlines' or less. If
     
    497497            # Attempt to access file outside log-dir...
    498498            return []
    499        
     499
    500500        try:
    501501            fd = file( filename, "rb" )
     
    504504        if not fd:
    505505            return []
    506    
     506
    507507        if os.linesep == None:
    508508            linesep = '\n'
    509509        else:
    510510            linesep = os.linesep
    511    
     511
    512512        # Try to find 'numlines' times a lineseparator, searching from end
    513513        # and moving to the beginning of file...
     
    528528        # Remove line endings...
    529529        result = [x.strip() for x in result]
    530         fd.close()   
     530        fd.close()
    531531        return result
    532532    ###)
    533533
    534 
    535534InitializeClass(WAeUPTool)
  • WAeUP_SRP/branches/uli/Widgets.py

    r1449 r1593  
    343343    def validate(self, datastructure, **kw):
    344344        """Validate datastructure and update datamodel."""
    345         logger = logging.getLogger('Secret.Validate')
     345        logger = logging.getLogger('Widgets.SecretWidget.validate')
    346346        valid = CPSStringWidget.validate(self, datastructure, **kw)
    347347        #import pdb;pdb.set_trace()
     
    370370            name = " ".join(cvs)
    371371            if not found:
    372                 logger.info('"%(matric_no)s","mismatch", "%(value)s", "not in","%(name)s"' % vars())
    373                 err = 'No Name does match.'
    374             else:
    375                 logger.info('"%(matric_no)s","found", "%(value)s", "in","%(name)s"' % vars())
     372                logger.info('%(matric_no)s did not find %(value)s in %(name)s' % vars())
     373                err = 'No name does match.'
     374            else:
     375                logger.info('%(matric_no)s found %(value)s in %(name)s' % vars())
    376376        if err:
    377377            datastructure.setError(widget_id, err)
     
    392392        """Validate datastructure and update datamodel."""
    393393        valid = CPSStringWidget.validate(self, datastructure, **kw)
    394         logger = logging.getLogger('MatricNo.Validate')
     394        logger = logging.getLogger('Widgets.MatricNoWidget.validate')
    395395        #import pdb;pdb.set_trace()
    396396        returning = self.returning_import
     
    400400        value = datastructure[widget_id]
    401401        if not valid or not value:
    402             err = 'Invalid MatricNo String %s.' % value
    403             logger.info('"%s","invalid MatricNo String"' % value)
     402            err = 'Invalid matric_no string %s.' % value
     403            logger.info('Invalid matric_no string %s' % value)
    404404        else:
    405405            value = value.upper()
     
    408408                res = returning(matric_no = value)
    409409                if len(res) < 1:
    410                     logger.info('"%s","MatricNo not found."' % value)
    411                     err = 'No Student with MatricNo %s.' % (value)
     410                    logger.info('matric_no %s not found' % value)
     411                    err = 'No student with matric_no %s.' % (value)
    412412                    continue
    413413                datastructure['student'] = res[0]
    414414                res = results(matric_no = value)
    415415                if len(res) < 1:
    416                     err = 'No Results with MatricNo %s.' % (value)
     416                    err = 'No results with matric_no %s.' % (value)
    417417                    continue
    418418                datastructure['results'] = res
     
    436436        """Validate datastructure and update datamodel."""
    437437        valid = CPSStringWidget.validate(self, datastructure, **kw)
    438         logger = logging.getLogger('StudentId.Validate')
     438        logger = logging.getLogger('Widgets.StudentIdWidget.validate')
    439439        #import pdb;pdb.set_trace()
    440440        s_cat = self.students_catalog
     
    443443        value = datastructure[widget_id]
    444444        if not valid or not value:
    445             err = 'Invalid StudentId String %s.' % value
    446             logger.info('"%s","invalid StudentId String"' % value)
     445            err = 'Invalid id string %s.' % value
     446            logger.info('Invalid id string %s' % value)
    447447            datastructure['student'] = None
    448448        else:
     
    450450            res = s_cat(id = value)
    451451            if not res:
    452                 logger.info('"%s","StudentId not found."' % value)
    453                 err = 'No Student with StudentId %s.' % (value)
     452                logger.info('Student id %s not found' % value)
     453                err = 'No student with id %s.' % (value)
    454454                datastructure['student'] = None
    455455            else:
     
    699699    def validate(self, datastructure, **kw): ###(
    700700        """Validate datastructure and update datamodel."""
    701         s_logger = logging.getLogger('Pin.Validate')
     701        s_logger = logging.getLogger('Widgets.ScratchcardPinWidget.validate')
    702702        widget_id = self.getWidgetId()
    703703        v = datastructure[widget_id]
     
    718718            do = 0
    719719            err ='You are not a Student. PIN neither checked nor used.'
    720             s_logger.info('"%s","tried to use Scratchcard", "%s"' % (s_id,pin_str))
     720            s_logger.info('%s tried to use scratch card %s' % (s_id,pin_str))
     721        elif len(b) > 1 and b.find('-') > -1:
     722            do = 0
     723            err = 'PIN must not contain "-"'
     724            s_logger.info('%s entered invalid PIN  containing "-"' % (s_id))
     725        elif n.find('-') > -1:
     726            do = 0
     727            err = 'PIN must not contain "-"'
     728            s_logger.info('%s entered invalid PIN  containing "-"' % (s_id))
    721729        elif len(n) != 10:
    722730            do = 0
    723             err = 'Invalid PIN-Number length %d' % len(n)
    724             s_logger.info('"%s","Invalid PIN-Number length", "%d"' % (s_id,len(n)))
     731            err = 'Invalid PIN length %d' % len(n)
     732            s_logger.info('%s entered invalid PIN with length %d' % (s_id,len(n)))
    725733        elif self.reference == "":
    726734            ref = s_id
     
    729737            if datastructure.errors:
    730738                do = 0
    731                 datastructure.setError(widget_id, 'Errors in other data, PIN neither checked nor used.')
    732                 s_logger.info('"%s", "%s","entered wrong data together with pin", "%s"' % (s_id,ref,pin_str))
     739                datastructure.setError(widget_id, 'errors in other data, PIN neither checked nor used')
     740                s_logger.info('%s/%s entered wrong data together with PIN %s' % (s_id,ref,pin_str))
    733741        while do:
    734742            ok = pins.searchAndSetRecord(pin,ref,prefix)
    735743            if ok < -2 or ok > 2:
    736744                err = 'Unknown error, please report!'
    737                 s_logger.info('"%s","%s", "caused unknown error with pin", "%s"' % (s_id,ref,pin_str))
     745                s_logger.info('%s/%s caused unknown error with PIN %s' % (s_id,ref,pin_str))
    738746                break
    739747            elif ok == -2:
    740748                err = 'Service already activated but with a different PIN.'
    741                 s_logger.info('"%s","%s", "repeatedly activated service but with different pin", "%s"' % (s_id,ref,pin_str))
     749                s_logger.info('%s/%s repeatedly activated service but with different PIN %s' % (s_id,ref,pin_str))
    742750                break
    743751            elif ok == -1:
    744752                err = 'Invalid PIN'
    745                 s_logger.info('"%s","%s", "entered invalid pin", "%s"' % (s_id,ref,pin_str))
     753                s_logger.info('%s/%s entered invalid PIN %s' % (s_id,ref,pin_str))
    746754                break
    747755            if ok == 0:
    748                 err = 'PIN already used.'
    749                 s_logger.info('"%s","%s", "entered used pin", "%s"' % (s_id,ref,pin_str))
     756                err = 'PIN already used'
     757                s_logger.info('%s/%s entered used PIN %s' % (s_id,ref,pin_str))
    750758                break
    751759            if ok >= 1:
     
    754762                    if self.reference == "jamb_reg_no":
    755763                        err = "You are already logged in."
    756                         s_logger.info('"%s","%s", "checked admission though logged in", "%s"' % (s_id,ref,pin_str))
     764                        s_logger.info('%s/%s checked admission with PIN %s though logged in' % (s_id,ref,pin_str))
    757765                        break
    758766                    if ok == 1:
    759                         s_logger.info('"%s","%s", "successfully used pin", "%s"' % (s_id,ref,pin_str))
     767                        s_logger.info('%s/%s successfully used PIN %s' % (s_id,ref,pin_str))
    760768                    else:
    761                         s_logger.info('"%s","%s", "repeatedly used pin", "%s"' % (s_id,ref,pin_str))
     769                        s_logger.info('%s/%s repeatedly used PIN %s' % (s_id,ref,pin_str))
    762770                    break
    763771                else:
    764772                    student = getStudentByRegNo(self,ref)
    765                     s_logger.info('"%s","%s","successfully used pin","%s"' % (s_id,ref,pin_str))
     773                    s_logger.info('%s/%s successfully used PIN %s' % (s_id,ref,pin_str))
    766774                if student is None:
    767775                    err = "Student not found."
    768                     s_logger.info('"%s","not found in admission list"' % (ref))
     776                    s_logger.info('%s not found in admission list' % (ref))
    769777                    break
    770778                s_id = student.getId()
     
    773781                        if hasattr(self.portal_directories.students,s_id):
    774782                            err = "Please login with your Student Id %s and 10-digit PIN." % s_id
    775                             s_logger.info('"%s","%s", "repeatedly checked admission with pin", "%s"' % (s_id,ref,pin_str))
     783                            s_logger.info('%s/%s repeatedly checked admission with PIN %s' % (s_id,ref,pin_str))
    776784                            break
    777785                        else:
    778                             s_logger.info('"%s","%s","(non-member) repeatedly checked admission with pin", "%s"' % (s_id,ref,pin_str))
     786                            s_logger.info('%s/%s (non-member) repeatedly checked admission with PIN %s' % (s_id,ref,pin_str))
    779787                    else:
    780788                        err = "Unknown error" % s_id
    781                         s_logger.info('"%s","%s", "repeatedly activated service with pin", "%s"' % (s_id,ref,pin_str))
     789                        s_logger.info('%s/%s repeatedly activated service with PIN %s' % (s_id,ref,pin_str))
    782790                        break
    783791                try:
    784792                    student.getContent().makeStudentMember(s_id,password=pin[4:])
    785                     s_logger.info('"%s","%s", "has been created using pin", "%s"' % (s_id,ref,pin_str))
     793                    s_logger.info('%s/%s has been created using PIN %s' % (s_id,ref,pin_str))
    786794                except:
    787795                    err = "Please login with your Student Id %s and 10-digit PIN." % s_id
    788                     s_logger.info('"%s","%s", "could not be made a member with pin", "%s"' % (s_id,ref,pin_str))
     796                    s_logger.info('%s/%s could not be made a member with PIN %s' % (s_id,ref,pin_str))
    789797                    break
    790798            break
  • WAeUP_SRP/branches/uli/profiles/default/actionicons.xml

    r1477 r1593  
    5757              action_id="allocate_reserved_bed"
    5858              title="Allocate Reserved Bed" priority="100"
    59               icon_expr="bed_list_refresh.gif"/>             
     59              icon_expr="bed_list_refresh.gif"/>
     60 <action-icon category="object"
     61              action_id="release_bed"
     62              title="Relase Bed" priority="110"
     63              icon_expr="door_out.png"/>   
    6064 <action-icon category="folder" action_id="portlets"
    6165              title="Manage portlets" priority="270"
  • WAeUP_SRP/branches/uli/profiles/default/layouts/student_accommodation.xml

    r1449 r1593  
    110110  </property>
    111111  <property name="hidden_readonly_layout_modes"/>
    112   <property name="render_method">formatBed</property>
     112  <property name="render_method">getFormattedBed</property>
    113113 </widget>
    114114 <widget name="session" meta_type="String Widget">
  • WAeUP_SRP/branches/uli/profiles/default/layouts/student_accommodation_fe.xml

    r1449 r1593  
    7979  </property>
    8080  <property name="hidden_readonly_layout_modes"/>
    81   <property name="render_method">formatBed</property>
     81  <property name="render_method">getFormattedBed</property>
    8282 </widget>
    8383 <widget name="session" meta_type="String Widget">
  • WAeUP_SRP/branches/uli/profiles/default/payments_catalog.xml

    r1403 r1593  
    11<?xml version="1.0"?>
    22<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
    3 <object name="payments_catalog" meta_type="CMF Catalog">
     3<object name="payments_catalog" meta_type="WAeUP Table">
    44 <column value="id"/>
    55 <column value="student_id"/>
  • WAeUP_SRP/branches/uli/profiles/default/pumeresults.xml

    r1456 r1593  
    11<?xml version="1.0"?>
    22<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
    3 <object name="portal_catalog" meta_type="WAeUP Table">
     3<object name="portal_pumeresults" meta_type="WAeUP Table">
    44 <column value="jamb_reg_no"/>
    55 <column value="name"/>
  • WAeUP_SRP/branches/uli/profiles/default/results_import.xml

    r1456 r1593  
    11<?xml version="1.0"?>
    22<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
    3 <object name="portal_catalog" meta_type="CMF Catalog">
     3<object name="results_import" meta_type="WAeUP Table">
    44 <column value="key"/>
    55 <column value="matric_no"/>
  • WAeUP_SRP/branches/uli/profiles/default/returning_import.xml

    r1456 r1593  
    11<?xml version="1.0"?>
    22<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
    3 <object name="portal_catalog" meta_type="CMF Catalog">
     3<object name="returning_import" meta_type="WAeUP Table">
    44 <column value="matric_no"/>
    55 <column value="Entryregno"/>
  • WAeUP_SRP/branches/uli/profiles/default/schemas/import_student_course_results.xml

    r1533 r1593  
    66 <field name="score" meta_type="CPS String Field"/>
    77</object>
    8 
  • WAeUP_SRP/branches/uli/profiles/default/themes.xml

    r1518 r1593  
    2525  <element key="payment_receipt" value="WAeUP_Student+Slippage"/>
    2626  <element key="course_registration_slip" value="WAeUP_Student+Slippage"/>
     27  <element key="external_study_level_view" value="WAeUP_Student+Slippage"/>
     28  <element key="external_contact_student_form" value="WAeUP_Student+Slippage"/>
    2729 </property>
    2830 <object name="default" meta_type="Portal Theme"/>
  • WAeUP_SRP/branches/uli/profiles/default/types/StudyLevel.xml

    r1449 r1593  
    3737  <permission value="View"/>
    3838 </action>
    39    <action title="Add Course" action_id="new_entry" category="object"
    40     condition_expr=""
    41     url_expr="string:${object_url}/content_create?type_name=CertificateCourse"
    42     visible="True">
    43   <permission value="Modify portal content"/>
     39  <action title="Add Course" action_id="new_entry" category="object"
     40          condition_expr=""
     41          url_expr="string:${object_url}/content_create?type_name=CertificateCourse"
     42          visible="True">
     43    <permission value="Modify portal content"/>
     44  </action>
     45  <action title="Delegate" action_id="localroles" category="object"
     46          condition_expr="" url_expr="string:${object_url}/folder_localrole_form"
     47          visible="True">
     48    <permission value="Modify portal content"/>
    4449 </action>
     50
    4551</object>
  • WAeUP_SRP/branches/uli/profiles/default/vocabularies/searchable_student_states.xml

    r1516 r1593  
    1919 <item key="clearance_requested" msgid="">clearance requested</item>
    2020 <item key="cleared_and_validated" msgid="">cleared and validated</item>
    21  <item key="content_addable" msgid="">content addable</item>
     21 <item key="courses_registered" msgid="">courses registered</item>
     22 <item key="courses_validated" msgid="">courses validated</item>
    2223</object>
  • WAeUP_SRP/branches/uli/skins/waeup_accommodation/allocate_reserved_bed.py

    r1477 r1593  
    1313acco_cat = context.portal_accommodation
    1414import logging
    15 logger = logging.getLogger('Accommodation.AllocateReservedBed')
     15logger = logging.getLogger('Skins.allocate_reserved_bed')
    1616
    1717#change = REQUEST.has_key("allocate_and_change")
     
    7373    if allocate or change:
    7474        if already and not change:
    75             psm = "Student %s already reserved bed %s" % (sid, already[0].bed)
     75            psm = "Student %s has already reserved bed %s" % (sid, already[0].bed)
    7676            break
    7777        if not bed_brain.bed_type.endswith("reserved"):
    78             psm = "Not a reserved bed: %s" % bid
     78            psm = "%s is not a reserved bed" % bid
    7979            break
    8080        if bed_brain.student and not change:
     
    8888            acco_doc = getattr(student_obj, acco_id).getContent()
    8989            if acco_doc.bed == bid:
    90                 psm = "Student %s has already booked (paid) bed %s" % (sid, bid)
     90                psm = "Student %s has already booked (and paid) bed %s" % (sid, bid)
    9191                break
    9292        if not already:
     
    9494            break
    9595        if not bed_brain.bed_type.endswith("reserved"):
    96             psm = "Not a reserved bed: %s" % bid
     96            psm = "%s is not a reserved bed" % bid
    9797            break
    9898        if not bed_brain.student:
     
    118118        acco_doc = getattr(student_obj, acco_id).getContent()
    119119        acco_doc.edit(mapping={'bed': bid})
    120     logger.info('"%s","booked reserved bed %s for","%s"' % (member,bid,sid))
     120    logger.info('%s booked reserved bed %s for %s' % (member,bid,sid))
    121121    psm = "Bed %s reserved for %s %s" % (bid,sid,student.name)
    122122elif release:
     
    130130    if modify:
    131131        acco_cat.modifyRecord(bed=bid,student='')
    132         logger.info('"%s","cancelled reservation %s by","%s"' % (member,bid,sid))
     132        logger.info('%s released bed %s booked by %s' % (member,bid,sid))
    133133        psm = "%s removed from %s" % (student.name,bid)
    134134    else:
    135         psm = "%s removing failed from %s" % (student.name,bid)
     135        psm = "Removing of %s from bed %s failed" % (student.name,bid)
    136136
    137137mode = 'view'
  • WAeUP_SRP/branches/uli/skins/waeup_accommodation/change_bed.py

    r1452 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Accommodation.change_bed')
     15logger = logging.getLogger('Skins.change_bed')
    1616
    1717request = context.REQUEST
     
    3131
    3232if student_id is not None:
    33     logger.info('"%s", "requests bed_change for", "%s"' % (member_id,student_id))
     33    logger.info('%s requests bed change for %s' % (member_id,student_id))
    3434    info = context.getAccommodationInfo(student_id)
    3535    res = beds(student=student_id)
    3636    if len(res) == 0:
    37         logger.info('"%s", "no bed found"' % (student_id))
    38         redirect("%s/%s" % (students.absolute_url(),student_id))
     37        logger.info('No bed found for %s' % (student_id))
     38        return redirect("%s/%s" % (students.absolute_url(),student_id))
    3939    allocated_bed = res[0]
    4040    status = info['student_status']
    4141    student = student_id
    4242    if allocated_bed.bed_type == status:
    43         logger.info('"%s", "correct bed allocated","%s"' % (student_id,status))
    44         redirect("%s/%s/%s" % (students.absolute_url(),student,info['acco_id']))
    45     logger.info('"%s", "change bed", "%s/%s"' % (student_id,allocated_bed.bed_type,status))
     43        logger.info('Status %s of %s has not changed' % (status,student_id))
     44        return redirect("%s/%s/%s" % (students.absolute_url(),student,info['acco_id']))
     45    logger.info('Bed status %s of %s has changed to %s' % (allocated_bed.bed_type,student_id,status))
    4646    beds.modifyRecord(bed=allocated_bed.bed,student='')
     47    logger.info('Bed %s released' % (allocated_bed.bed))
    4748    code,bed = beds.searchAndReserveBed(student_id,status)
    4849    if code > 0:
     
    5657        acco_doc = info['acco_doc']
    5758        acco_doc.edit(mapping=d)
     59        logger.info('Bed %s allocated to %s' % (bed,student_id))
    5860        return redirect("%s/%s/%s" % (students.absolute_url(),student,info['acco_id']))
    5961    student_obj = getattr(students,student_id)
     
    6264        acco_doc = getattr(student_obj, acco_id).getContent()
    6365        if acco_doc.bed == bed:
    64             acco_doc.edit(mapping={'bed':"-- cancelled by %s --" % member})
    65     logger.info('"%s", "new bed allocation failed","%s"' % (student_id,code))
    66     logger.info('"%s","cancelled booking of bed %s by %s"' % (member,bed,sid))
     66            acco_doc.edit(mapping={'bed':"-- cancelled by officer due to failed bed change request --"})
     67    logger.info('New bed allocation for %s failed, code = %s' % (student_id,code))
     68    logger.info('%s cancelled booking of bed %s by %s' % (member,bed,student_id))
    6769    redirect("%s/%s/%s" % (students.absolute_url(),student,info['acco_id']))
    6870
     
    9597        d['acco_maint_fee'] = acco_info.get('maintenance_fee')
    9698        acco_doc.edit(mapping=d)
    97         list.append("Student %s new bed %s assigned code = %s" % (student,
    98                                                               bed,
     99        list.append("New bed %s allocated to %s, code = %s" % (bed,
     100                                                              student,
    99101                                                              code))
    100102return "\r".join(list)
  • WAeUP_SRP/branches/uli/skins/waeup_accommodation/getAccoHallInfo.py

    r1445 r1593  
    5959    d['student'] = st
    6060    d['student_url'] ='%s/%s' % (students_url,st)
    61     bed = context.formatBed(sbrain.bed).split('/')
     61    bed = context.getFormattedBed(sbrain.bed).split('/')
    6262    d['bed'] = " / ".join(bed[1:])
    6363    erg = context.students_catalog(id = st)
  • WAeUP_SRP/branches/uli/skins/waeup_accommodation/hall_delete.py

    r805 r1593  
    1 ## Script (Python) "folder_delete"
     1## Script (Python) "hall_delete"
    22##bind container=container
    33##bind context=context
     
    1212FIXME: add docstring.
    1313"""
     14
     15import logging
     16logger = logging.getLogger('Skins.hall_delete')
     17member_id = str(context.portal_membership.getAuthenticatedMember())
    1418
    1519from Products.CMFCore.utils import getToolByName
     
    4145    here.manage_delObjects(ids)
    4246    message = 'portal_status_message=hall(s) %s with %s beds deleted' % (" ".join(halls),len(urls))
     47    logger.info('%s deletes hall(s) %s with %s beds' % (member_id," ".join(halls),len(urls)))
    4348else:
    4449    message = 'portal_status_message=psm_select_at_least_one_document'
  • WAeUP_SRP/branches/uli/skins/waeup_accommodation/release_bed.py

    r1536 r1593  
    1 ## Script (Python) "change_bed"
     1## Script (Python) "release_bed"
    22##bind container=container
    33##bind context=context
     
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Accommodation.release_bed')
     15logger = logging.getLogger('Skins.release_bed')
    1616
    1717request = context.REQUEST
     
    3636#set_trace()
    3737if student_id is not None:
    38     logger.info('"%s", "requests bed_release for", "%s"' % (member_id,student_id))
     38    logger.info('%s requests bed_release for %s' % (member_id,student_id))
    3939    res = acco_cat(student=student_id)
    4040    if len(res) == 0:
    41         logger.info('"%s", "no bed found"' % (student_id))
     41        logger.info('no bed of %s found' % (student_id))
    4242        redirect("%s/%s" % (students.absolute_url(),student_id))
    4343    allocated_bed = res[0]
     
    4545    acco_doc = context.getContent()
    4646    acco_doc.edit(mapping={'bed':"-- cancelled by section officer --"})
    47     logger.info('"%s", "released bed of", "%s"' % (member_id,student_id))
     47    logger.info('%s released bed of %s' % (member_id,student_id))
    4848    redirect("%s" % (context.absolute_url()))
    4949
  • WAeUP_SRP/branches/uli/skins/waeup_accommodation/reserve_accommodation.py

    r1412 r1593  
    1212
    1313import logging
    14 logger = logging.getLogger('Student.Accommodation.Reserve')
     14logger = logging.getLogger('Skins.reserve_accommodation')
    1515
    1616#if info is None:
     
    1919if info is None:
    2020    member_id = str(context.portal_membership.getAuthenticatedMember())
    21     logger.info('"%s","tried to reserve accommodation"' % (member_id))
     21    logger.info('%s tried to reserve accommodation' % (member_id))
    2222    return context.REQUEST.RESPONSE.redirect("%s/srp_invalid_access" % context.portal_url())
    2323
     
    5555if psm == 'invalid' or info['error'] is not None:
    5656    member_id = str(context.portal_membership.getAuthenticatedMember())
    57     logger.info('"%s", %s' % (member_id,info['error'] ))
     57    logger.info('%s, %s' % (member_id,info['error'] ))
    5858    if psm == 'invalid':
    5959        psm = "Please correct your input."
     
    9494                                     )
    9595        else:
    96             bed = already[0].bed 
     96            bed = already[0].bed
    9797        student.invokeFactory('StudentAccommodation',acco_id)
    9898        acco = getattr(student,acco_id)
  • WAeUP_SRP/branches/uli/skins/waeup_custom/logged_in.py

    r1489 r1593  
    2121current = DateTime.DateTime()
    2222import logging
    23 logger = logging.getLogger('Member.Login')
     23logger = logging.getLogger('Skins.logged_in')
    2424
    2525
     
    7171        student_per = getattr(student,'personal',None)
    7272        p_review_state = wftool.getInfoFor(student_per,'review_state',None)
    73         logger.info('"%s", "logged in", "review_state %s"' % (member,s_review_state))
     73        logger.info('%s logged in, review_state %s' % (member,s_review_state))
    7474        app_doc = student_app.getContent()
    7575        #from Products.zdb import set_trace;set_trace()
    7676        if load_passport and 'passport' not in app_doc.objectIds():
    7777            msg = context.waeup_tool.loadStudentFoto(student)
    78             logger.info('"%s", "%s"' % (member,msg))
     78            logger.info('%s, %s' % (member,msg))
    7979        if s_review_state in ("student_created","admitted") and\
    8080                             a_review_state == 'created' :
     
    134134            redirect_url = "%s/student_index" % student.absolute_url()
    135135    else:
    136         logger.info('"%s", "logged in"' % (member))
     136        logger.info('%s logged in' % (member))
    137137        redirect_url = portal.absolute_url()
    138138#Anonymous
  • WAeUP_SRP/branches/uli/skins/waeup_custom/logout.py

    r1082 r1593  
    1010# notify the event service that the user has logged out
    1111import logging
    12 logger = logging.getLogger('Member.Logout')
     12logger = logging.getLogger('Skins.logout')
    1313user = context.portal_membership.getAuthenticatedMember()
    1414if user:
     
    1616    evtool = getPublicEventService(context)
    1717    evtool.notifyEvent('user_logout', user, {})
    18     logger.info('"%s", "logged out"' % (user))
     18    logger.info('%s logged out' % (user))
    1919
    2020REQUEST = context.REQUEST
  • WAeUP_SRP/branches/uli/skins/waeup_default/isCourseAdviser.py

    r1515 r1593  
    1 ## Script (Python) "isClearanceOfficer"
     1## Script (Python) "isCourseAdviser"
    22##bind container=container
    33##bind context=context
     
    99##
    1010# $Id: isClearanceOfficer.py 1087 2006-12-18 22:13:31Z joachim $
    11 
    12 #from Products.zdb import set_trace
    13 #set_trace()
    1411if context.isStudent():
    1512    return False
  • WAeUP_SRP/branches/uli/skins/waeup_default/waeup_edit.py

    r1456 r1593  
    1717from Products.CPSDocument.utils import getFormUidUrlArg
    1818
     19import logging
     20logger = logging.getLogger('Skins.waeup_edit')
     21
     22mtool = context.portal_membership
     23member = mtool.getAuthenticatedMember()
     24
    1925# Check flexible controls
    2026#context.editLayouts(REQUEST=REQUEST)
     
    2531if context.portal_type == "StudentStudyCourse":
    2632    if len(context.objectIds()) > 0:
    27         psm = 'Edit of StudyCourse is only possible if there are no levels'
     33        psm = 'Edit of StudentStudyCourse is only possible if there are no levels inside!'
    2834        args = getFormUidUrlArg(REQUEST)
    2935        args['portal_status_message'] = psm
     
    5864                                                  department = c_path[-3],
    5965                                                  )
     66            logger.info('%s edited %s (%s) of %s' % (member,context.id,course,student_id))
     67
    6068    elif context.portal_type == "StudentApplication":
    6169        entry_mode = ds.get('entry_mode')
     
    6472                                              entry_mode = entry_mode,
    6573                                             )
     74        logger.info('%s edited %s of %s' % (member,context.id,student_id))
    6675    elif context.portal_type == "StudentClearance":
    6776        matric_no = ds.get('matric_no')
     
    7079                                              matric_no = matric_no,
    7180                                             )
     81        logger.info('%s edited %s of %s' % (member,context.id,student_id))                                             
    7282    elif context.portal_type in ("StudentPersonal",):
    7383        name = "%(firstname)s %(middlename)s %(lastname)s" % ds
     
    8191        #if ds.get('sex'):
    8292        #    jamb_sex = 'F'
    83         # originally imported data must be kept; app_doc should not be changed here 
     93        # originally imported data must be kept; app_doc should not be changed here
    8494        #app_doc.edit(mapping={'jamb_lastname': name,
    8595        #                      'jamb_sex': jamb_sex
     
    91101                                              sex = ds.get('sex'),
    92102                                             )
     103        logger.info('%s edited %s of %s' % (member,context.id,student_id))
    93104    elif context.portal_type == "Course":
    94105        dd = {}
  • WAeUP_SRP/branches/uli/skins/waeup_epayment/approve_epayment.py

    r1427 r1593  
    1 ## Script (Python) "epayment_cb"
     1## Script (Python) "approve_epayment"
    22##bind container=container
    33##bind context=context
     
    1010# $Id: aprove_epayment.py 1425 2007-02-15 17:52:01Z joachim $
    1111"""
    12 payment callback
    1312"""
    1413import logging
    15 logger = logging.getLogger('EPayment.Approve')
     14logger = logging.getLogger('Skins.approve_epayment')
    1615import DateTime
    1716if context.portal_membership.isAnonymousUser():
     
    4241if doc.type_description.startswith('School Fee'):
    4342    wftool.doActionFor(student,'pay_school_fee')
    44 logger.info('"%s", "approved epayment for","%s""' % (member,student_id))
     43logger.info('%s approves epayment for %s' % (member,student_id))
    4544wftool.doActionFor(context,'close')
    4645return request.RESPONSE.redirect("%s/waeup_document_view" % context.absolute_url())
  • WAeUP_SRP/branches/uli/skins/waeup_epayment/epayment_cb.py

    r1367 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('EPayment.CallBack')
     15logger = logging.getLogger('Skins.epayment_cb')
    1616import DateTime
    1717if context.portal_membership.isAnonymousUser():
     
    4343if  resp == '00':
    4444    wftool.doActionFor(student,'pay_school_fee')
    45     logger.info('"%s", "received valid callback"' % student_id)
     45    logger.info('%s received valid callback' % student_id)
    4646
    4747elif len(resp) < 3:
    48     logger.info('"%s", "received no callback"' % student_id)
     48    logger.info('%s received no callback' % student_id)
    4949else:
    50     logger.info('"%s", "received unsuccessfull callback"' % student_id)
     50    logger.info('%s received unsuccessfull callback' % student_id)
    5151wftool.doActionFor(context,'close')
    5252
  • WAeUP_SRP/branches/uli/skins/waeup_epayment/getPaymentsFolderInfo.py

    r1431 r1593  
    1 ## Script (Python) "getPaymentsInfo"
     1## Script (Python) "getPaymentsFolderInfo"
    22##bind container=container
    33##bind context=context
     
    1212Info for the PaymentsFolder
    1313"""
    14 import logging
    15 logger = logging.getLogger('EPayment.Info')
     14#import logging
     15#logger = logging.getLogger('Skins.getPaymentsFolderInfo')
     16
    1617import DateTime
    1718request = context.REQUEST
     
    5758        row['confirmed'] = 'unsuccessful'
    5859    payments.append(row)
    59    
     60
    6061
    6162info['payments'] = payments
  • WAeUP_SRP/branches/uli/skins/waeup_epayment/pay_by_sc.py

    r1390 r1593  
    1414import logging
    1515from urllib import urlencode
    16 logger = logging.getLogger('EPayment.PayBySC')
     16logger = logging.getLogger('Skins.pay_by_sc')
    1717import DateTime
    1818
     
    8585    wftool.doActionFor(payment,'close')
    8686    wftool.doActionFor(student,'pay_school_fee')
    87     logger.info('"%s", "paid school fee by scratch card"' % student_id)
     87    logger.info('%s paid school fee by scratch card' % student_id)
    8888else:
    89     logger.info('"%s", "repeatedly paid school fee by scratch card"' % student_id)
     89    logger.info('%s repeatedly paid school fee by scratch card' % student_id)
    9090url = "%s/payments" % (student.absolute_url())
    9191request.RESPONSE.redirect(url)
  • WAeUP_SRP/branches/uli/skins/waeup_epayment/pay_online.py

    r1365 r1593  
    1414from urllib import urlencode
    1515import logging
    16 logger = logging.getLogger('EPayment.PayOnline')
     16logger = logging.getLogger('Skins.pay_online')
    1717import DateTime
    1818
     
    9191info['callback_url'] = "%s/payments/%s/epayment_cb" % (student.absolute_url(),p_id)
    9292
    93 logger.info('"%(student_id)s","%(type_description)s", "%(amount)s N"' % info)
     93logger.info('%(student_id)s initiated online school fee payment' % info)
    9494payment_fields = (('x_SiteID','site_id'),
    9595                  ('x_Redirect_url','callback_url'),
  • WAeUP_SRP/branches/uli/skins/waeup_epayment/simulate_callback.py

    r1427 r1593  
    55return html renderer + psm
    66"""
    7 import DateTime,logging
     7import DateTime
    88current = DateTime.DateTime()
    99pr = context.portal_registration
    10 logger = logging.getLogger('EPayment.Simulate')
    1110validate = REQUEST.has_key("cpsdocument_edit_button")
     11
     12import logging
     13logger = logging.getLogger('Skins.simulate_callback')
    1214
    1315args = {}
     
    1820args['x_ApprAmt'] = REQUEST.get('x_amt')
    1921
     22
     23student_id = context.getStudentId()
     24logger.info('%s received simulated callback' % student_id)
     25
    2026from urllib import urlencode
    2127#url = "%s/epayment_cb/?%s" % (context.absolute_url(),urlencode(args))
  • WAeUP_SRP/branches/uli/skins/waeup_pins/disable_pins.py

    r1540 r1593  
    1515current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    1616import logging
    17 logger = logging.getLogger('Pin.Disable')
     17logger = logging.getLogger('Skins.disable_pins')
    1818
    1919request = REQUEST
     
    3939            }
    4040    pincat.modifyRecord(**dict)
    41     logger.info('"%s","disabled pin","%s"' % (member,uid))
     41    logger.info('%s disabled pin %s' % (member,uid))
    4242return request.RESPONSE.redirect("%s/campus/pins/search_pins" % context.portal_url())
  • WAeUP_SRP/branches/uli/skins/waeup_pins/enable_pins.py

    r1082 r1593  
    1515current = DateTime.DateTime().strftime("%d-%m-%y_%H_%M_%S")
    1616import logging
    17 logger = logging.getLogger('Pin.Enable')
     17logger = logging.getLogger('Skins.enable_pins')
    1818
    1919request = REQUEST
     
    4242            }
    4343    pincat.modifyRecord(**dict)
    44     logger.info('"%s","enabled pin","%s"' % (member,pid))
     44    logger.info('%s enabled pin %s' % (member,uid))
    4545return request.RESPONSE.redirect("%s/campus/pins/search_pins" % context.portal_url())
  • WAeUP_SRP/branches/uli/skins/waeup_student/add_course_result.py

    r1520 r1593  
    55##bind script=script
    66##bind subpath=traverse_subpath
    7 ##parameters=
     7##parameters=REQUEST=None, action_after_validate=None
    88##title=
    99##
     
    1212add a StudentCourseResult object
    1313"""
     14
     15import logging
     16logger = logging.getLogger('Skins.add_course_result')
     17
    1418from urllib import urlencode
    1519try:
     
    2327aq_portal = context.portal_catalog.evalAdvancedQuery
    2428course_id = request.get('course_id')
     29
     30mtool = context.portal_membership
     31member = mtool.getAuthenticatedMember()
     32
     33
    2534d = context.getCourseInfo(course_id)
    2635args = {}
     
    2837while True:
    2938    if d['title'] == 'unknown':
    30         err = "No such course"
     39        err = "No such course!"
     40        logger.info('%s tried to add StudentCourseResult object %s for non-existing course' % (member,course_id))
    3141        break
    3242    if context.hasObject(course_id):
    33         err = "Course already exists"
     43        err = "Course already exists!"
     44        logger.info('%s tried to add StudentCourseResult object %s which is already in course list' % (member,course_id))
    3445        break
    3546    if context.hasObject("%s_co" % course_id):
    36         err = "Course already exists as carryover course"
     47        err = "Course already exists as carryover course!"
     48        logger.info('%s tried to add StudentCourseResult object %s which already exists as carryover course' % (member,course_id))
    3749        break
    3850    break
     
    4052if err:
    4153    args['course_id'] = course_id
    42     args['error'] = err
     54    #args['error'] = err
     55    args['portal_status_message'] = err
    4356    url = "%s?%s" % (context.absolute_url(),urlencode(args))
    4457    return request.RESPONSE.redirect(url)
     58
     59
    4560cr_id = context.invokeFactory('StudentCourseResult',course_id)
    4661#set_trace()
     
    5065context.portal_workflow.doActionFor(cr,'close')
    5166args['course_id'] = course_id
    52 from urllib import urlencode
    53 url = "%s?%s" % (context.absolute_url(),urlencode(args))
    54 return request.RESPONSE.redirect(url)
    5567
     68logger.info('%s added StudentCourseResult object %s' % (member,course_id))
     69
     70args = {}
     71psm = "You successfully added course %s!" % course_id
     72args['portal_status_message'] = psm
     73url = context.absolute_url() + '/' + action_after_validate + '?' + urlencode(args)
     74return REQUEST.RESPONSE.redirect(url)
     75
  • WAeUP_SRP/branches/uli/skins/waeup_student/add_student.py

    r1422 r1593  
    1313acco_cat = context.portal_accommodation
    1414import logging
    15 logger = logging.getLogger('Student.Add')
     15logger = logging.getLogger('Skins.add_student')
    1616
    1717validate = REQUEST.has_key("cpsdocument_edit_button") and\
     
    6767student_rec = context.getFormattedStudentEntry(context.students_catalog(id = sid)[0])
    6868psm = "Student record with Id %s and Password %s has been created." % (sid,password)
    69 logger.info('"%s","created student","%s"' % (member,sid))
     69logger.info('%s created student %s' % (member,sid))
    7070return context.add_student_form(rendered = rendered,
    7171                                 #psm = "%s, %s" % (psm,ds),
  • WAeUP_SRP/branches/uli/skins/waeup_student/application_edit.py

    r1343 r1593  
    1616current = DateTime.DateTime()
    1717import logging
    18 logger = logging.getLogger('Student.Application.Edit')
     18logger = logging.getLogger('Skins.application_edit')
    1919
    2020# Until ajax posts directly to its own script...
     
    3030
    3131if info is None:
    32     logger.info('"anonymous access","%s"' % REQUEST.get('URL0'))
     32    logger.info('Anonymous user tried to access %s"' % REQUEST.get('URL0'))
    3333    return REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
    3434
     
    5656    elif cpsdocument_edit_and_view_button:
    5757        if 1: ## app_doc.passport is not None:
    58             logger.info('"%s", "proceeded to start clearance"' % (info['id']))
     58            logger.info('%s proceeded to start clearance' % (info['id']))
    5959            action = "/start_clearance"
    6060            base_url = student.absolute_url()
  • WAeUP_SRP/branches/uli/skins/waeup_student/change_password.py

    r1527 r1593  
    1414current = DateTime.DateTime()
    1515#pr = context.portal_registration
    16 logger = logging.getLogger('Student.change_password')
     16logger = logging.getLogger('Skins.change_password')
    1717validate = request.has_key("change_password")
    1818students_dir = context.portal_directories.students
     
    2424requested_id = context.getStudentId()
    2525if requested_id and not context.isStaff() and member_id != requested_id:
    26     logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     26    logger.info('%s tried to access %s' % (member_id,requested_id))
    2727    return None
    2828elif context.isStaff():
     
    7474args['__ac_name'] = student_id
    7575args['__ac_password'] = password
     76logger.info('%s changed password from %s to %s' % (member_id,old_password,password))
    7677from urllib import urlencode
    7778url = "%s/logged_in?%s" % (context.absolute_url(),urlencode(args))
  • WAeUP_SRP/branches/uli/skins/waeup_student/clearance_edit.py

    r1217 r1593  
    1616current = DateTime.DateTime()
    1717import logging
    18 logger = logging.getLogger('Student.Clearance.Edit')
     18logger = logging.getLogger('Skins.clearance_edit')
    1919request = REQUEST
    2020
     
    7070    if cpsdocument_edit_button or result_edit_button:
    7171        psm = "Content changed!"
    72         logger.info('"%s","edited clearance of","%s"' % (member_id,student_id ))
     72        logger.info('%s edited clearance of %s' % (member_id,student_id ))
    7373        if clear_doc.clr_ac_pin == "":
    7474            res = context.portal_pins(student=member_id)
     
    9292                    missing = True
    9393            if missing:
    94                 logger.info('"%s","requested clearance with documents missing"' % (student_id))
     94                logger.info('%s requested clearance with documents missing' % (student_id))
    9595                psm = "You have not uploaded all necessary documents to request clearance!"
    9696            else:
    97                 logger.info('"%s","requested clearance"' % (student_id))
     97                logger.info('%s requested clearance' % (student_id))
    9898                info['clear_doc'].edit(mapping = {'request_date': current,})
    9999                wftool.doActionFor(info['clear'],'close')
     
    103103                    action = "/clearance_view"
    104104        elif acknowledge and info['review_state'] != "clearance_pin_entered":
    105             logger.info('"%s","repeatedly requested clearance"' % (student_id))
     105            logger.info('%s repeatedly requested clearance' % (student_id))
    106106            psm = "You have already requested clearance!"
    107107        else:
    108108            psm = "You must tick the acknowledgement check box before submission!"
    109109    elif clear_and_validate_button and info['review_state'] == "clearance_requested":
    110         logger.info('"%s","cleared","%s"' % (member_id,student_id ))
     110        logger.info('%s cleared %s' % (member_id,student_id ))
    111111        #from Products.zdb import set_trace
    112112        #set_trace()
     
    117117        psm = "This student is already cleared!"
    118118    elif reject_clearance_button:
    119         logger.info('"%s","rejected clearance for","%s"' % (member_id,student_id ))
     119        logger.info('%s rejected clearance for %s' % (member_id,student_id ))
    120120        wftool.doActionFor(info['clear'],'open')
    121121        wftool.doActionFor(info['student'],'reject_clearance')
    122122        action = "/contact_student_form"
    123123        psm = "Student's clearance request has been rejected! Please fill and submit the form below!"
     124        subject = "Clearance request rejected"
     125        args['subject'] = subject
     126        args['continue'] = 'external_clearance_edit_form'
    124127else:
    125128    psm = "Please correct your errors!"
     
    128131args['portal_status_message'] = psm
    129132url = clear.absolute_url() + action + '?' + urlencode(args)
    130 REQUEST.RESPONSE.redirect(url)
     133return REQUEST.RESPONSE.redirect(url)
    131134
  • WAeUP_SRP/branches/uli/skins/waeup_student/clearance_slip.pt

    r1156 r1593  
    1 <metal:html tal:define="info context/getClearanceInfo">
    2   <metal:body use-macro="here/main_template/macros/master">
    3     <metal:main fill-slot="main">
     1<metal:body use-macro="here/main_template/macros/master">
     2    <metal:main fill-slot="main"
     3                 tal:define="info context/getClearanceInfo">
    44      <span tal:condition="not: info">
    55        <span tal:content="here/illegal_view" />
     
    6666      </span>
    6767    </metal:main>
    68   </metal:body>
    69 </metal:html>
     68</metal:body>
  • WAeUP_SRP/branches/uli/skins/waeup_student/contact_student_form.pt

    r1455 r1593  
     1<metal:block define-macro="contact_student_form">
    12<metal:body use-macro="here/main_template/macros/master">
    23    <metal:main fill-slot="main"
    34                tal:define="member python:context.portal_membership.getAuthenticatedMember();
    45                        info context/getStudentBaseInfo;
     6                        subject python:context.REQUEST.get('subject');
     7                        continue python:context.REQUEST.get('continue')
    58                        ">
    69      <span tal:condition="not: info">
     
    811      </span>                       
    912   
    10       <span tal:condition="info">
     13      <span tal:condition="python: info and subject">
    1114      <h3>Contact Student</h3>
    1215      <br />
     
    2326      <input type="hidden" name="student_email" type="text" id="student_email"
    2427             tal:attributes="value info/student/email"/>                   
    25 
     28      <input type="hidden" name="probtype" type="text" id="probtype"
     29             tal:attributes="value subject"/>     
     30             
    2631      <table width="100%" border="0" cellspacing="5" cellpadding="0">
    2732        <tr>
     
    4247        </tr>
    4348        <tr>
    44           <td>
    45              <strong>Type of Rejection: </strong>
     49          <td valign="top">
     50             <strong>Reason of Notification: </strong>
    4651          </td>
    47           <td>
    48               <select name="probtype" class="boxgreen" id="probtype">
    49                 <option>Clearance request rejected</option>
    50               </select>       
     52          <td valign="bottom">
     53             <span tal:content="subject" />
    5154          </td>
    5255        </tr>       
     
    6770      </span>
    6871      <form action="." method="post" class="group">
    69             <input type="submit" name="external_clearance_edit_form:method"
     72            <input type="submit" name="."
     73                       tal:attributes="name string:${continue}:method"
    7074                       class="context" value="Continue" />
    7175      </form>     
     
    7377    </metal:main>
    7478</metal:body>
     79</metal:block>
  • WAeUP_SRP/branches/uli/skins/waeup_student/course_registration_slip.pt

    r1516 r1593  
    1 <metal:html tal:define="info context/getStudyLevelInfo;
     1<metal:body use-macro="here/main_template/macros/master">
     2    <metal:main fill-slot="main"
     3                tal:define="info context/getStudyLevelInfo;
    24                  is_so context/isSectionOfficer;
    35                  is_ca info/is_ca;
    46                  show_check_boxes info/show_check_boxes;
    5                   is_student info/is_student;
    6                   status_info info/status_info;
    7                   review_state info/review_state;
    8                   view_only info/view_only">
    9   <metal:body use-macro="here/main_template/macros/master">
    10     <metal:main fill-slot="main">
     7                  validated python:context.getStudentReviewState() in ('courses_validated',);
     8                              is_student info/is_student;
     9                          status_info info/status_info;
     10                          review_state info/review_state;
     11                          view_only info/view_only">
    1112      <span tal:condition="not: info">
    1213        <span tal:content="here/illegal_view" />
     
    1415      <span tal:condition="info">
    1516      <h3>Course Registration Slip</h3>
     17     
    1618      <br />
    17       <table width="" cellpadding="2" cellspacing="0">
     19     
     20      <div tal:condition="validated">
     21        - validated by Course Adviser -
     22      </div>
     23      <div tal:condition="not: validated">
     24        - not yet validated by Course Adviser -
     25      </div>
     26     
     27      <br />
     28      <span tal:omit-tag=""
     29            tal:content="structure python: info['app_doc'].render(proxy=info['app_doc'],
     30            layout_mode='view_info',
     31            layout_id='student_application_fe')"
     32            />           
     33
     34      <table  cellpadding="2" cellspacing="0">
    1835          <tr>
    19             <td valign="top"><span class="dlabel">Name</span>:
    20             </td>
    21             <td>
    22               <span tal:content="info/student/name" />
    23             </td>     
    24           </tr>
    25           <tr>
    26             <td valign="top"><span class="dlabel">Student Id</span>:
    27             </td>
    28             <td>
    29               <span tal:content="info/student/id" />
    30             </td>     
    31           </tr>
    32           <tr>
    33             <td valign="top"><span class="dlabel">Matriculation No</span>:
    34             </td>
    35             <td>
    36               <span tal:content="info/student/matric_no" />
    37             </td>     
    38           </tr>
    39           <tr>
    40             <td valign="top"><span class="dlabel">Faculty Id</span>:
     36            <td valign="top" width="180px"><span class="dlabel">Faculty Id</span>:
    4137            </td>
    4238            <td>
     
    111107       </span>             
    112108    </metal:main>
    113   </metal:body>
    114 </metal:html>
     109</metal:body>
    115110 
  • WAeUP_SRP/branches/uli/skins/waeup_student/create_level.py

    r1513 r1593  
    2121response = request.RESPONSE
    2222redirect = response.redirect
    23 logger = logging.getLogger('Student.create_level')
     23logger = logging.getLogger('Skins.create_level')
    2424mtool = context.portal_membership
    2525member = mtool.getAuthenticatedMember()
     
    3030cert_id = student.course
    3131current_level = student.level
    32 in_progress =  session.get('in_progress','finished')
    33 if in_progress == 'finished':
     32in_progress =  request.get('in_progress','not started')
     33
     34if context.hasObject(current_level):
     35    response.redirect("%s/%s" % (context.absolute_url(),current_level))
     36    return
     37
     38if in_progress in ('not started','started'):
    3439    session.set('in_progress','started')
    35     view = context.in_progress_view(refresh=3,page='%s/study_level_view' % current_level)
     40    view = context.in_progress_view(refresh=3,page='create_level?in_progress=started')
    3641    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    3742    response.setHeader('Content-length','%d' % (len(view)))
     
    3944    response.write(view)
    4045    response.write('')
    41 elif in_progress == 'started':
    42     return
     46    if in_progress == 'started':
     47        return
     48   
     49
    4350context.invokeFactory('StudentStudyLevel',"%s" % current_level)
    4451level = getattr(context,"%s" % current_level)
     
    5764        c_res = aq_courses(query)
    5865        if not c_res:
    59             logger.info('"%s","%s course not found in courses catalog"' % (student.id,co.CosCode))
     66            logger.info('%s", course %s not found in courses_catalog' % (student.id,co.CosCode))
    6067            continue
    6168        course_cat_entry = c_res[0]
     
    6774                score = int(co.Score)
    6875            except:
    69                 logger.info('"%s"," course %s invalid score %s"' % (student.id,
     76                logger.info('%s, course %s has invalid score %s"' % (student.id,
    7077                                                                    co.CosCode,
    7178                                                                    co.Score))
    7279                continue
    73             if int(c_res[0].passmark) <= score: 
     80            if int(c_res[0].passmark) <= score:
    7481                continue
    7582            carry_over = True
     
    99106        d['core_or_elective'] = getattr(c.getObject().getContent(),'core_or_elective')
    100107        course_result.getContent().edit(mapping=d)
    101 session.set('in_progress','finished')
    102108return
    103 return response.redirect("%s" % level.absolute_url())
  • WAeUP_SRP/branches/uli/skins/waeup_student/getAccommodationInfo.py

    r1474 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Accommodation.Info')
     15logger = logging.getLogger('Skins.getAccommodationInfo')
    1616import DateTime
    1717
     
    2929    requested_id = context.getStudentId()
    3030    if requested_id and not context.isStaff() and member_id != requested_id:
    31         logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     31        logger.info('%s tried to access %s' % (member_id,requested_id))
    3232        return None
    3333    elif context.isStaff():
     
    3737res = context.students_catalog(id=student_id)
    3838if len(res) != 1:
    39     logger.info('"%s","not found in students_catalog"')
     39    logger.info('%s not found in students_catalog' % student_id)
    4040    return None
    4141
  • WAeUP_SRP/branches/uli/skins/waeup_student/getApplicationInfo.py

    r1435 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Application.Info')
     15logger = logging.getLogger('Skins.getApplicationInfo')
    1616
    1717request = context.REQUEST
     
    2828requested_id = context.getStudentId()
    2929if requested_id and not context.isStaff() and member_id != requested_id:
    30     logger.info('"%s", "accessed application object of", "%s"' % (member_id,requested_id))
     30    logger.info('%s tried to access application object of %s' % (member_id,requested_id))
    3131    student_id = requested_id
     32    return None
    3233elif context.isStaff():
    3334    student_id = requested_id
  • WAeUP_SRP/branches/uli/skins/waeup_student/getClearanceInfo.py

    r1162 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Clearance.Info')
     15logger = logging.getLogger('Skins.getClearanceInfo')
    1616from DateTime import DateTime
    1717
     
    3030requested_id = context.getStudentId()
    3131if requested_id and not context.isStaff() and member_id != requested_id:
    32     logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     32    logger.info('%s tried to access %s' % (member_id,requested_id))
    3333    return None
    3434elif context.isStaff():
  • WAeUP_SRP/branches/uli/skins/waeup_student/getMemberInfo.py

    r1541 r1593  
    2828requested_id = context.getStudentId()
    2929if requested_id and not context.isStaff() and member_id != requested_id:
    30     logger.info('"%s", "accessed personal object of", "%s"' % (member_id,requested_id))
     30    logger.info('%s tried to access personal object of %s' % (member_id,requested_id))
    3131    student_id = requested_id
     32    return None
    3233elif context.isStaff():
    3334    student_id = requested_id
  • WAeUP_SRP/branches/uli/skins/waeup_student/getNewStudentStatistics.py

    r1530 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Statistics')
     15logger = logging.getLogger('Skins.getNewStudentStatistics')
    1616
    1717try:
     
    2121except:
    2222    evalAdvancedQuery = None
    23 logger.info('"%s","invoked new statistics"' % context.portal_membership.getAuthenticatedMember())
     23logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
    2424l = []
    2525if not context.isStaff():
     
    108108    if total:
    109109        dep['cleared_and_validated_percent'] = "%.0f" % round(cav*100/total)
    110        
     110
    111111    ora = len([s for s in fac_ids if s in or_ids])
    112112    dep['objection_raised'] = ora
  • WAeUP_SRP/branches/uli/skins/waeup_student/getPersonalInfo.py

    r1203 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Personal.Info')
     15logger = logging.getLogger('Skins.getPersonalInfo')
    1616
    1717request = context.REQUEST
     
    2828requested_id = context.getStudentId()
    2929if requested_id and not context.isStaff() and member_id != requested_id:
    30     logger.info('"%s", "accessed personal object of", "%s"' % (member_id,requested_id))
     30    logger.info('%s tried to access personal object of %s' % (member_id,requested_id))
    3131    student_id = requested_id
     32    return None
    3233elif context.isStaff():
    3334    student_id = requested_id
  • WAeUP_SRP/branches/uli/skins/waeup_student/getRegStatistics.py

    r1530 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Statistics')
     15logger = logging.getLogger('Skins.getRegStatistics')
    1616
    1717try:
     
    2121except:
    2222    evalAdvancedQuery = None
    23 logger.info('"%s","invoked reg statistics"' % context.portal_membership.getAuthenticatedMember())
     23logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
    2424l = []
    2525if not context.isStaff():
     
    8181    if total:
    8282        dep['courses_registered_percent'] = "%.0f" % round(creg*100/total)
    83        
     83
    8484    cval = len([s for s in fac_ids if s in cval_ids])
    8585    dep['courses_validated'] = cval
  • WAeUP_SRP/branches/uli/skins/waeup_student/getRetStudentStatistics.py

    r1536 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Statistics')
     15logger = logging.getLogger('Skins.getRetStudentStatistics')
    1616
    1717try:
     
    2121except:
    2222    evalAdvancedQuery = None
    23 logger.info('"%s","invoked returning statistics"' % context.portal_membership.getAuthenticatedMember())
     23logger.info('%s invoked statistics' % context.portal_membership.getAuthenticatedMember())
    2424l = []
    2525if not context.isStaff():
    2626    return l
    2727dep = {}
    28 sum = 0
    2928dep['id'] = "All Faculties"
    3029
    31 #from Products.zdb import set_trace;set_trace()
    3230
    33 ret_res = context.portal_catalog(review_state ='returning')
    34 ret_ids = [r.getId for r in ret_res]
    35 ret = len(ret_res)
    36 dep['total'] = ret
     31ret_res1 = context.portal_catalog(review_state = 'returning')
     32ret_ids1 = [r.getId for r in ret_res1]
     33total_ret = len(ret_ids1)
     34
     35ret_res2 = context.portal_catalog(review_state = ('school_fee_paid','courses_registered','courses_validated',))
     36ret_ids2 = [r.getId for r in ret_res2]
     37
     38retquery = Ge('level','300') | (Eq('level','200') & Eq('entry_mode','UME'))
     39ret_res3 = aq_students(retquery)
     40ret_ids3 = [r.id for r in ret_res3]
    3741
    3842l.append(dep)
     43sum_ret = 0
     44sum_sfp = 0
    3945fs = context.portal_catalog(portal_type="Faculty")
    4046for fid in [f.getId for f in fs]:
     
    4551    stud_ids = [r.id for r in stud_res]
    4652    total = float(len(stud_res))
    47 
    4853    if total == 0:
    4954        continue
    50 
    51     ret = len([s for s in stud_ids if s in ret_ids])
    52     dep['returned'] = ret
    53     sum += ret
    54 
    55     if ret == 0:
    56         continue
     55    sfp = len([s for s in stud_ids if s in ret_ids2 and s in ret_ids3])
     56    dep['sfp'] = sfp
     57    ret = len([s for s in stud_ids if s in ret_ids1])
     58    dep['ret'] = ret
     59    sum_ret += ret
     60    sum_sfp += sfp
    5761
    5862    l.append(dep)
    5963
    60 l[0]['sum'] = sum
     64l[0]['ret'] = sum_ret
     65l[0]['sfp'] = sum_sfp
     66l[0]['total_ret'] = total_ret + sum_sfp
     67l[0]['total_li'] = sum_ret + sum_sfp
     68
    6169
    6270return l
  • WAeUP_SRP/branches/uli/skins/waeup_student/getSchoolFeePrefix.py

    r1364 r1593  
    1 ## Script (Python) "getMaintenancePrefix"
     1## Script (Python) "getSchoolFeePrefix"
    22##bind container=container
    33##bind context=context
     
    1616    return None
    1717
    18 import logging   
    19 logger = logging.getLogger('EPayment.getSchoolFeePrefix')   
     18import logging
     19logger = logging.getLogger('Skins.getSchoolFeePrefix')
    2020
    2121student_id = context.getStudentId()
     
    2424                                     id = sbrain.course)
    2525if not res:
    26     logger.info('"%s","certificate not found", "%s"' % (student_id,course))
     26    logger.info('%s, certificate %s not found' % (student_id,course))
    2727    prefix = "--"
    2828else:
  • WAeUP_SRP/branches/uli/skins/waeup_student/getSessionResults.py

    r1524 r1593  
    2727if requested_id and not context.isStaff() and member_id != requested_id:
    2828    import logging
    29     logger = logging.getLogger('Student.SessionResults.Info')
    30     logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     29    logger = logging.getLogger('Skins.getSessionResults')
     30    logger.info('%s tried to access %s' % (member_id,requested_id))
    3131    return None
    3232elif context.isStaff():
     
    9999    gpa = "%4.2f" % gpa
    100100
    101 
     101#set_trace()
    102102verdict_voc = context.portal_vocabularies.verdicts
    103 if verdict_voc.has_key(student_from_cat.verdict):
    104     info['verdict'] = verdict = verdict_voc.get(student_from_cat.verdict).upper()
     103verdict_code = student_from_cat.get('verdict',None)
     104if verdict_code:
     105    info['verdict'] = verdict = verdict_voc.get(verdict_code,'N/A').upper()
    105106else:
    106     info['verdict'] = 'N/A'
     107    info['verdict'] = verdict = 'N/A'
    107108
    108109if student_from_cat.level:
  • WAeUP_SRP/branches/uli/skins/waeup_student/getStudentBaseInfo.py

    r1369 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Base.Info')
     15logger = logging.getLogger('Skins.getStudentBaseInfo')
    1616from DateTime import DateTime
    1717
     
    2929requested_id = context.getStudentId()
    3030if requested_id and not context.isStaff() and member_id != requested_id:
    31     logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     31    logger.info('%s tried to access %s' % (member_id,requested_id))
    3232    return None
    3333elif context.isStaff():
  • WAeUP_SRP/branches/uli/skins/waeup_student/getStudentFolderInfo.py

    r1472 r1593  
    1 ## Script (Python) "getStudentInfo"
     1## Script (Python) "getStudentFolderInfo"
    22##bind container=container
    33##bind context=context
     
    2121
    2222import logging
    23 logger = logging.getLogger('Student.Info')
     23logger = logging.getLogger('Skins.getStudentFolderInfo')
    2424
    2525
     
    3838        break
    3939    if member_id != requested_id:
    40         logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     40        logger.info('%s tried to access %s' % (member_id,requested_id))
    4141        student_id = member_id
    4242        mtool.assertViewable(context)
  • WAeUP_SRP/branches/uli/skins/waeup_student/getStudentInfo.py

    r1286 r1593  
    2121
    2222import logging
    23 logger = logging.getLogger('Student.Info')
     23logger = logging.getLogger('Skins.getStudentInfo')
    2424
    2525
     
    4242            break
    4343        if member_id != requested_id:
    44             logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     44            logger.info('%s tried to access %s' % (member_id,requested_id))
    4545            student_id = member_id
    4646            mtool.assertViewable(context)
  • WAeUP_SRP/branches/uli/skins/waeup_student/getStudyCourseInfo.py

    r1537 r1593  
    5252levels = context.objectIds()
    5353review_state = wftool.getInfoFor(context,'review_state',None)
    54 if review_state != 'content_addable':
     54student_review_state = context.getStudentReviewState()
     55if review_state != 'content_addable' and student_review_state == 'school_fee_paid': #and context.isStudent():
    5556    wftool.doActionFor(context,'close_for_edit')
    56 student_review_state = context.getStudentReviewState()
    5757may_register = (student_review_state in ('school_fee_paid',)) and\
    5858               current_level not in levels and\
    5959               (sbrain.verdict in ('A','B') or sbrain.jamb_reg_no.startswith('6'))
    60                
     60
    6161levels.sort()
    6262info['create_level'] = None
     
    7272info['items'] = items
    7373
    74 try: 
     74try:
    7575    info['verdict'] = context.portal_vocabularies.verdicts.get(info['doc'].current_verdict).upper()
    7676except:
    77     info['verdict'] = course.current_verdict 
     77    info['verdict'] = course.current_verdict
    7878
    7979return info
  • WAeUP_SRP/branches/uli/skins/waeup_student/getStudyLevelInfo.py

    r1515 r1593  
    6161info['review_state'] = review_state = context.getStudentReviewState()
    6262info['view_only'] =  review_state != "school_fee_paid"
    63 info['show_check_boxes'] =  (is_ca and review_state in ('courses_registered',)) or\
     63info['show_check_boxes'] =  (is_ca and review_state in ('school_fee_paid',)) or\
    6464                            (is_student and context.getStudentReviewState() == "school_fee_paid") or\
    6565                            (is_so)
     
    108108normal.sort(cmp_semester)
    109109info['normal'] = normal
     110
     111students_object = context.portal_url.getPortalObject().campus.students
     112student = getattr(students_object, student_id)
     113info['app'] = student.application
     114info['app_doc'] = student.application.getContent()
     115
    110116return info
  • WAeUP_SRP/branches/uli/skins/waeup_student/getTransferInfo.py

    r1368 r1593  
    1 ## Script (Python) "getClearanceInfo"
     1## Script (Python) "getTransferInfo"
    22##bind container=container
    33##bind context=context
     
    1313"""
    1414import logging
    15 logger = logging.getLogger('Student.Transfer.Info')
     15logger = logging.getLogger('Skins.getTransferInfo')
    1616from DateTime import DateTime
    1717
     
    2929requested_id = context.getStudentId()
    3030if requested_id and not context.isStaff() and member_id != requested_id:
    31     logger.info('"%s", "tried to access", "%s"' % (member_id,requested_id))
     31    logger.info('%s tried to access %s' % (member_id,requested_id))
    3232    return None
    3333elif context.isStaff():
  • WAeUP_SRP/branches/uli/skins/waeup_student/get_searchable_student_states.py

    r1033 r1593  
    2323    return [item for item in voc.items() if item[0].startswith('clear') or
    2424                                         item[0] in ("all",)]
     25elif "CourseAdvisers" in member.getGroups():
     26    return [item for item in voc.items() if item[0].startswith('courses') or
     27                                         item[0] in ("all",)]
    2528return voc.items()
    2629
  • WAeUP_SRP/branches/uli/skins/waeup_student/layout_application_view_info.pt

    r1435 r1593  
    55              dm options/datastructure/getDataModel;
    66              widgets python:context.getRenderedWidgets(layout);
    7               fields python:('jamb_reg_no','app_email','app_mobile')"
     7              info context/getStudentBaseInfo;"
    88              >
    99 
     
    2020          </td>
    2121          <td>
    22             <span tal:content="python:context.getStudentBaseInfo()['student']['name']" />
     22            <span tal:content="info/student/name" />
    2323          </td>     
    2424        </tr>
     
    2727          </td>
    2828          <td>
    29             <span tal:content="python:context.getStudentBaseInfo()['student']['sex']" />
     29            <span tal:content="info/student/sex" />
    3030          </td>     
    3131        </tr>         
     
    3434          </td>
    3535          <td>
    36             <span tal:content="python:context.getStudentBaseInfo()['id']" />
     36            <span tal:content="info/id" />
    3737          </td>     
    3838        </tr>
    39 
    40         <tr tal:repeat="field fields">
    41           <tal:block tal:define="cell python: widgets[field]">
    42             <tal:block define="widget cell/widget">
    43               <div tal:attributes="class cell/widget_css_class|string:label;
    44               id python:widget.getHtmlWidgetId()+'_widget';"
    45               >
    46                 <td >
    47                   <span class="dlabel"
    48                         tal:condition="widget/label"
    49                         tal:content="widget/label">label</span>:
    50                 </td>
    51                 <td>
    52                   <span tal:replace="structure cell/widget_rendered" />
    53                 </td>
    54               </div>
    55             </tal:block>
    56           </tal:block>
    57         </tr>
     39        <tr valign="top">
     40          <td><span class="dlabel">Matriculation No</span>:
     41          </td>
     42          <td>
     43            <span tal:content="info/student/matric_no" />
     44          </td>     
     45        </tr>       
     46        <tr valign="top">
     47          <td><span class="dlabel">JAMB Registration No</span>:
     48          </td>
     49          <td>
     50            <span tal:content="info/student/jamb_reg_no" />
     51          </td>     
     52        </tr>   
     53        <tr valign="top">
     54          <td><span class="dlabel">Email</span>:
     55          </td>
     56          <td>
     57            <span tal:content="info/student/email" />
     58          </td>     
     59        </tr>         
     60        <tr valign="top">
     61          <td><span class="dlabel">Phone</span>:
     62          </td>
     63          <td>
     64            <span tal:content="info/student/phone" />
     65          </td>     
     66        </tr>         
     67        <tr valign="top">
     68          <td><span class="dlabel">Level</span>:
     69          </td>
     70          <td>
     71            <span tal:content="info/student/level" />
     72          </td>     
     73        </tr>           
    5874      </table>
    5975       
  • WAeUP_SRP/branches/uli/skins/waeup_student/mail2student.py

    r909 r1593  
    3737     co_name,
    3838     co_email,
    39      student_email, 
     39     student_email,
    4040     co_email,
    4141     'henrik@waeup.org',
  • WAeUP_SRP/branches/uli/skins/waeup_student/personal_edit.py

    r1457 r1593  
    1616current = DateTime.DateTime()
    1717import logging
    18 logger = logging.getLogger('Student.Personal.Edit')
     18logger = logging.getLogger('Skins.personal_edit')
    1919
    2020info = context.getPersonalInfo()
    2121
    2222if info is None:
    23     logger.info('"anonymous access","%s"' % REQUEST.get('URL0'))
     23    logger.info('Anonymous user tried to access %s' % REQUEST.get('URL0'))
    2424    return REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
    2525
     
    5353                                              sex = ds.get('sex'),
    5454                                             )
    55         logger.info('"%s", "edited personal data"' % (info['id']))
     55        logger.info('%s edited personal data' % (info['id']))
    5656        #action = ""
    5757        #base_url = student.absolute_url()
  • WAeUP_SRP/branches/uli/skins/waeup_student/raise_objection.py

    r1161 r1593  
    1414import DateTime
    1515import logging
    16 logger = logging.getLogger('Student.Objection')
     16logger = logging.getLogger('Skins.raise_objection')
    1717
    1818wf = context.portal_workflow
    1919info = context.getApplicationInfo()
    2020if not info:
    21     logger.info('"%s", "tried to access", "%s"' % (context.portal_membership.getAuthenticatedMember(),context.getStudentId()))
     21    logger.info('%s tried to access %s' % (context.portal_membership.getAuthenticatedMember(),context.getStudentId()))
    2222    return context.admission_form()
    2323current = DateTime.DateTime()
  • WAeUP_SRP/branches/uli/skins/waeup_student/refresh_level.py

    r1510 r1593  
    1 ##parameters=
     1## Script (Python) "refresh_level"
     2##bind container=container
     3##bind context=context
     4##bind namespace=
     5##bind script=script
     6##bind subpath=traverse_subpath
     7##parameters=REQUEST=None, student=None, action_after_reject=None, action_after_validate=None
    28# $Id$
    39"""
     
    1622aq_courses = context.courses_catalog.evalAdvancedQuery
    1723
     24import logging
     25logger = logging.getLogger('Skins.refresh_level')
     26
     27from urllib import urlencode
     28
    1829current = DateTime.DateTime()
    1930request = context.REQUEST
     
    2132response = request.RESPONSE
    2233redirect = response.redirect
    23 logger = logging.getLogger('Student.create_level')
     34logger = logging.getLogger('Skins.refresh_level')
    2435mtool = context.portal_membership
    2536member = mtool.getAuthenticatedMember()
     
    3243if in_progress == 'finished':
    3344    session.set('in_progress','started')
    34     view = context.in_progress_view(refresh=3,page='study_level_view')
     45    view = context.in_progress_view(refresh=3,page=action_after_validate)
    3546    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    3647    response.setHeader('Content-length','%d' % (len(view)))
     
    5162        c_res = aq_courses(query)
    5263        if not c_res:
    53             logger.info('"%s","%s course not found in courses catalog"' % (student.id,co.CosCode))
     64            logger.info('%s, course %s not found in courses_catalog' % (student.id,co.CosCode))
    5465            continue
    5566        course_cat_entry = c_res[0]
     
    6071                score = int(co.Score)
    6172            except:
    62                 logger.info('"%s"," course %s invalid score %s"' % (student.id,
     73                logger.info('%s, course %s has invalid score %s' % (student.id,
    6374                                                                    co.CosCode,
    6475                                                                    co.Score))
    6576                continue
    66             if int(c_res[0].passmark) <= score: 
     77            if int(c_res[0].passmark) <= score:
    6778                continue
    6879            carry_over = True
     
    96107            course_result.getContent().edit(mapping=d)
    97108session.set('in_progress','finished')
    98 return
    99 return response.redirect("%s" % level.absolute_url())
     109logger.info('%s updated course list' % member)
     110
     111args = {}
     112psm = "Course list updated!"
     113args['portal_status_message'] = psm
     114url = context.absolute_url() + '/' + action_after_validate + '?' + urlencode(args)
     115return REQUEST.RESPONSE.redirect(url)
  • WAeUP_SRP/branches/uli/skins/waeup_student/register_courses.py

    r1513 r1593  
    1 ## Script (Python) "getStudyCourseInfo"
     1## Script (Python) "register_courses"
    22##bind container=container
    33##bind context=context
     
    55##bind script=script
    66##bind subpath=traverse_subpath
    7 ##parameters=student=None
     7##parameters=REQUEST=None, student=None, action_after_reject=None, action_after_validate=None
    88##title=
    99##
     
    1212close the Students StudyLevel
    1313"""
     14from Products.CMFCore.WorkflowCore import WorkflowException
    1415try:
    1516    from Products.zdb import set_trace
     
    1819        pass
    1920
     21from urllib import urlencode       
     22
    2023request = context.REQUEST
    2124mtool = context.portal_membership
     
    2326member_id = str(member)
    2427import logging
    25 logger = logging.getLogger('Student.register_courses')
     28logger = logging.getLogger('Skins.register_courses')
    2629
    2730wftool = context.portal_workflow
    28 wftool.doActionFor(context,'close')
    2931students_folder = context.portal_url.getPortalObject().campus.students
    30 student = getattr(students_folder,context.getStudentId())
    31 wftool.doActionFor(student,'register_courses')
    32 logger.info('"%s","courses registered"' % student.getId())
    33 return request.RESPONSE.redirect("%s" % context.absolute_url())
     32student_id = context.getStudentId()
     33student = getattr(students_folder,student_id)
     34try:
     35    wftool.doActionFor(context,'close')
     36except WorkflowException,E:
     37    logger.info('%s WorkflowException %s for %s' % (member_id,E,student_id))
     38    return request.RESPONSE.redirect("%s" % context.absolute_url())
     39try:
     40    wftool.doActionFor(student,'register_courses')
     41except WorkflowException,E:
     42    logger.info('%s WorkflowException %s for %s' % (member_id,E,student_id))
     43    return request.RESPONSE.redirect("%s" % context.absolute_url())
     44logger.info('%s registered course list of %s' % (member_id,student_id))
     45
     46args = {}
     47psm = "You successfully submitted your course list!"
     48args['portal_status_message'] = psm
     49url = context.absolute_url() + '/' + action_after_validate + '?' + urlencode(args)
     50return REQUEST.RESPONSE.redirect(url)
  • WAeUP_SRP/branches/uli/skins/waeup_student/reject_courses.py

    r1515 r1593  
    1 ## Script (Python) "getStudyCourseInfo"
     1## Script (Python) "reject_courses"
    22##bind container=container
    33##bind context=context
     
    55##bind script=script
    66##bind subpath=traverse_subpath
    7 ##parameters=student=None
     7##parameters=REQUEST=None, student=None, action_after_reject=None, action_after_validate=None
    88##title=
    99##
     
    1212close the Students StudyLevel
    1313"""
     14from Products.CMFCore.WorkflowCore import WorkflowException
    1415try:
    1516    from Products.zdb import set_trace
     
    1718    def set_trace():
    1819        pass
    19 
     20from urllib import urlencode
    2021request = context.REQUEST
    2122mtool = context.portal_membership
     
    2324member_id = str(member)
    2425import logging
    25 logger = logging.getLogger('Student.reject_courses')
     26logger = logging.getLogger('Skins.reject_courses')
    2627
    2728wftool = context.portal_workflow
     
    2930wftool.doActionFor(context,'close_for_edit')
    3031students_folder = context.portal_url.getPortalObject().campus.students
    31 student = getattr(students_folder,context.getStudentId())
    32 wftool.doActionFor(student,'reject_courses')
    33 logger.info('"%s","rejects course list for","%s"' % (member,student.getId()))
    34 return request.RESPONSE.redirect("%s" % context.absolute_url())
     32student_id = context.getStudentId()
     33student = getattr(students_folder,student_id)
     34try:
     35    wftool.doActionFor(student,'reject_courses')
     36except WorkflowException,E:
     37    logger.info('%s WorkflowException %s for %s' % (member_id,E,student_id))
     38    return request.RESPONSE.redirect("%s" % context.absolute_url())
     39logger.info('%s rejected course list of %s' % (member_id,student_id))
     40
     41args = {}
     42
     43psm = "Student's course list has been rejected! Please fill and submit the form below!"
     44subject = "Course list rejected"
     45args['subject'] = subject
     46args['continue'] = action_after_validate
     47args['portal_status_message'] = psm
     48url = context.absolute_url() + '/' + action_after_reject + '?' + urlencode(args)
     49return REQUEST.RESPONSE.redirect(url)
  • WAeUP_SRP/branches/uli/skins/waeup_student/request_transfer.py

    r1378 r1593  
    1414import logging
    1515from urllib import urlencode
    16 logger = logging.getLogger('Student.Transfer.Request')
     16logger = logging.getLogger('Skins_request_transfer')
    1717import DateTime
    1818lt = context.portal_layouts
     
    2828requested_id = context.getStudentId()
    2929if requested_id and not context.isStaff() and member_id != requested_id:
    30     logger.info('"%s", "accessed application object of", "%s"' % (member_id,requested_id))
     30    logger.info('%s tried to access object of %s' % (member_id,requested_id))
    3131    student_id = requested_id
     32    return None
    3233elif context.isStaff():
    3334    student_id = requested_id
     
    5051
    5152if paid:
    52     logger.info('"%s", "opened (paid) request transfer form of", "%s"' % (member_id,student_id))
     53    logger.info('%s opened (paid) request transfer form of %s' % (member_id,student_id))
    5354    return context.request_transfer_form(rendered = None,
    5455                                 psm = None,
     
    9192    payments = getattr(student,'payments')
    9293#from Products.zdb import set_trace; set_trace()
     94
     95logger.info('%s paid transfer form for %s' % (member_id,student_id))
    9396info = {}
    9497order_id = ds.get('pin_n')
  • WAeUP_SRP/branches/uli/skins/waeup_student/search_students.py

    r1500 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('Search.Timer')
     15logger = logging.getLogger('Skins.search_students')
    1616from DateTime import DateTime
    1717#
     
    6161user_info['faculties'] = []
    6262co_view = False
     63ca_view = False
    6364faculties =  fget('faculties')
    6465departments = fget('departments')
    65 dep_str = fac_str = ''
     66certificate_level = fget('certificate_level')
     67dep_str = fac_str = certificate_level_str = ''
    6668if "ClearanceOfficers" in member.getGroups():
    6769    state = "clearance_requested"
     
    8082                 In('localUsersWithRoles', ("user:%s" % member,))
    8183        res = evalAdvancedQuery(query)
     84        logger.info('ClearanceOfficer %s initiated student_search' % member)
    8285        faculties = []
    8386        if res:
     
    9396        user_info['departments'] = departments
    9497        dep_str = " ".join(departments)
     98elif "CourseAdvisers" in member.getGroups():
     99    state = "courses_registered"
     100    only_review = False
     101    ca_view = True
     102    if certificate_level:
     103        #from Products.zdb import set_trace;set_trace()
     104        certificate_level_str = certificate_level
     105        certificate_level = certificate_level.split()
     106    else:
     107        query = In('portal_type',('StudyLevel',)) &\
     108                 In('localUsersWithRoles', ("user:%s" % member,))
     109        res = evalAdvancedQuery(query)
     110        logger.info('CourseAdviser %s initiated student_search' % member)
     111        certificate_level = []
     112        if res:
     113            certificate_level = ['/'.join(f.getPath().split('/')[-2:]) for f in res]
     114        user_info['certificate_level'] = certificate_level
     115        certificate_level_str = " ".join(certificate_level)
    95116default = {'search_mode': 'student_id',
    96117        'review_state': state,
     
    106127                      faculties = fac_str,
    107128                      departments = dep_str,
     129                      certificate_level = certificate_level_str,
    108130                      commit = False,
    109131                      )
     
    148170        students_folder = context.portal_url.getPortalObject().campus.students
    149171        if hasattr(students_folder,term.strip()):
     172            logger.info('%s searches for student with id %s' % (member,term))
    150173            request.RESPONSE.redirect("%s/%s" % (students_folder.absolute_url(),term))
    151174        return context.search_students_form(rendered = rend,
     
    156179    elif what == "department":
    157180        res = context.students_catalog(department=term.strip())
     181        logger.info('%s searches for student in department %s' % (member,term))
    158182        search_set = [r.id for r in res]
    159183    elif what == "matric_no":
    160184        res = context.students_catalog(matric_no=term.strip())
     185        logger.info('%s searches for student with matric_no %s' % (member,term))
    161186        search_set = [r.id for r in res]
    162187    elif what == "jamb_reg_no":
     
    164189        st_u = "%s" % term.strip().upper()
    165190        res = aq_students(In('jamb_reg_no',(st_l,st_u)))
     191        logger.info('%s searches for student with jamb_reg_no %s' % (member,term))
    166192        search_set = [r.id for r in res]
    167193    elif what == "name":
    168194        pt = ('StudentPersonal')
    169195        query = In('portal_type',pt) & Eq('SearchableText',"%s*" % term.strip())
     196        logger.info('%s searches for student with name %s' % (member,term))
    170197        res = evalAdvancedQuery(query)
    171198        if res:
     
    181208    query = Eq('review_state',state)
    182209    review_res = evalAdvancedQuery(query)
     210
     211    logger.info('%s searches for students in review_state %s' % (member,state))
     212
    183213    if with_timer:
    184214        end = DateTime().timeTime()
     
    196226        logger.info('"%s","searchtime","%6.2f"' % (member,end-start))
    197227    start = DateTime().timeTime()
     228    search_set = [r.id for r in res]
     229    if with_timer:
     230        end = DateTime().timeTime()
     231        logger.info('"%s","searchtime","%6.2f"' % (member,end-start))
     232elif ca_view:
     233    only_review = False
     234    with_review = True
     235    if with_timer:
     236        start = DateTime().timeTime()
     237        logger.info('"%s","start 200"' % member)
     238    courses = [cl.split('/')[0] for cl in certificate_level]
     239    levels = [cl.split('/')[1] for cl in certificate_level]
     240    query = In('course',courses) & In('level',levels)
     241    res = aq_students(query)
     242    if with_timer:
     243        end = DateTime().timeTime()
     244        logger.info('"%s","searchtime","%6.2f"' % (member,end-start))
     245        start = DateTime().timeTime()
    198246    search_set = [r.id for r in res]
    199247    if with_timer:
     
    250298                             allowed = allowed,
    251299                             co_view = co_view,
     300                             ca_view = ca_view
    252301                             )
    253302return context.search_students_form(rendered = rend,
  • WAeUP_SRP/branches/uli/skins/waeup_student/search_students_form.pt

    r1570 r1593  
    11<metal:body use-macro="here/main_template/macros/master">
    2     <metal:block fill-slot="header"
    3                  tal:define="creation creation|nothing;
    4                  edition edition|nothing;
    5                  metadata metadata|nothing"
    6                  >
    7     </metal:block>
    8    
    92    <metal:main fill-slot="main"
    103            tal:define="rendered options/rendered;
     
    125            students options/students;
    136            info options/info|nothing;
    14             is_so context/isSectionOfficer;           
     7            is_so context/isSectionOfficer;
    158            allowed options/allowed|nothing"
    169            >
     
    3023      &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
    3124      <span tal:condition="is_so">
    32       <nobr><a href="view_logs">View Log Files</a>
    33       &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
    34 
     25         <nobr><a href="view_logs">View Log Files</a>
     26         &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
    3527         <nobr><a href="add_student">Add Student Record</a>       
    3628         &nbsp;&nbsp;&nbsp;&nbsp;</nobr>
     
    9789                         onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
    9890                         >[view and change state]</a></td>
    99                     <td tal:condition="options/co_view|nothing"><span tal:replace="student/review_state|nothing" /></td>   
     91                    <td tal:condition="options/ca_view|nothing">
     92                      <a href="id"
     93                         tal:attributes="href string:${context/portal_url}/campus/students/${student/id}/study_course/study_course/${student/level}/external_study_level_view"
     94                         target="edit"
     95                         onclick="javascript:window.open('','edit','width=600, height=700, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, status=no, resizable=no, dependent=no')"
     96                         >[view and validate course list]</a></td>
    10097                  </tr>
    10198                </span>
  • WAeUP_SRP/branches/uli/skins/waeup_student/set_access_data.py

    r1267 r1593  
    88current = DateTime.DateTime()
    99pr = context.portal_registration
    10 logger = logging.getLogger('Student.SetAccessData')
     10logger = logging.getLogger('Skins.set_access_data')
    1111validate = REQUEST.has_key("cpsdocument_edit_button")
    1212
    1313if matric_no is None:
    14     logger.info('"No matric_no in request"')
     14    logger.info('No matric_no in request')
    1515    return REQUEST.RESPONSE.redirect("%s" % context.portal_url())
    1616lt = context.portal_layouts
     
    2121    sid = st_res[0].id
    2222else:
    23     logger.info('"%s","Studentobject does not exist"' % matric_no)
     23    logger.info('Student object with matric_no does not exist' % matric_no)
    2424res,psm,ds = lt.renderLayout(layout_id= 'student_session_results_search',
    2525                      schema_id= 'student_returning',
     
    5353        #psm = "You are already registered please log in with your UserId %s" % sid
    5454        psm = ""
    55         logger.info('"%s","repeatedly tried to set password"' % sid)
     55        logger.info('%s repeatedly tried to set password' % sid)
    5656    except:
    5757        psm = "The system encountered an error. Please try again."
    58         logger.info('"%s","set_access error","%s"' % (sid,password))
     58        logger.info('%s, makeStudentMember error, password = %s' % (sid,password))
    5959if psm != '':
    6060    return context.set_access_data_form(rendered = res,
  • WAeUP_SRP/branches/uli/skins/waeup_student/start_clearance.py

    r1364 r1593  
    88pr = context.portal_registration
    99import logging
    10 logger = logging.getLogger('Student.Clearance.Start')
     10logger = logging.getLogger('Skins.start_clearance')
    1111
    1212#type_name = 'Student'
     
    2323if info is None:
    2424    member_id = str(context.portal_membership.getAuthenticatedMember())
    25     logger.info('"%s","tried to start clearance for", "%s"' % (member_id,request.get('PATH_INFO').split('/')[-2]))
     25    logger.info('%s tried to start clearance for %s' % (member_id,request.get('PATH_INFO').split('/')[-2]))
    2626    return redirect("%s/srp_invalid_access" % context.portal_url())
    2727app_doc = info['app_doc']
     
    5555    psm = "You have already entered a clearance pin!"
    5656    error = True
    57     logger.info('"%s", "tried to start clearance though already started"' % (info['id']))
     57    logger.info('%s tried to start clearance though already started' % (info['id']))
    5858elif psm == 'invalid':
    5959    psm = "Please correct your input!"
    6060    error = True
    61     logger.info('"%s","entered wrong clearance pin"' % (info['id']))
     61    logger.info('%s entered wrong clearance pin' % (info['id']))
    6262elif app_doc.passport is None:
    6363    #psm = "You must upload your passport picture before you can start the registration process!"
    6464    #error = True
    65     logger.info('"%s", "started clearance without passport picture"' % (info['id']))
     65    logger.info('%s started clearance without passport picture' % (info['id']))
    6666if error:
    6767    return context.clearance_pin_form(rendered = res,
     
    7474session.set("clicked","clicked")
    7575pin = str(ds.get('clr_ac_pin'))
    76 logger.info('"%s", "started clearance with pin", "%s"' % (info['id'],pin))
     76logger.info('%s started clearance with pin %s' % (info['id'],pin))
    7777wf.doActionFor(info['student'],'enter_clearance_pin')
    7878wf.doActionFor(info['clear'],'open')
     
    8989
    9090if info['penalty']:
    91     logger.info('"%s","started late clearance"' % (info['id']))
     91    logger.info('%s started late clearance' % (info['id']))
    9292
    9393return redirect("%s/clearance_edit_form" % info['clear'].absolute_url())
  • WAeUP_SRP/branches/uli/skins/waeup_student/statistics_ret_view.pt

    r1532 r1593  
    2424      <h3>Returning Student Statistics</h3>
    2525      <br />     
     26      <span tal:content="python:departments[0]['total_ret']" />
     27      returning student records have been imported.
     28      <span tal:content="python:departments[0]['total_li']" /> returning students
     29      have logged in.
     30      <br /><br />
    2631      <span tal:condition="not:isAnon">
    2732        <table>
    2833          <tr class="odd ajaxtd">
    2934            <th >Faculty</th>
    30             <th align="right">Returning</th>
     35            <th align="right">RET</th>
     36            <th align="right">SFP</th>
    3137          </tr>
    3238          <tr tal:define="d python:departments[0]"
     
    3440              <td width="80px">All Faculties</td>
    3541              <td width="80px" align="right">
    36                 <span tal:content="d/sum" /> of <span tal:content="d/total" />
     42                <span tal:content="d/ret" />
     43              </td>   
     44              <td width="80px" align="right">
     45                <span tal:content="d/sfp" />
    3746              </td>             
    3847          </tr>
     
    4150              <td width="80px"> <span tal:content="d/id" /> </td>
    4251              <td width="80px" align="right">
    43                 <span tal:content="d/returned " />
    44               </td>             
     52                <span tal:content="d/ret" />
     53              </td>       
     54              <td width="80px" align="right">
     55                <span tal:content="d/sfp" />
     56              </td>                             
    4557          </tr>
    4658        </table>
    4759        <br />
     60        <table>
     61        <tr><td>RET:</td> <td>Returning students who have logged in</td></tr>
     62        <tr><td>SFP:</td> <td>Returning students who already paid their school fee</td></tr>
     63        </table>       
    4864      </span>
    4965      </span>
  • WAeUP_SRP/branches/uli/skins/waeup_student/students_index.py

    r1239 r1593  
    2323students_url = "%s/campus/students" % (context.portal_url())
    2424
    25 if "ClearanceOfficers" in member.getGroups():
    26     return redirect("%s/search_students" % context.portal_url())
     25if "ClearanceOfficers" in member.getGroups() or\
     26   "CourseAdvisers" in member.getGroups():
     27    return redirect("%s/campus/students/search_students" % context.portal_url())
    2728if context.isSectionOfficer():
    28     return redirect("%s/search_students" % context.portal_url())
     29    return redirect("%s/campus/students/search_students" % context.portal_url())
    2930if context.isStudent():
    3031    id = str(member)
  • WAeUP_SRP/branches/uli/skins/waeup_student/study_level_view.pt

    r1519 r1593  
    66                 global is_ca info/is_ca;
    77                 global show_check_boxes info/show_check_boxes;
    8                  global is_student info/is_student;
    9                  global status_info info/status_info;
    10                  global review_state info/review_state;
    11                  global view_only info/view_only">
     8                             global is_student info/is_student;
     9                             global status_info info/status_info;
     10                             global review_state info/review_state;
     11                             global view_only info/view_only">
    1212      <a href=""
    1313         tal:attributes="href string:${here/academicsParent}">
     
    6363        <h4>Session Courses</h4>
    6464        <br />
    65         <table class="contentListing" width="100%" summary="content layout" id="folder_content">     
     65      <div class="" tal:condition="not: info/normal">
     66        Your faculty has not yet provided the list of courses for your certificate. Please contact your faculty!
     67      </div>
     68        <table class="contentListing" width="100%" id="folder_content"
     69               tal:condition="info/normal">     
    6670          <tr tal:repeat="row info/normal"
    6771              tal:attributes="class python:test(repeat['row'].even(), 'even ajaxtd', 'odd ajaxtd')">
     
    97101            <td align="left" valign="top" rowspan="3"></td>
    98102            <td align="left" valign="top">
    99                 <input type="submit" name="course_result_delete:method" value="Delete selected"
     103                <input type="submit" name="delete_course_result:method" value="Delete selected"
    100104                       class="destructive" i18n:attributes="value"
    101105                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
     
    106110                       />
    107111                <br /><br />
    108                 <input type="submit" name="register_courses:method"
     112                <input tal:condition="info/normal"
     113                       type="submit" name="register_courses:method"
    109114                       class="context" value="Submit" />
    110115            </td>
     
    122127                       % (cpsmcat('button_select_all'), cpsmcat('button_deselect_all'))"
    123128                       />
    124                 <input type="submit" name="course_result_delete:method" value="Delete selected"
     129                <input type="submit" name="delete_course_result:method" value="Delete selected"
    125130                       class="destructive" i18n:attributes="value"
    126131                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
    127                        ('really delete checked courses', )"
     132                       ('Do you really want to delete the courses selected?', )"
    128133                       />
    129134                <input
     
    154159                       />
    155160                <input tal:condition="python: review_state == 'school_fee_paid'"
    156                        type="submit" name="course_result_delete:method" value="Delete selected"
     161                       type="submit" name="delete_course_result:method" value="Delete selected"
    157162                       class="destructive" i18n:attributes="value"
    158163                       tal:attributes="onclick python:'return window.confirm(\'%s\')' %
     
    169174                <input tal:condition="python: review_state in ('courses_registered', 'courses_validated',)" type="submit" name="reject_courses:method"
    170175                       class="context" value="Reject" />
     176                       
     177                <input type="hidden" name="action_after_validate" type="text" id="action_after_validate"
     178                       tal:attributes="value string:/study_level_view"/>                         
     179                <input type="hidden" name="action_after_reject" type="text" id="action_after_reject"
     180                       tal:attributes="value string:/contact_student_form"/>   
     181                                             
    171182
    172183            </td>
     
    183194            <td><input type="text" name="course_id"
    184195                       tal:attributes="value request/course_id|nothing"/></td>
    185             <td tal:condition="request/error|nothing"
    186                 tal:content="request/error" />
    187196            <td colspan="2">
    188197              <input type="submit" name="add"
    189198                     class="context" value="Add Course"
    190199                     />
     200              <input type="hidden" name="action_after_validate" type="text" id="action_after_validate"
     201                       tal:attributes="value string:/study_level_view"/>                       
    191202            </td>               
    192203        </table>
  • WAeUP_SRP/branches/uli/skins/waeup_student/validate_courses.py

    r1513 r1593  
    1 ## Script (Python) "getStudyCourseInfo"
     1## Script (Python) "validate_courses"
    22##bind container=container
    33##bind context=context
     
    55##bind script=script
    66##bind subpath=traverse_subpath
    7 ##parameters=student=None
     7##parameters=student=None, action_after_reject=None, action_after_validate=None
    88##title=
    99##
     
    1212close the Students StudyLevel
    1313"""
     14from Products.CMFCore.WorkflowCore import WorkflowException
    1415try:
    1516    from Products.zdb import set_trace
     
    2324member_id = str(member)
    2425import logging
    25 logger = logging.getLogger('Student.validate_courses')
     26logger = logging.getLogger('Skins.validate_courses')
    2627
    2728wftool = context.portal_workflow
    2829students_folder = context.portal_url.getPortalObject().campus.students
    29 student = getattr(students_folder,context.getStudentId())
    30 wftool.doActionFor(student,'validate_courses')
    31 logger.info('"%s","validated courses for","%s"' % (member,student.getId()))
    32 return request.RESPONSE.redirect("%s" % context.absolute_url())
     30student_id = context.getStudentId()
     31student = getattr(students_folder,student_id)
     32try:
     33    wftool.doActionFor(student,'validate_courses')
     34except WorkflowException,E:
     35    logger.info('%s WorkflowException %s for %s' % (member_id,E,student_id))
     36    return request.RESPONSE.redirect("%s" % context.absolute_url())
     37logger.info('%s validated course list of %s' % (member_id,student_id))
     38
     39psm = 'portal_status_message=Course list validated!'
     40url = context.absolute_url() + '/' + action_after_validate +  '?' + psm
     41return request.RESPONSE.redirect(url)
  • WAeUP_SRP/branches/uli/skins/waeup_utilities/createReturningStudent.py

    r1413 r1593  
    1717students_folder = context.portal_url.getPortalObject().campus.students
    1818import logging
    19 logger = logging.getLogger('createReturningStudent')
     19logger = logging.getLogger('Skins.createReturningStudent')
    2020
    2121if not matric_no:
     
    3030    student_brain = res[0]
    3131    sid,jamb_reg_no = context.waeup_tool.createOne(students_folder,student_brain,'?')
    32     logger.info('"%s","Created Student","%s", "%s" ' % (member,sid,matric_no))
     32    logger.info('%s creates student %s %s' % (member,sid,matric_no))
    3333    return "Student MatricNo %s, StudentId %s (JAMBRegNo %s) created" % (matric_no,sid,jamb_reg_no)
    3434
     
    3636count = 1
    3737total = 0
    38 logger.info('"%s","Create Students start"' % (member))
     38logger.info('%s started createReturningStudent"' % (member))
    3939letters = ('ABCDEFGHKLMNPQRSTUVWXYZ')
    4040lc = 0
     
    4242    res = context.students_catalog(matric_no = matric_no)
    4343    if len(res) == 1:
    44         #logger.info('"Student already exists","%s"' % (matric_no))
    4544        continue
    4645    elif len(res) > 1:
    47         logger.info('"Student with multiple entries","%s","%s" ' % (matric_no,len(res)))
     46        logger.info('Student %s with multiple entries (%s)' % (matric_no,len(res)))
     47        # fix at the beginning
    4848        ids = [r.id for r in res if not r.id.startswith('A')]
    49         #from Products.zdb import set_trace;set_trace()
    5049        for id in ids:
    5150            context.students_catalog.deleteRecord(id)
    5251        students_folder.manage_delObjects(ids)
    53         logger.info('"deleted students","%s" ' % " ".join(ids))
     52        logger.info('Student objects deleted: %s' % " ".join(ids))
    5453        continue
    5554    student = context.returning_import(matric_no=matric_no)[0]
     
    5958        lc = 0
    6059    context.waeup_tool.createOne(students_folder,student,letter)
    61     logger.info('"Student created","%s"' % (matric_no))
     60    logger.info('Student created: %s' % (matric_no))
    6261    count += 1
    6362    if count > 10:
    64         logger.info('"%s","Committed Students","%s", "%s" ' % (member,count,total))
     63        logger.info('%s committed students %s, %s' % (member,count,total))
    6564        total += count
    6665        count = 1
    67 logger.info('"%s","Create Students finish","%s"' % (member,total))
     66logger.info('createReturningStudent finished (%s)' % (total))
  • WAeUP_SRP/branches/uli/skins/waeup_utilities/deleteStudentByMatricNo.py

    r1400 r1593  
    1 ## Script (Python) "search_pins"
     1## Script (Python) "deleteStudentByMatricNo"
    22##bind container=container
    33##bind context=context
     
    1212"""
    1313import logging
    14 logger = logging.getLogger('DeleteStudentByMatricNo')
     14logger = logging.getLogger('Skins.deleteStudentByMatricNo')
    1515
    1616request = REQUEST
     
    2626if str(member) not in ('admin','joachim') or matric_no is None:
    2727    return
    28    
    29    
    30 # remove from students_catalog   
     28
     29
     30# remove from students_catalog
    3131
    3232res = st_cat(matric_no=matric_no)
  • WAeUP_SRP/branches/uli/skins/waeup_utilities/fixLevelForNewStudents.py

    r1491 r1593  
    1 ## Script (Python) "search_pins"
     1## Script (Python) "fixLevelForNewStudents"
    22##bind container=container
    33##bind context=context
     
    2323setheader = request.RESPONSE.setHeader
    2424import logging
    25 logger = logging.getLogger('fixLevelForNewStudents')
     25logger = logging.getLogger('Skins.fixLevelForNewStudents')
    2626
    2727def rwrite(s):
     
    5353count_full = 0
    5454commit_count = 0
    55 logger.info("started for %s students" % len(res))
     55logger.info("Started for %s students" % len(res))
    5656to_change = {}
    5757for sbrain in res:
     
    9292    if commit_count > 1000:
    9393        context.waeup_tool.doCommit()
    94         logger.info("committing %s transactions total %s" % (commit_count,count))
     94        logger.info("Committing %s transactions, total %s" % (commit_count,count))
    9595        commit_count = 0
    9696    rwrite("%s: %s %s %s <br />" % (count,sbrain.id,entry_mode,level))
     
    9898    students_cat.modifyRecord(**to_change[entry])
    9999rwrite("finished")
    100 logger.info("finished  %s students" % count)
     100logger.info("Finished  %s students" % count)
  • WAeUP_SRP/branches/uli/skins/waeup_utilities/reindexCoursesCatalog.py

    r1499 r1593  
    1 ## Script (Python) "search_pins"
     1## Script (Python) "reindexCourseCatalog"
    22##bind container=container
    33##bind context=context
     
    2323setheader = request.RESPONSE.setHeader
    2424import logging
    25 logger = logging.getLogger('reindexCourseCatalog')
     25logger = logging.getLogger('Skins.reindexCourseCatalog')
    2626
    2727def rwrite(s):
     
    5151count_full = 0
    5252commit_count = 0
    53 logger.info("reindexing of courses_catalog started for %s courses" % len(courses))
     53logger.info("Reindexing of courses_catalog started for %s courses" % len(courses))
    5454for course_brain in courses:
    5555    course_doc = course_brain.getObject().getContent()
     
    7272    if commit_count > 1000:
    7373        context.waeup_tool.doCommit()
    74         logger.info("committing %s transactions total %s" % (commit_count,count))
     74        logger.info("Committing %s transactions, total %s" % (commit_count,count))
    7575        rwrite("%s: committed %s <br />" % (count,commit_count))
    7676        commit_count = 0
    7777rwrite("finished")
    78 logger.info("finished  reindexing %s courses" % count)
     78logger.info("Reindexing finished (%s courses)" % count)
  • WAeUP_SRP/branches/uli/skins/waeup_utilities/removeResults2.py

    r1508 r1593  
    1 ## Script (Python) "search_pins"
     1## Script (Python) "removeResults2"
    22##bind container=container
    33##bind context=context
     
    1313"""
    1414import logging
    15 logger = logging.getLogger('removeResults2')
     15logger = logging.getLogger('Skins.removeResults2')
    1616
    1717request = REQUEST
     
    4343        to_del.append(r.key)
    4444        rwrite(r.matric_no + " " + r.Level +"  " + r.CosCode + "<br />")
    45 logger.info('"%s", "start to delete %s results"' % (member,len(to_del)))
     45logger.info('%s starts to delete %s results' % (member,len(to_del)))
    4646for uid in to_del:
    4747    rcat.deleteRecord(uid)
    48 logger.info('"%s", "finished with deletion of %s results"' % (member,len(to_del)))
     48logger.info('%s finished deletion of %s results' % (member,len(to_del)))
    4949rwrite("Done")
    5050
  • WAeUP_SRP/branches/uli/skins/waeup_utilities/unpay.py

    r1352 r1593  
    1313"""
    1414import logging
    15 logger = logging.getLogger('EPayment.Unpay')
     15logger = logging.getLogger('Skins.unpay')
    1616import DateTime
     17
     18pm = context.portal_membership
     19member = pm.getAuthenticatedMember()
    1720
    1821request = context.REQUEST
     
    2730#wftool.doActionFor(student,'return')
    2831wftool.doActionFor(student,'clear_and_validate')
    29 logger.info('"%s", "reset to state returning"' % student_id)
     32logger.info('%s resets %s to state returning' % (member,student_id))
    3033
    3134return request.RESPONSE.redirect("%s/waeup_document_view" % context.absolute_url())
Note: See TracChangeset for help on using the changeset viewer.