Ignore:
Timestamp:
11 Sep 2006, 10:39:59 (18 years ago)
Author:
joachim
Message:

Scratchcard Pin Generation
basic login in apply_admission

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/Widgets.py

    r488 r502  
    22
    33from cgi import escape
    4 
     4from types import *
    55from Globals import InitializeClass
    66##from Products.CPSSchemas.Widget import CPSWidgetType
     
    1313from DateTime.DateTime import DateTime
    1414from AccessControl import getSecurityManager
    15 
     15from Products.WAeUP_SRP.Students import getStudentByRegNo
    1616from re import compile
    1717
     
    211211###)
    212212
     213##def getStudentByRegNo(self,reg_no):
     214##    search = self.portal_catalog({'meta_type': 'StudentApplication',
     215##                                  'jamb_reg_no': reg_no,
     216##                                  })
     217##    if len(search) < 1:
     218##        return None
     219##    return search[0].getObject().
     220                   
    213221class JambRegNoWidget(CPSStringWidget): ###(
    214222    """ JambRegNo Widget"""
     
    232240                err = 'Invalid Registration Number in the format: %s%s with N = Number, L = Letter' % (self.digits_str,self.letters_str)
    233241            else:
    234                 search = self.portal_catalog({'meta_type': 'StudentApplication',
    235                                               'jamb_reg_no': value,
    236                                               })
    237                 if len(search) < 1:
     242                s = getStudentByRegNo(self,value)
     243                if s is None:
    238244                    err = 'No JAMB data for %s' % (value)
    239245            if err:
     
    279285    reference = ''
    280286   
    281     def prepare(self, datastructure, **kw):
     287    def prepare(self, datastructure, **kw): ###(
    282288        """Prepare datastructure from datamodel."""
    283289        datamodel = datastructure.getDataModel()
    284290        v = datamodel[self.fields[0]]
    285291        widget_id = self.getWidgetId()
     292        if v and type(v) is StringType:
     293            p,b,n = v.split('-')
     294            v = ScratchCardPin(v,b,n)
    286295        if v:
    287296            b = '%s' % v.b
     
    293302        datastructure[widget_id+'_n'] = n
    294303       
     304###)
     305
    295306    def validate(self, datastructure, **kw):
    296307        """Validate datastructure and update datamodel."""
     
    298309        v = datastructure[widget_id]
    299310        err = 0
     311        p = self.prefix
    300312        b = datastructure[widget_id+'_b'].strip()
    301313        n = datastructure[widget_id+'_n'].strip()
    302314        #import pdb; pdb.set_trace()
    303         if not n in self.valid_pins:
    304             err = 'invalid Pin'
     315        pins = self.portal_pins
     316        pin = "%(p)s%(b)s%(n)s" % vars()
     317        ref = datastructure[self.reference]
     318        import pdb;pdb.set_trace()
     319        ok = pins.searchAndSetRecord(pin,ref)
     320        while 1:
     321            if ok == -1:
     322                err = 'invalid Pin'
     323                break
     324            if ok == 0:
     325                err = 'Pin already used'
     326                break
     327            if ok >= 1:
     328                student = getStudentByRegNo(self,ref)
     329                if student is None:
     330                    err = "Student not Found in validate SC"
     331                    break
     332                s_id = student.getId()
     333                if ok == 2:
     334                    break
     335            break
    305336        if err:
    306337            datastructure.setError(widget_id, err)
     
    311342            datastructure[widget_id+'_b'] = b
    312343            datastructure[widget_id+'_n'] = n
     344            datastructure['s_id'] = s_id
    313345        #import pdb;pdb.set_trace()
    314346        return not err
    315347
    316     def render(self, mode, datastructure, **kw):
     348    def render(self, mode, datastructure, **kw): ###(
    317349        """Render in mode from datastructure."""
    318350        render_method = 'widget_scratch_card_pin_render'
     
    327359        datamodel = datastructure.getDataModel()
    328360        v = datamodel[self.fields[0]]
     361        if v and type(v) is StringType:
     362            p,b,n = v.split('-')
     363            v = ScratchCardPin(v,b,n)
    329364        if v:
    330365            b = '%s' % v.b
     
    338373            datastructure[widget_id+'_n'] = n
    339374           
     375###)
     376
    340377
    341378        return meth(mode=mode,
Note: See TracChangeset for help on using the changeset viewer.