Changeset 2098


Ignore:
Timestamp:
15 Aug 2007, 16:22:25 (17 years ago)
Author:
joachim
Message:

first version of apply_pume, without passport and ugly layout.

Location:
WAeUP_SRP/trunk
Files:
7 added
4 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/Widgets.py

    r2095 r2098  
    44from types import *
    55from Globals import InitializeClass
     6from ZPublisher.HTTPRequest import FileUpload
    67##from Products.CPSSchemas.Widget import CPSWidgetType
    78from Products.CMFCore.utils import getToolByName
    89from Products.CPSSchemas.BasicWidgets import CPSBooleanWidget, CPSWidget, CPSStringWidget, CPSEmailWidget,CPSImageWidget
     10from Products.CPSSchemas.BasicWidgets import CPSFileWidget
    911from Products.CPSSchemas.BasicWidgets import renderHtmlTag,CPSSelectWidget, CPSStringWidget
    1012from Products.CPSSchemas.ExtendedWidgets import CPSDateTimeWidget
    1113from Products.CPSSchemas.Widget import widgetRegistry
     14from Products.CPSUtil.file import PersistableFileUpload
     15from Products.CPSUtil.id import generateFileName
    1216##from Products.CPSSchemas.WidgetTypesTool import WidgetTypeRegistry
    1317from DateTime.DateTime import DateTime
     
    1519from Products.WAeUP_SRP.Students import getStudentByRegNo
    1620from Products.WAeUP_SRP.Academics import makeCertificateCode
     21from Products.ExtFile.ExtFile import ExtFile
    1722from re import compile
    1823import logging
     
    248253    """WAeUP Session Widget."""
    249254    meta_type = 'WAeUP Session Widget'
    250 
     255   
    251256    def _getSessions(self):
    252257        current_year = DateTime().year()
     
    522527                if datastructure[self.state_field]:
    523528                    v = datastructure[self.state_field] + '_' + v
    524 
     529       
    525530        if self.is_required and not len(v):
    526531            datastructure.setError(widget_id, "lga required")
     
    533538            state = datastructure[self.state_field].lower()
    534539            lga = "_".join(datastructure[self.lga_field].lower().split())
    535             datamodel[self.fields[0]] =   state + "_" + lga
     540            datamodel[self.fields[0]] =   state + "_" + lga 
    536541        return 1
    537542
     
    705710            mode = kw['mode']
    706711        else:
    707             mode = "xxxx"
    708         if not valid:
     712            mode = "edit"
     713        if not valid: 
    709714            err = 'Invalid number'
    710715        elif self.reference == '':
     
    13151320    """ Pume Pin Widget"""
    13161321    meta_type = "Pume Pin Widget"
    1317 
     1322    catalog = "applicants_catalog"
     1323   
    13181324    def validate(self, datastructure, **kw): ###(
    13191325        """Validate datastructure and update datamodel."""
     
    13231329        err = 0
    13241330        mapping = {}
     1331       
    13251332        prefix= self.prefix
    13261333        if prefix.startswith('@'):
     
    13331340        do = 1
    13341341        s_id = str(self.portal_membership.getAuthenticatedMember())
    1335         import pdb;pdb.set_trace()
    13361342        if self.isStaff():
    13371343            do = 0
     
    13771383                break
    13781384            if ok >= 1:
    1379                 #import pdb;pdb.set_trace()
    13801385                if self.isStudent():
    13811386                    err = "This is only for Pume application."
     
    13841389                else:
    13851390                    applicant = datastructure['record']
    1386                     if not applicant.pin:
     1391                    if not applicant.pin: 
    13871392                        s_logger.info('%s successfully used PIN %s' % (ref,pin_str))
    13881393                        d = {}
    13891394                        d['reg_no'] = applicant.reg_no
    1390                         d['pin'] = n
    1391                         self.new_students.modifyRecord(**d)
     1395                        d['pin'] = pin_str
     1396                        getattr(self,self.catalog).modifyRecord(**d)
    13921397                    elif applicant.pin != pin_str:
    13931398                        s_logger.info('%s/%s repeatedly applied for PUME with different PIN %s' % (s_id,ref,pin_str))
     
    14081413    ###)
    14091414
     1415    def render(self, mode, datastructure, **kw): ###(
     1416        """Render in mode from datastructure."""
     1417        render_method = 'widget_scratch_card_pin_render'
     1418        meth = getattr(self, render_method, None)
     1419        if meth is None:
     1420            raise RuntimeError("Unknown Render Method %s for widget type %s"
     1421                               % (render_method, self.getId()))
     1422
     1423        # XXX AT: datastructure has to be set again here, in case we're in edit
     1424        # or create mode, because a default value has to be provided.
     1425        #import pdb;pdb.set_trace()
     1426        datamodel = datastructure.getDataModel()
     1427        v = datamodel[self.fields[0]]
     1428        #import pdb;pdb.set_trace()
     1429        if v and type(v) is StringType:
     1430            try:
     1431                p,b,n = v.split('-')
     1432                v = ScratchCardPin(p,b,n)
     1433            except ValueError:
     1434                v = ScratchCardPin(self.prefix,'XXX',v)
     1435                pass
     1436        if v:
     1437            prefix= '%s' % v.p
     1438            b = '%s' % v.b
     1439            n = '%s' % v.n
     1440        else:
     1441            prefix= self.prefix
     1442            if prefix.startswith('@'):
     1443                prefix= getattr(self,self.prefix[1:])()
     1444            b = n = ''
     1445            v = ScratchCardPin(prefix,b,n)
     1446        widget_id = self.getWidgetId()
     1447        datastructure[widget_id] = v
     1448        datastructure[widget_id+'_p'] = prefix
     1449        datastructure[widget_id+'_b'] = b
     1450        datastructure[widget_id+'_n'] = n
     1451        return meth(mode=mode,
     1452                    datastructure=datastructure,
     1453                    )
     1454    ###)
     1455
    14101456InitializeClass(PumePinWidget)
    14111457widgetRegistry.register(PumePinWidget)
     
    14301476###)
    14311477
     1478class ExtFileWidget(CPSFileWidget): ###(
     1479    """Photo widget."""
     1480    meta_type = 'Ext File Widget'
     1481
     1482    def getFileInfo(self, datastructure): ###(
     1483        """Get the file info from the datastructure."""
     1484        widget_id = self.getWidgetId()
     1485        fileupload = datastructure[widget_id]
     1486        dm = datastructure.getDataModel()
     1487        field_id = self.fields[0]
     1488        if fileupload:
     1489            import pdb; pdb.set_trace()
     1490            empty_file = False
     1491            session_file = isinstance(fileupload, PersistableFileUpload)
     1492            current_filename = generateFileName(fileupload.filename)
     1493            fileupload.seek(0, 2) # end of file
     1494            size = fileupload.tell()
     1495            fileupload.seek(0)
     1496            file = dm[field_id] # last stored file
     1497            if file is not None:
     1498                last_modified = str(file._p_mtime or '')
     1499            else:
     1500                last_modified = ''
     1501        else:
     1502            empty_file = True
     1503            session_file = False
     1504            current_filename = ''
     1505            size = 0
     1506            last_modified = ''
     1507
     1508        # Find the URL for the file  XXX Refactor this!
     1509
     1510        # get the adapter
     1511        for adapter in dm._adapters:
     1512            if adapter.getSchema().has_key(field_id):
     1513                break # Note: 'adapter' is still the right one
     1514        else:
     1515            raise ValueError('No schema for field %r' % field_id)
     1516
     1517        # get the content_url from the adapter
     1518        content_url = None
     1519        ob = dm.getProxy()
     1520        if ob is None:
     1521            # non proxy case
     1522            ob = dm.getObject()
     1523        if ob is None:
     1524            # Not stored in the ZODB.
     1525            # StorageAdapters that do not store the object in
     1526            # ZODB takes the entry_id instead of object.
     1527            # Get the entry_id from the datamodel context(typically
     1528            # a directory).
     1529            id_field = getattr(dm.getContext(), 'id_field', None)
     1530            if id_field:
     1531                try:
     1532                    entry_id = datastructure[id_field]
     1533                except KeyError:
     1534                    entry_id = None
     1535            else:
     1536                # No object passed, and no id_field
     1537                entry_id = None
     1538            if entry_id:
     1539                # some adapters does not have _getContentUrl
     1540                if getattr(adapter, '_getContentUrl', None) is not None:
     1541                    content_url = adapter._getContentUrl(entry_id, field_id)
     1542        else:
     1543            if hasattr(adapter,"_getContentUrl"):
     1544                content_url = adapter._getContentUrl(ob, field_id,
     1545                                                 current_filename)
     1546            else:
     1547                content_url = None
     1548        # get the mimetype
     1549        registry = getToolByName(self, 'mimetypes_registry')
     1550        mimetype = (registry.lookupExtension(current_filename.lower()) or
     1551                    registry.lookupExtension('file.bin'))
     1552
     1553        file_info = {
     1554            'empty_file': empty_file,
     1555            'session_file': session_file,
     1556            'current_filename': current_filename,
     1557            'size': size,
     1558            'last_modified': last_modified,
     1559            'content_url': content_url,
     1560            'mimetype': mimetype,
     1561            }
     1562
     1563        return file_info
     1564    ###)
     1565
     1566    def prepare(self, datastructure, **kw): ###(
     1567        """Prepare datastructure from datamodel."""
     1568        datamodel = datastructure.getDataModel()
     1569        widget_id = self.getWidgetId()
     1570        file_name = datamodel[self.fields[0]]
     1571        if not file_name:
     1572            file = None
     1573        else:
     1574            io = ExtFile(file)
     1575            if filename is None:
     1576                filename = ofsfile.title
     1577            headers = {'content-type': ofsfile.content_type}
     1578            fs = SimpleFieldStorage(io, filename, headers)
     1579            FileUpload(fs)
     1580        datastructure[widget_id] = file
     1581        datastructure[widget_id + '_choice'] = ''
     1582        if file is not None:
     1583            title = file.title
     1584        else:
     1585            title = ''
     1586        datastructure[widget_id + '_filename'] = title
     1587    ###)
     1588
     1589    def validate(self, datastructure, **kw):
     1590        """Update datamodel from user data in datastructure.
     1591        """
     1592        datamodel = datastructure.getDataModel()
     1593        field_id = self.fields[0]
     1594        widget_id = self.getWidgetId()
     1595        choice = datastructure[widget_id+'_choice']
     1596        store = False
     1597        fileupload = None
     1598        mimetype = None
     1599        old_file = datamodel[field_id]
     1600        if old_file is not None:
     1601            old_filename = old_file.title
     1602        else:
     1603            old_filename = ''
     1604
     1605        if choice == 'delete':
     1606            if self.is_required:
     1607                return self.validateError('cpsschemas_err_required', {},
     1608                                          datastructure)
     1609            datamodel[field_id] = None
     1610        elif choice == 'keep':
     1611            fileupload = datastructure[widget_id]
     1612            if isinstance(fileupload, PersistableFileUpload):
     1613                # Keeping something from the session means we
     1614                # actually want to store it.
     1615                store = True
     1616            else:
     1617                # Nothing to change, don't pollute datastructure
     1618                # with something costly already stored, which therefore
     1619                # doesn't need to be kept in the session.
     1620                self.unprepare(datastructure)
     1621        elif choice == 'change':
     1622            fileupload = datastructure[widget_id]
     1623            if not fileupload:
     1624                return self.validateError('cpsschemas_err_file_empty', {},
     1625                                          datastructure)
     1626            if not isinstance(fileupload, FileUpload):
     1627                return self.validateError('cpsschemas_err_file', {},
     1628                                          datastructure)
     1629            fileupload.seek(0, 2) # end of file
     1630            size = fileupload.tell()
     1631            if not size:
     1632                return self.validateError('cpsschemas_err_file_empty', {},
     1633                                          datastructure)
     1634            if self.size_max and size > self.size_max:
     1635                max_size_str = self.getHumanReadableSize(self.size_max)
     1636                err = 'cpsschemas_err_file_too_big ${max_size}'
     1637                err_mapping = {'max_size': max_size_str}
     1638                return self.validateError(err, err_mapping, datastructure)
     1639            store = True
     1640
     1641        self.otherProcessing(choice, datastructure)
     1642
     1643        # Find filename
     1644        if fileupload is not None:
     1645            filename = self.getFileName(fileupload, datastructure, choice,
     1646                                        old_filename)
     1647            if filename != old_filename:
     1648                registry = getToolByName(self, 'mimetypes_registry')
     1649                mimetype = registry.lookupExtension(filename.lower())
     1650                if mimetype is not None:
     1651                    mimetype = str(mimetype) # normalize
     1652                err, err_mapping = self.checkFileName(filename, mimetype)
     1653                if err:
     1654                    return self.validateError(err, err_mapping, datastructure)
     1655        elif datamodel[field_id] is not None:
     1656            # FIXME: not correct in the case of change=='resize' (CPSPhotoWidget)
     1657            filename = datamodel[field_id].title
     1658
     1659        # Set/update data
     1660        import pdb;pdb.set_trace()
     1661        if store:
     1662            # Create file
     1663            #file = ExtFile(filename, fileupload, datastructure)
     1664            table_store = False
     1665            if not hasattr(datamodel._adapters[0],'_getContentUrl'):
     1666                table_store = True
     1667                ref_id = datamodel.get('reg_no')
     1668                id = "%s_%s" % (ref_id,field_id)
     1669            self.tempExtFile = ExtFile(id, field_id)
     1670            if table_store:
     1671                datastructure[widget_id] = self.tempExtFile
     1672                self.tempExtFile.manage_file_upload(fileupload,content_type=mimetype)
     1673            else:
     1674                self._setObject(id, self.tempExtFile)
     1675                self._getOb(id).manage_file_upload(fileupload, content_type)
     1676            # Fixup mimetype
     1677            if mimetype and self.tempExtFile.content_type != mimetype:
     1678                self.tempExtFile.content_type = mimetype
     1679            # Store
     1680            if not table_store:
     1681                datamodel[field_id] = file
     1682        elif datamodel[field_id] is not None:
     1683            # Change filename
     1684            if datamodel[field_id].title != filename:
     1685                datamodel[field_id].title = filename
     1686
     1687        return True
     1688
     1689
     1690InitializeClass(ExtFileWidget)
     1691
     1692widgetRegistry.register(ExtFileWidget)
     1693###)
     1694
    14321695
    14331696###########
  • WAeUP_SRP/trunk/profiles/default/applicants_catalog.xml

    r2094 r2098  
    3636  <indexed_attr value="status"/>
    3737 </index>
    38  <index name="registration_date" meta_type="DateIndex">
    39   <indexed_attr value="status"/>
    40  </index>
    41  <index name="firstname" meta_type="TextIndex">
    42   <indexed_attr value="firstname"/>
    43  </index>
    4438 <index name="lastname" meta_type="TextIndex">
    4539  <indexed_attr value="lastname"/>
    4640 </index>
    47  <index name="faculty" meta_type="FieldIndex">
    48   <indexed_attr value="faculty"/>
    49  </index>
    50  <index name="department" meta_type="FieldIndex">
    51   <indexed_attr value="department"/>
    52  </index>
    53  <index name="course" meta_type="FieldIndex">
    54   <indexed_attr value="course"/>
    55  </index>
    5641</object>
  • WAeUP_SRP/trunk/profiles/default/layouts/application.xml

    r2095 r2098  
    22<?xml-stylesheet type="text/xsl" href="layout.xsl"?>
    33<object name="application" meta_type="CPS Layout">
    4  <property name="layout_create_method">layout_enter_access_code</property>
    5  <property name="layout_edit_method"></property>
    6  <property name="layout_view_method"></property>
    7  <property name="style_prefix">layout_application_</property>
    8  <property name="flexible_widgets"/>
    9  <property name="validate_values_expr"></property>
    10  <widget name="course1" meta_type="String Widget">
    11   <property name="title">Course</property>
    12   <property name="fields">
    13    <element value="course1"/>
    14   </property>
    15   <property name="label">Course 1</property>
    16   <property name="label_edit">Course 1</property>
    17   <property name="description"></property>
    18   <property name="help"></property>
    19   <property name="is_i18n">False</property>
    20   <property name="widget_mode_expr"></property>
    21   <property name="readonly_layout_modes"/>
    22   <property name="hidden_layout_modes"/>
    23   <property name="hidden_readonly_layout_modes"/>
    24  </widget>
    25  <widget name="course3" meta_type="String Widget">
    26   <property name="title">Course 3</property>
    27   <property name="fields">
    28    <element value="course3"/>
    29   </property>
    30   <property name="label">Course 3</property>
    31   <property name="label_edit">Course 3</property>
    32   <property name="description"></property>
    33   <property name="help"></property>
    34   <property name="is_i18n">False</property>
    35   <property name="widget_mode_expr"></property>
    36   <property name="readonly_layout_modes"/>
    37   <property name="hidden_layout_modes"/>
    38   <property name="hidden_readonly_layout_modes"/>
    39  </widget>
    40  <widget name="course2" meta_type="String Widget">
    41   <property name="title">Course 2</property>
    42   <property name="fields">
    43    <element value="course2"/>
    44   </property>
    45   <property name="label">Course 2</property>
    46   <property name="label_edit">Course 2</property>
    47   <property name="description"></property>
    48   <property name="help"></property>
    49   <property name="is_i18n">False</property>
    50   <property name="widget_mode_expr"></property>
    51   <property name="readonly_layout_modes"/>
    52   <property name="hidden_layout_modes"/>
    53   <property name="hidden_readonly_layout_modes"/>
    54  </widget>
    55  <widget name="date_of_birth" meta_type="Date Widget">
    56   <property name="title">Date of Birth</property>
    57   <property name="fields">
    58    <element value="date_of_birth"/>
    59   </property>
    60   <property name="label">Date of Birth</property>
    61   <property name="label_edit">Date of Birth</property>
    62   <property name="description"></property>
    63   <property name="help"></property>
    64   <property name="is_i18n">False</property>
    65   <property name="widget_mode_expr"></property>
    66   <property name="readonly_layout_modes"/>
    67  <property name="hidden_layout_modes">
    68   <element value="edit"/>
    69  </property>
    70   <property name="hidden_readonly_layout_modes"/>
    71  </widget>
    72  <widget name="department" meta_type="String Widget">
    73   <property name="title">Department</property>
    74   <property name="fields">
    75    <element value="department"/>
    76   </property>
    77   <property name="label">Department</property>
    78   <property name="label_edit">Department</property>
    79   <property name="description"></property>
    80   <property name="help"></property>
    81   <property name="is_i18n">False</property>
    82   <property name="widget_mode_expr"></property>
    83   <property name="readonly_layout_modes"/>
    84   <property name="hidden_layout_modes"/>
    85   <property name="hidden_readonly_layout_modes"/>
    86  </widget>
    87  <widget name="email" meta_type="String Widget">
    88   <property name="title">Email</property>
    89   <property name="fields">
    90    <element value="email"/>
    91   </property>
    92   <property name="label">Email</property>
    93   <property name="label_edit">Email</property>
    94   <property name="description"></property>
    95   <property name="help"></property>
    96   <property name="is_i18n">False</property>
    97   <property name="widget_mode_expr"></property>
    98   <property name="readonly_layout_modes"/>
    99   <property name="hidden_layout_modes"/>
    100   <property name="hidden_readonly_layout_modes"/>
    101  </widget>
    102  <widget name="entry_mode" meta_type="String Widget">
    103   <property name="title">Entry Mode</property>
    104   <property name="fields">
    105    <element value="entry_mode"/>
    106   </property>
    107   <property name="label">Entry Mode</property>
    108   <property name="label_edit">Entry Mode</property>
    109   <property name="description"></property>
    110   <property name="help"></property>
    111   <property name="is_i18n">False</property>
    112   <property name="widget_mode_expr"></property>
    113   <property name="readonly_layout_modes"/>
    114   <property name="hidden_layout_modes"/>
    115   <property name="hidden_readonly_layout_modes"/>
    116  </widget>
    117  <widget name="faculty" meta_type="String Widget">
    118   <property name="title">Faculty</property>
    119   <property name="fields">
    120    <element value="faculty"/>
    121   </property>
    122   <property name="label">Faculty</property>
    123   <property name="label_edit">Faculty</property>
    124   <property name="description"></property>
    125   <property name="help"></property>
    126   <property name="is_i18n">False</property>
    127   <property name="widget_mode_expr"></property>
    128   <property name="readonly_layout_modes"/>
    129   <property name="hidden_layout_modes"/>
    130   <property name="hidden_readonly_layout_modes"/>
    131  </widget>
    132  <widget name="firstname" meta_type="String Widget">
    133   <property name="title">Firstname</property>
    134   <property name="fields">
    135    <element value="firstname"/>
    136   </property>
    137   <property name="label">Firstname</property>
    138   <property name="label_edit">Firstname</property>
    139   <property name="description"></property>
    140   <property name="help"></property>
    141   <property name="is_i18n">False</property>
    142   <property name="widget_mode_expr"></property>
    143   <property name="readonly_layout_modes"/>
    144   <property name="hidden_layout_modes"/>
    145   <property name="hidden_readonly_layout_modes"/>
    146  </widget>
    147  <widget name="agregate" meta_type="Int Widget">
    148   <property name="title">JAMB Agregate Score</property>
    149   <property name="fields">
    150    <element value="agregate"/>
    151   </property>
    152   <property name="label">JAMB Agregate Score</property>
    153   <property name="label_edit">JAMB Agregate Score</property>
    154   <property name="description"></property>
    155   <property name="help"></property>
    156   <property name="is_i18n">False</property>
    157   <property name="widget_mode_expr"></property>
    158   <property name="readonly_layout_modes"/>
    159   <property name="hidden_layout_modes"/>
    160   <property name="hidden_readonly_layout_modes"/>
    161  </widget>
    162  <widget name="eng_score" meta_type="Int Widget">
    163   <property name="title">English Score</property>
    164   <property name="fields">
    165    <element value="eng_score"/>
    166   </property>
    167   <property name="label">English Score</property>
    168   <property name="label_edit">English Score</property>
    169   <property name="description"></property>
    170   <property name="help"></property>
    171   <property name="is_i18n">False</property>
    172   <property name="widget_mode_expr"></property>
    173   <property name="readonly_layout_modes"/>
    174   <property name="hidden_layout_modes"/>
    175   <property name="hidden_readonly_layout_modes"/>
    176  </widget>
    177  <widget name="subj1" meta_type="String Widget">
    178   <property name="title">Subject 1</property>
    179   <property name="fields">
    180    <element value="subj1"/>
    181   </property>
    182   <property name="label">Subject 1</property>
    183   <property name="label_edit">Subject 1</property>
    184   <property name="description"></property>
    185   <property name="help"></property>
    186   <property name="is_i18n">False</property>
    187   <property name="widget_mode_expr"></property>
    188   <property name="readonly_layout_modes"/>
    189   <property name="hidden_layout_modes"/>
    190   <property name="hidden_readonly_layout_modes"/>
    191  </widget>
    192  <widget name="subj1score" meta_type="Int Widget">
    193   <property name="title">Subject 1 Score</property>
    194   <property name="fields">
    195    <element value="subj1score"/>
    196   </property>
    197   <property name="label">Subject 1 Score</property>
    198   <property name="label_edit">Subject 1 Score</property>
    199   <property name="description"></property>
    200   <property name="help"></property>
    201   <property name="is_i18n">False</property>
    202   <property name="widget_mode_expr"></property>
    203   <property name="readonly_layout_modes"/>
    204   <property name="hidden_layout_modes"/>
    205   <property name="hidden_readonly_layout_modes"/>
    206  </widget>
    207  <widget name="subj2" meta_type="String Widget">
    208   <property name="title">Subject 2</property>
    209   <property name="fields">
    210    <element value="subj2"/>
    211   </property>
    212   <property name="label">Subject 2</property>
    213   <property name="label_edit">Subject 2</property>
    214   <property name="description"></property>
    215   <property name="help"></property>
    216   <property name="is_i18n">False</property>
    217   <property name="widget_mode_expr"></property>
    218   <property name="readonly_layout_modes"/>
    219   <property name="hidden_layout_modes"/>
    220   <property name="hidden_readonly_layout_modes"/>
    221  </widget>
    222  <widget name="subj2score" meta_type="Int Widget">
    223   <property name="title">Subject 2 Score</property>
    224   <property name="fields">
    225    <element value="subj2score"/>
    226   </property>
    227   <property name="label">Subject 2 Score</property>
    228   <property name="label_edit">Subject 2 Score</property>
    229   <property name="description"></property>
    230   <property name="help"></property>
    231   <property name="is_i18n">False</property>
    232   <property name="widget_mode_expr"></property>
    233   <property name="readonly_layout_modes"/>
    234   <property name="hidden_layout_modes"/>
    235   <property name="hidden_readonly_layout_modes"/>
    236  </widget>
    237  <widget name="subj3" meta_type="String Widget">
    238   <property name="title">Subject 3</property>
    239   <property name="fields">
    240    <element value="subj3"/>
    241   </property>
    242   <property name="label">Subject 3</property>
    243   <property name="label_edit">Subject 3</property>
    244   <property name="description"></property>
    245   <property name="help"></property>
    246   <property name="is_i18n">False</property>
    247   <property name="widget_mode_expr"></property>
    248   <property name="readonly_layout_modes"/>
    249   <property name="hidden_layout_modes"/>
    250   <property name="hidden_readonly_layout_modes"/>
    251  </widget>
    252  <widget name="subj3score" meta_type="Int Widget">
    253   <property name="title">Subject 3 Score</property>
    254   <property name="fields">
    255    <element value="subj3score"/>
    256   </property>
    257   <property name="label">Subject 3 Score</property>
    258   <property name="label_edit">Subject 3 Score</property>
    259   <property name="description"></property>
    260   <property name="help"></property>
    261   <property name="is_i18n">False</property>
    262   <property name="widget_mode_expr"></property>
    263   <property name="readonly_layout_modes"/>
    264   <property name="hidden_layout_modes"/>
    265   <property name="hidden_readonly_layout_modes"/>
    266  </widget>
    267  <widget name="lastname" meta_type="String Widget">
    268   <property name="title">Lastname</property>
    269   <property name="fields">
    270    <element value="lastname"/>
    271   </property>
    272   <property name="label">Lastname</property>
    273   <property name="label_edit">Lastname</property>
    274   <property name="description"></property>
    275   <property name="help"></property>
    276   <property name="is_i18n">False</property>
    277   <property name="widget_mode_expr"></property>
    278   <property name="readonly_layout_modes"/>
    279   <property name="hidden_layout_modes"/>
    280   <property name="hidden_readonly_layout_modes"/>
    281  </widget>
    282  <widget name="lga" meta_type="WAeUP LGA Widget">
    283   <property name="title">LGA</property>
    284   <property name="fields">
    285    <element value="lga"/>
    286   </property>
    287   <property name="label">LGA</property>
    288   <property name="label_edit">LGA</property>
    289   <property name="description"></property>
    290   <property name="help"></property>
    291   <property name="is_i18n">False</property>
    292   <property name="widget_mode_expr"></property>
    293   <property name="readonly_layout_modes"/>
    294   <property name="hidden_layout_modes"/>
    295   <property name="hidden_readonly_layout_modes"/>
    296  </widget>
    297  <widget name="middlenames" meta_type="String Widget">
    298   <property name="title">Middlenames</property>
    299   <property name="fields">
    300    <element value="middlenames"/>
    301   </property>
    302   <property name="label">Middlenames</property>
    303   <property name="label_edit">Middlenames</property>
    304   <property name="description"></property>
    305   <property name="help"></property>
    306   <property name="is_i18n">False</property>
    307   <property name="widget_mode_expr"></property>
    308   <property name="readonly_layout_modes"/>
    309   <property name="hidden_layout_modes"/>
    310   <property name="hidden_readonly_layout_modes"/>
    311  </widget>
    312  <widget name="phone" meta_type="String Widget">
    313   <property name="title">Phone</property>
    314   <property name="fields">
    315    <element value="phone"/>
    316   </property>
    317   <property name="label">Phone</property>
    318   <property name="label_edit">Phone</property>
    319   <property name="description"></property>
    320   <property name="help"></property>
    321   <property name="is_i18n">False</property>
    322   <property name="widget_mode_expr"></property>
    323   <property name="readonly_layout_modes"/>
    324   <property name="hidden_layout_modes"/>
    325   <property name="hidden_readonly_layout_modes"/>
    326  </widget>
    327  <widget name="pin" meta_type="Pume Pin Widget">
    328   <property name="title">PIN</property>
    329   <property name="fields">
    330    <element value="pin"/>
    331   </property>
    332   <property name="label">PIN</property>
    333   <property name="label_edit">PIN</property>
    334   <property name="description"></property>
    335   <property name="help"></property>
    336   <property name="is_i18n">False</property>
    337   <property name="widget_mode_expr"></property>
    338   <property name="readonly_layout_modes"/>
    339  <property name="hidden_layout_modes">
    340   <element value="edit"/>
    341  </property>
    342   <property name="hidden_readonly_layout_modes"/>
    343   <property name="prefix">APP</property>
    344   <property name="reference">reg_no</property>
    345  </widget>
    346  <widget name="registration_date" meta_type="Date Widget">
    347   <property name="title">Registration Date</property>
    348   <property name="fields">
    349    <element value="registration_date"/>
    350   </property>
    351   <property name="label">Registration Date</property>
    352   <property name="label_edit">Registration Date</property>
    353   <property name="description"></property>
    354   <property name="help"></property>
    355   <property name="is_i18n">False</property>
    356   <property name="widget_mode_expr"></property>
    357   <property name="readonly_layout_modes"/>
    358   <property name="hidden_layout_modes"/>
    359   <property name="hidden_readonly_layout_modes"/>
    360  </widget>
    361  <widget name="test_date" meta_type="Date Widget">
    362   <property name="title">Test Date</property>
    363   <property name="fields">
    364    <element value="test_date"/>
    365   </property>
    366   <property name="label">Test Date</property>
    367   <property name="label_edit">Test Date</property>
    368   <property name="description"></property>
    369   <property name="help"></property>
    370   <property name="is_i18n">False</property>
    371   <property name="widget_mode_expr"></property>
    372   <property name="readonly_layout_modes"/>
    373   <property name="hidden_layout_modes"/>
    374   <property name="hidden_readonly_layout_modes"/>
    375  </widget>
    376  <widget name="reg_no" meta_type="JambRegNo Widget">
    377   <property name="title">JAMB Registration Number</property>
    378   <property name="fields">
    379    <element value="reg_no"/>
    380   </property>
    381   <property name="label">JAMB Registration Number</property>
    382   <property name="label_edit">JAMB Registration Number</property>
    383   <property name="description"></property>
    384   <property name="help"></property>
    385   <property name="is_i18n">False</property>
    386   <property name="widget_mode_expr"></property>
    387   <property name="readonly_layout_modes"/>
    388   <property name="hidden_layout_modes"/>
    389   <property name="hidden_readonly_layout_modes"/>
    390   <property name="display_width">13</property>
    391   <property name="size_max">13</property>
    392   <property name="reference">reg_no</property>
    393   <property name="catalog">applicants_catalog</property>
    394  </widget>
    395  <widget name="score" meta_type="Int Widget">
    396   <property name="title">Score</property>
    397   <property name="fields">
    398    <element value="score"/>
    399   </property>
    400   <property name="label">Score</property>
    401   <property name="label_edit">Score</property>
    402   <property name="description"></property>
    403   <property name="help"></property>
    404   <property name="is_i18n">False</property>
    405   <property name="widget_mode_expr"></property>
    406   <property name="readonly_layout_modes"/>
    407   <property name="hidden_layout_modes"/>
    408   <property name="hidden_readonly_layout_modes"/>
    409  </widget>
    410  <widget name="sex" meta_type="WAeUP Sex Widget">
    411   <property name="title">Sex</property>
    412   <property name="fields">
    413    <element value="sex"/>
    414   </property>
    415   <property name="label">Score</property>
    416   <property name="label_edit">Score</property>
    417   <property name="description"></property>
    418   <property name="help"></property>
    419   <property name="is_i18n">False</property>
    420   <property name="widget_mode_expr"></property>
    421   <property name="readonly_layout_modes"/>
    422   <property name="hidden_layout_modes"/>
    423   <property name="hidden_readonly_layout_modes"/>
    424  </widget>
    425  <widget name="state" meta_type="WAeUP LGA Widget">
    426   <property name="title">State</property>
    427   <property name="fields">
    428    <element value="lga"/>
    429   </property>
    430   <property name="label">State</property>
    431   <property name="label_edit">State</property>
    432   <property name="description"></property>
    433   <property name="help"></property>
    434   <property name="is_i18n">False</property>
    435   <property name="widget_mode_expr"></property>
    436   <property name="readonly_layout_modes"/>
    437   <property name="hidden_layout_modes"/>
    438   <property name="hidden_readonly_layout_modes"/>
    439  </widget>
    440  <widget name="status" meta_type="String Widget">
    441   <property name="title">Status</property>
    442   <property name="fields">
    443    <element value="status"/>
    444   </property>
    445   <property name="label">Status</property>
    446   <property name="label_edit">Status</property>
    447   <property name="description"></property>
    448   <property name="help"></property>
    449   <property name="is_i18n">False</property>
    450   <property name="widget_mode_expr"></property>
    451   <property name="readonly_layout_modes"/>
    452   <property name="hidden_layout_modes"/>
    453   <property name="hidden_readonly_layout_modes"/>
    454  </widget>
    455  <widget name="verdict" meta_type="WAeUP Verdict Widget">
    456   <property name="title">Verdict</property>
    457   <property name="fields">
    458    <element value="status"/>
    459   </property>
    460   <property name="label">Verdict</property>
    461   <property name="label_edit">Verdict</property>
    462   <property name="description"></property>
    463   <property name="help"></property>
    464   <property name="is_i18n">False</property>
    465   <property name="widget_mode_expr"></property>
    466   <property name="readonly_layout_modes"/>
    467   <property name="hidden_layout_modes"/>
    468   <property name="hidden_readonly_layout_modes"/>
    469  </widget>
     4  <property name="layout_create_method"></property>
     5  <property name="layout_edit_method"></property>
     6  <property name="layout_view_method"></property>
     7  <property name="style_prefix">layout_apply_pume_</property>
     8  <property name="flexible_widgets"/>
     9  <property name="validate_values_expr"></property>
     10  <widget name="course1" meta_type="String Widget">
     11    <property name="title">Course</property>
     12    <property name="fields">
     13      <element value="course1"/>
     14    </property>
     15    <property name="label">Course 1</property>
     16    <property name="label_edit">Course 1</property>
     17    <property name="description"></property>
     18    <property name="help"></property>
     19    <property name="is_i18n">False</property>
     20    <property name="widget_mode_expr"></property>
     21    <property name="readonly_layout_modes"/>
     22    <property name="hidden_layout_modes"/>
     23    <property name="hidden_readonly_layout_modes"/>
     24    <property name="css_class_expr">string:row</property>
     25  </widget>
     26  <widget name="course3" meta_type="String Widget">
     27    <property name="title">Course 3</property>
     28    <property name="fields">
     29      <element value="course3"/>
     30    </property>
     31    <property name="label">Course 3</property>
     32    <property name="label_edit">Course 3</property>
     33    <property name="description"></property>
     34    <property name="help"></property>
     35    <property name="is_i18n">False</property>
     36    <property name="widget_mode_expr"></property>
     37    <property name="readonly_layout_modes"/>
     38    <property name="hidden_layout_modes"/>
     39    <property name="hidden_readonly_layout_modes"/>
     40    <property name="css_class_expr">string:row</property>
     41  </widget>
     42  <widget name="course2" meta_type="String Widget">
     43    <property name="title">Course 2</property>
     44    <property name="fields">
     45      <element value="course2"/>
     46    </property>
     47    <property name="label">Course 2</property>
     48    <property name="label_edit">Course 2</property>
     49    <property name="description"></property>
     50    <property name="help"></property>
     51    <property name="is_i18n">False</property>
     52    <property name="widget_mode_expr"></property>
     53    <property name="readonly_layout_modes"/>
     54    <property name="hidden_layout_modes"/>
     55    <property name="hidden_readonly_layout_modes"/>
     56    <property name="css_class_expr">string:row</property>
     57  </widget>
     58  <widget name="date_of_birth" meta_type="DateTime Widget">
     59    <property name="title">Date of Birth</property>
     60    <property name="fields">
     61      <element value="date_of_birth"/>
     62    </property>
     63    <property name="label">Date of Birth</property>
     64    <property name="label_edit">Date of Birth</property>
     65    <property name="description"></property>
     66    <property name="help"></property>
     67    <property name="is_i18n">False</property>
     68    <property name="widget_mode_expr"></property>
     69    <property name="readonly_layout_modes"/>
     70    <property name="hidden_layout_modes">
     71      <element value="edit"/>
     72    </property>
     73    <property name="hidden_readonly_layout_modes"/>
     74    <property name="css_class_expr">string:row</property>
     75  </widget>
     76  <widget name="department" meta_type="String Widget">
     77    <property name="title">Department</property>
     78    <property name="fields">
     79      <element value="department"/>
     80    </property>
     81    <property name="label">Department</property>
     82    <property name="label_edit">Department</property>
     83    <property name="description"></property>
     84    <property name="help"></property>
     85    <property name="is_i18n">False</property>
     86    <property name="widget_mode_expr"></property>
     87    <property name="readonly_layout_modes"/>
     88    <property name="hidden_layout_modes"/>
     89    <property name="hidden_readonly_layout_modes"/>
     90    <property name="css_class_expr">string:row</property>
     91  </widget>
     92  <widget name="email" meta_type="Email Widget">
     93    <property name="title">Email</property>
     94    <property name="fields">
     95      <element value="email"/>
     96    </property>
     97    <property name="label">Email</property>
     98    <property name="label_edit">Email</property>
     99    <property name="description"></property>
     100    <property name="help"></property>
     101    <property name="is_i18n">False</property>
     102    <property name="widget_mode_expr"></property>
     103    <property name="readonly_layout_modes"/>
     104    <property name="hidden_layout_modes">
     105      <element value="create"/>
     106    </property>
     107    <property name="hidden_readonly_layout_modes"/>
     108    <property name="css_class_expr">string:row</property>
     109  </widget>
     110  <widget name="entry_mode" meta_type="String Widget">
     111    <property name="title">Entry Mode</property>
     112    <property name="fields">
     113      <element value="entry_mode"/>
     114    </property>
     115    <property name="label">Entry Mode</property>
     116    <property name="label_edit">Entry Mode</property>
     117    <property name="description"></property>
     118    <property name="help"></property>
     119    <property name="is_i18n">False</property>
     120    <property name="widget_mode_expr"></property>
     121    <property name="readonly_layout_modes"/>
     122    <property name="hidden_layout_modes"/>
     123    <property name="hidden_readonly_layout_modes"/>
     124    <property name="css_class_expr">string:row</property>
     125  </widget>
     126  <widget name="faculty" meta_type="String Widget">
     127    <property name="title">Faculty</property>
     128    <property name="fields">
     129      <element value="faculty"/>
     130    </property>
     131    <property name="label">Faculty</property>
     132    <property name="label_edit">Faculty</property>
     133    <property name="description"></property>
     134    <property name="help"></property>
     135    <property name="is_i18n">False</property>
     136    <property name="widget_mode_expr"></property>
     137    <property name="readonly_layout_modes"/>
     138    <property name="hidden_layout_modes"/>
     139    <property name="hidden_readonly_layout_modes"/>
     140    <property name="css_class_expr">string:row</property>
     141  </widget>
     142  <widget name="firstname" meta_type="String Widget">
     143    <property name="title">Firstname</property>
     144    <property name="fields">
     145      <element value="firstname"/>
     146    </property>
     147    <property name="label">Firstname</property>
     148    <property name="label_edit">Firstname</property>
     149    <property name="description"></property>
     150    <property name="help"></property>
     151    <property name="is_i18n">False</property>
     152    <property name="widget_mode_expr"></property>
     153    <property name="readonly_layout_modes"/>
     154    <property name="hidden_layout_modes"/>
     155    <property name="hidden_readonly_layout_modes"/>
     156    <property name="css_class_expr">string:row</property>
     157  </widget>
     158  <widget name="agregate" meta_type="Int Widget">
     159    <property name="title">JAMB Agregate Score</property>
     160    <property name="fields">
     161      <element value="agregate"/>
     162    </property>
     163    <property name="label">JAMB Agregate Score</property>
     164    <property name="label_edit">JAMB Agregate Score</property>
     165    <property name="description"></property>
     166    <property name="help"></property>
     167    <property name="is_i18n">False</property>
     168    <property name="widget_mode_expr"></property>
     169    <property name="readonly_layout_modes">
     170      <element value="edit"/>
     171    </property>
     172    <property name="hidden_layout_modes">
     173      <element value="create"/>
     174    </property>
     175    <property name="hidden_readonly_layout_modes"/>
     176    <property name="css_class_expr">string:row</property>
     177  </widget>
     178  <widget name="eng_score" meta_type="Int Widget">
     179    <property name="title">English Score</property>
     180    <property name="fields">
     181      <element value="eng_score"/>
     182    </property>
     183    <property name="label">English: </property>
     184    <property name="label_edit">English:</property>
     185    <property name="description"></property>
     186    <property name="help"></property>
     187    <property name="is_i18n">False</property>
     188    <property name="widget_mode_expr"></property>
     189    <property name="readonly_layout_modes">
     190      <element value="edit"/>
     191    </property>
     192    <property name="hidden_layout_modes">
     193      <element value="create"/>
     194    </property>
     195    <property name="hidden_readonly_layout_modes"/>
     196    <property name="css_class_expr">string:row</property>
     197  </widget>
     198  <widget name="subj1" meta_type="Select Widget">
     199    <property name="title">Subject 1</property>
     200    <property name="fields">
     201      <element value="subj1"/>
     202    </property>
     203    <property name="label"></property>
     204    <property name="label_edit"></property>
     205    <property name="description"></property>
     206    <property name="help"></property>
     207    <property name="is_i18n">False</property>
     208    <property name="widget_mode_expr"></property>
     209    <property name="readonly_layout_modes">
     210      <element value="edit"/>
     211    </property>
     212    <property name="hidden_layout_modes">
     213      <element value="create"/>
     214    </property>
     215    <property name="hidden_readonly_layout_modes"/>
     216    <property name="css_class_expr">string:row</property>
     217    <property name="vocabulary">jamb_subjects</property>
     218  </widget>
     219  <widget name="subj1score" meta_type="Int Widget">
     220    <property name="title">Subject 1 Score</property>
     221    <property name="fields">
     222      <element value="subj1score"/>
     223    </property>
     224    <property name="label"> : </property>
     225    <property name="label_edit"> : </property>
     226    <property name="description"></property>
     227    <property name="help"></property>
     228    <property name="is_i18n">False</property>
     229    <property name="widget_mode_expr"></property>
     230    <property name="readonly_layout_modes">
     231      <element value="edit"/>
     232    </property>
     233    <property name="hidden_layout_modes">
     234      <element value="create"/>
     235    </property>
     236    <property name="hidden_readonly_layout_modes"/>
     237    <property name="css_class_expr">string:row</property>
     238  </widget>
     239  <widget name="subj2" meta_type="Select Widget">
     240    <property name="title">Subject 2</property>
     241    <property name="fields">
     242      <element value="subj2"/>
     243    </property>
     244    <property name="label"></property>
     245    <property name="label_edit"></property>
     246    <property name="description"></property>
     247    <property name="help"></property>
     248    <property name="is_i18n">False</property>
     249    <property name="widget_mode_expr"></property>
     250    <property name="readonly_layout_modes">
     251      <element value="edit"/>
     252    </property>
     253    <property name="hidden_layout_modes">
     254      <element value="create"/>
     255    </property>
     256    <property name="hidden_readonly_layout_modes"/>
     257    <property name="css_class_expr">string:row</property>
     258    <property name="vocabulary">jamb_subjects</property>
     259  </widget>
     260  <widget name="subj2score" meta_type="Int Widget">
     261    <property name="title">Subject 2 Score</property>
     262    <property name="fields">
     263      <element value="subj2score"/>
     264    </property>
     265    <property name="label"> : </property>
     266    <property name="label_edit"> : </property>
     267    <property name="description"></property>
     268    <property name="help"></property>
     269    <property name="is_i18n">False</property>
     270    <property name="widget_mode_expr"></property>
     271    <property name="readonly_layout_modes">
     272      <element value="edit"/>
     273    </property>
     274    <property name="hidden_layout_modes">
     275      <element value="create"/>
     276    </property>
     277    <property name="hidden_readonly_layout_modes"/>
     278    <property name="css_class_expr">string:row</property>
     279  </widget>
     280  <widget name="subj3" meta_type="Select Widget">
     281    <property name="title">Subject 3</property>
     282    <property name="fields">
     283      <element value="subj3"/>
     284    </property>
     285    <property name="label"></property>
     286    <property name="label_edit"></property>
     287    <property name="description"></property>
     288    <property name="help"></property>
     289    <property name="is_i18n">False</property>
     290    <property name="widget_mode_expr"></property>
     291    <property name="readonly_layout_modes">
     292      <element value="edit"/>
     293    </property>
     294    <property name="hidden_layout_modes">
     295      <element value="create"/>
     296    </property>
     297    <property name="hidden_readonly_layout_modes"/>
     298    <property name="vocabulary">jamb_subjects</property>
     299    <property name="css_class_expr">string:row</property>
     300  </widget>
     301  <widget name="subj3score" meta_type="Int Widget">
     302    <property name="title">Subject 3 Score</property>
     303    <property name="fields">
     304      <element value="subj3score"/>
     305    </property>
     306    <property name="label"> : </property>
     307    <property name="label_edit"> : </property>
     308    <property name="description"></property>
     309    <property name="help"></property>
     310    <property name="is_i18n">False</property>
     311    <property name="widget_mode_expr"></property>
     312    <property name="readonly_layout_modes">
     313      <element value="edit"/>
     314    </property>
     315    <property name="hidden_layout_modes">
     316      <element value="create"/>
     317    </property>
     318    <property name="hidden_readonly_layout_modes"/>
     319    <property name="css_class_expr">string:row</property>
     320  </widget>
     321  <widget name="lastname" meta_type="String Widget">
     322    <property name="title">Lastname</property>
     323    <property name="fields">
     324      <element value="lastname"/>
     325    </property>
     326    <property name="label">Lastname</property>
     327    <property name="label_edit">Lastname</property>
     328    <property name="description"></property>
     329    <property name="help"></property>
     330    <property name="is_i18n">False</property>
     331    <property name="widget_mode_expr"></property>
     332    <property name="readonly_layout_modes">
     333      <element value="edit"/>
     334    </property>
     335    <property name="hidden_layout_modes">
     336      <element value="create"/>
     337    </property>
     338    <property name="hidden_readonly_layout_modes"/>
     339    <property name="css_class_expr">string:row</property>
     340  </widget>
     341  <widget name="lga" meta_type="WAeUP LGA Widget">
     342    <property name="title">LGA</property>
     343    <property name="fields">
     344      <element value="lga"/>
     345    </property>
     346    <property name="label">LGA</property>
     347    <property name="label_edit">LGA</property>
     348    <property name="description"></property>
     349    <property name="help"></property>
     350    <property name="is_i18n">False</property>
     351    <property name="widget_mode_expr"></property>
     352    <property name="readonly_layout_modes"/>
     353    <property name="hidden_layout_modes"/>
     354    <property name="hidden_readonly_layout_modes"/>
     355    <property name="css_class_expr">string:row</property>
     356  </widget>
     357  <widget name="middlenames" meta_type="String Widget">
     358    <property name="title">Middlenames</property>
     359    <property name="fields">
     360      <element value="middlenames"/>
     361    </property>
     362    <property name="label">Middlenames</property>
     363    <property name="label_edit">Middlenames</property>
     364    <property name="description"></property>
     365    <property name="help"></property>
     366    <property name="is_i18n">False</property>
     367    <property name="widget_mode_expr"></property>
     368    <property name="readonly_layout_modes"/>
     369    <property name="hidden_layout_modes"/>
     370    <property name="hidden_readonly_layout_modes"/>
     371    <property name="css_class_expr">string:row</property>
     372  </widget>
     373  <widget name="passport" meta_type="Ext File Widget">
     374    <property name="title">Passport</property>
     375    <property name="fields">
     376      <element value="passport"/>
     377    </property>
     378    <property name="is_required">True</property>
     379    <property name="label">Passport</property>
     380    <property name="label_edit">Passport</property>
     381    <property name="readonly_layout_modes"/>
     382    <property name="hidden_layout_modes">
     383      <element value="create"/>
     384    </property>
     385    <property name="hidden_readonly_layout_modes"/>
     386    <property name="size_max">50000</property>
     387    <property name="display_external_editor">False</property>
     388  </widget>
     389  <widget name="phone" meta_type="String Widget">
     390    <property name="title">Phone</property>
     391    <property name="fields">
     392      <element value="phone"/>
     393    </property>
     394    <property name="label">Phone</property>
     395    <property name="label_edit">Phone</property>
     396    <property name="description"></property>
     397    <property name="help"></property>
     398    <property name="is_i18n">False</property>
     399    <property name="widget_mode_expr"></property>
     400    <property name="readonly_layout_modes"/>
     401    <property name="hidden_layout_modes">
     402      <element value="create"/>
     403    </property>
     404    <property name="hidden_readonly_layout_modes"/>
     405    <property name="css_class_expr">string:row</property>
     406  </widget>
     407  <widget name="pin" meta_type="Pume Pin Widget">
     408    <property name="title">PIN</property>
     409    <property name="fields">
     410      <element value="pin"/>
     411    </property>
     412    <property name="label">PIN</property>
     413    <property name="label_edit">PIN</property>
     414    <property name="description"></property>
     415    <property name="help"></property>
     416    <property name="is_i18n">False</property>
     417    <property name="widget_mode_expr"></property>
     418    <property name="readonly_layout_modes">
     419      <element value="edit"/>
     420    </property>
     421    <property name="hidden_layout_modes">
     422    </property>
     423    <property name="hidden_readonly_layout_modes"/>
     424    <property name="css_class_expr">string:row</property>
     425    <property name="prefix">APP</property>
     426    <property name="reference">reg_no</property>
     427  </widget>
     428  <widget name="registration_date" meta_type="DateTime Widget">
     429    <property name="title">Registration Date</property>
     430    <property name="fields">
     431      <element value="registration_date"/>
     432    </property>
     433    <property name="label">Registration Date</property>
     434    <property name="label_edit">Registration Date</property>
     435    <property name="description"></property>
     436    <property name="help"></property>
     437    <property name="is_i18n">False</property>
     438    <property name="widget_mode_expr"></property>
     439    <property name="readonly_layout_modes">
     440      <element value="edit"/>
     441    </property>
     442    <property name="hidden_layout_modes"/>
     443    <property name="hidden_readonly_layout_modes"/>
     444    <property name="css_class_expr">string:row</property>
     445  </widget>
     446  <widget name="testdate" meta_type="DateTime Widget">
     447    <property name="title">Test Date</property>
     448    <property name="fields">
     449      <element value="testdate"/>
     450    </property>
     451    <property name="label">Test Date</property>
     452    <property name="label_edit">Test Date</property>
     453    <property name="description"></property>
     454    <property name="help"></property>
     455    <property name="is_i18n">False</property>
     456    <property name="widget_mode_expr"></property>
     457    <property name="readonly_layout_modes"/>
     458    <property name="hidden_layout_modes"/>
     459    <property name="hidden_readonly_layout_modes"/>
     460    <property name="css_class_expr">string:row</property>
     461  </widget>
     462  <widget name="reg_no" meta_type="JambRegNo Widget">
     463    <property name="title">JAMB Registration Number</property>
     464    <property name="fields">
     465      <element value="reg_no"/>
     466    </property>
     467    <property name="label">JAMB Registration Number</property>
     468    <property name="label_edit">JAMB Registration Number</property>
     469    <property name="description"></property>
     470    <property name="help"></property>
     471    <property name="is_i18n">False</property>
     472    <property name="widget_mode_expr"></property>
     473    <property name="readonly_layout_modes">
     474      <element value="edit"/>
     475    </property>
     476    <property name="hidden_layout_modes"/>
     477    <property name="hidden_readonly_layout_modes"/>
     478    <property name="css_class_expr">string:row</property>
     479    <property name="display_width">13</property>
     480    <property name="size_max">13</property>
     481    <property name="reference">reg_no</property>
     482    <property name="catalog">applicants_catalog</property>
     483  </widget>
     484  <widget name="score" meta_type="Int Widget">
     485    <property name="title">Score</property>
     486    <property name="fields">
     487      <element value="score"/>
     488    </property>
     489    <property name="label">Score</property>
     490    <property name="label_edit">Score</property>
     491    <property name="description"></property>
     492    <property name="help"></property>
     493    <property name="is_i18n">False</property>
     494    <property name="widget_mode_expr"></property>
     495    <property name="readonly_layout_modes"/>
     496    <property name="hidden_layout_modes"/>
     497    <property name="hidden_readonly_layout_modes"/>
     498  </widget>
     499  <widget name="sex" meta_type="WAeUP Sex Widget">
     500    <property name="title">Sex</property>
     501    <property name="fields">
     502      <element value="sex"/>
     503    </property>
     504    <property name="label">Score</property>
     505    <property name="label_edit">Score</property>
     506    <property name="description"></property>
     507    <property name="help"></property>
     508    <property name="is_i18n">False</property>
     509    <property name="widget_mode_expr"></property>
     510    <property name="readonly_layout_modes"/>
     511    <property name="hidden_layout_modes"/>
     512    <property name="hidden_readonly_layout_modes"/>
     513    <property name="css_class_expr">string:row</property>
     514  </widget>
     515  <widget name="state" meta_type="WAeUP LGA Widget">
     516    <property name="title">State</property>
     517    <property name="fields">
     518      <element value="lga"/>
     519    </property>
     520    <property name="label">State</property>
     521    <property name="label_edit">State</property>
     522    <property name="description"></property>
     523    <property name="help"></property>
     524    <property name="is_i18n">False</property>
     525    <property name="widget_mode_expr"></property>
     526    <property name="readonly_layout_modes"/>
     527    <property name="hidden_layout_modes"/>
     528    <property name="hidden_readonly_layout_modes"/>
     529    <property name="css_class_expr">string:row</property>
     530  </widget>
     531  <widget name="status" meta_type="String Widget">
     532    <property name="title">Status</property>
     533    <property name="fields">
     534      <element value="status"/>
     535    </property>
     536    <property name="label">Status</property>
     537    <property name="label_edit">Status</property>
     538    <property name="description"></property>
     539    <property name="help"></property>
     540    <property name="is_i18n">False</property>
     541    <property name="widget_mode_expr"></property>
     542    <property name="readonly_layout_modes"/>
     543    <property name="hidden_layout_modes"/>
     544    <property name="hidden_readonly_layout_modes"/>
     545    <property name="css_class_expr">string:row</property>
     546  </widget>
     547  <widget name="verdict" meta_type="WAeUP Verdict Widget">
     548    <property name="title">Verdict</property>
     549    <property name="fields">
     550      <element value="status"/>
     551    </property>
     552    <property name="label">Verdict</property>
     553    <property name="label_edit">Verdict</property>
     554    <property name="description"></property>
     555    <property name="help"></property>
     556    <property name="is_i18n">False</property>
     557    <property name="widget_mode_expr"></property>
     558    <property name="readonly_layout_modes"/>
     559    <property name="hidden_layout_modes"/>
     560    <property name="hidden_readonly_layout_modes"/>
     561    <property name="css_class_expr">string:row</property>
     562  </widget>
    470563 <table>
    471564  <row>
    472    <cell name="reg_no"/>
    473   </row>
    474   <row>
    475    <cell name="pin"/>
     565   <cell name="reg_no" ncols="2"/>
     566  </row>
     567  <row>
     568   <cell name="pin" ncols="2"/>
     569  </row>
     570  <row>
     571   <cell name="lastname" ncols="2"/>
     572  </row>
     573  <row>
     574   <cell name="email" ncols="2"/>
     575  </row>
     576  <row>
     577   <cell name="phone" ncols="2"/>
     578  </row>
     579  <row>
     580   <cell name="eng_score" ncols="2"/>
     581  </row>
     582  <row>
     583   <cell name="subj1"/>
     584   <cell name="subj1score"/>
     585  </row>
     586  <row>
     587   <cell name="subj2"/>
     588   <cell name="subj2score"/>
     589  </row>
     590  <row>
     591   <cell name="subj3"/>
     592   <cell name="subj3score"/>
     593  </row>
     594  <row>
     595   <cell name="agregate" ncols="2"/>
    476596  </row>
    477597 </table>
  • WAeUP_SRP/trunk/profiles/default/vocabularies.xml

    r1989 r2098  
    88 <object name="csv_names" meta_type="CPS Method Vocabulary"/>
    99 <object name="entry_modes" meta_type="CPS Vocabulary"/>
     10 <object name="jamb_subjects" meta_type="CPS Vocabulary"/>
    1011 <object name="exam_subjects" meta_type="CPS Vocabulary"/>
    1112 <object name="exam_types" meta_type="CPS Vocabulary"/>
Note: See TracChangeset for help on using the changeset viewer.