Changeset 2114 for WAeUP_SRP/trunk


Ignore:
Timestamp:
18 Aug 2007, 07:36:29 (17 years ago)
Author:
joachim
Message:

add passport widget

Location:
WAeUP_SRP/trunk
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • WAeUP_SRP/trunk/WAeUPTool.py

    r2094 r2114  
    684684    ###)
    685685
     686    security.declarePublic('showFsPicture') ###(
     687    def showFsPicture(self,path):
     688        """return a picture from the filesystem"""
     689        picture_path = "%s/var/%s" % (i_home,path)
     690        if os.path.exists(picture_path):
     691            return open(picture_path).read()
     692       
     693    ###)
     694
    686695    security.declareProtected(ModifyPortalContent,'deleteAllCourses') ###(
    687696    def deleteAllCourses(self,department="All"):
  • WAeUP_SRP/trunk/Widgets.py

    r2110 r2114  
    14961496    def getImageInfo(self, datastructure): ###(
    14971497        """Get the file info from the datastructure."""
    1498         import pdb; pdb.set_trace()
     1498        #import pdb; pdb.set_trace()
    14991499        widget_id = self.getWidgetId()
    15001500        fileupload = datastructure[widget_id]
    15011501        dm = datastructure.getDataModel()
    15021502        field_id = self.fields[0]
    1503         if fileupload:
    1504             empty_file = False
    1505             session_file = isinstance(fileupload, PersistableFileUpload)
    1506             current_filename = generateFileName(fileupload.filename)
    1507             fileupload.seek(0, 2) # end of file
    1508             size = fileupload.tell()
    1509             fileupload.seek(0)
    1510             file = dm[field_id] # last stored file
    1511             if file is not None:
    1512                 last_modified = str(file._p_mtime or '')
    1513             else:
    1514                 last_modified = ''
    1515         else:
     1503        # if isinstance(fileupload, PersistableFileUpload):
     1504        #     empty_file = False
     1505        #     session_file = isinstance(fileupload, PersistableFileUpload)
     1506        #     current_filename = generateFileName(fileupload.filename)
     1507        #     fileupload.seek(0, 2) # end of file
     1508        #     size = fileupload.tell()
     1509        #     fileupload.seek(0)
     1510        #     last_modified = ''
     1511        # else:
     1512        #     empty_file = True
     1513        #     session_file = False
     1514        #     current_filename = ''
     1515        #     size = 0
     1516        #     last_modified = ''
     1517        # get the adapter
     1518        # for adapter in dm._adapters:
     1519        #     if adapter.getSchema().has_key(field_id):
     1520        #         break # Note: 'adapter' is still the right one
     1521        # else:
     1522        #     raise ValueError('No schema for field %r' % field_id)
     1523
     1524        content_url = "/uniben/viewimage?path=%s/%s_%s.jpg" %\
     1525                                 (self.path,
     1526                                  datastructure[self.id_field],
     1527                                  self.getWidgetId(),
     1528                                  )
     1529        # registry = getToolByName(self, 'mimetypes_registry')
     1530        # mimetype = (registry.lookupExtension(current_filename.lower()) or
     1531        #             registry.lookupExtension('file.bin'))
     1532
     1533        # image_info = {
     1534        #     'empty_file': empty_file,
     1535        #     'session_file': session_file,
     1536        #     'current_filename': current_filename,
     1537        #     'size': size,
     1538        #     'last_modified': last_modified,
     1539        #     'content_url': content_url,
     1540        #     'mimetype': mimetype,
     1541        #     }
     1542        # if image_info['empty_file']:
     1543        #     tag = ''
     1544        #     height = 0
     1545        #     width = 0
     1546        # else:
     1547        current_filename = "%s_%s.jpg" % (datastructure[self.id_field],
     1548                                          field_id,)
     1549        file_path = "/%s/%s" % (self.storage_path,
     1550                                      current_filename)
     1551       
     1552        # read the file from the filesystem
     1553        if not os.path.exists(file_path):
    15161554            empty_file = True
    15171555            session_file = False
     
    15191557            size = 0
    15201558            last_modified = ''
    1521 
    1522         # get the adapter
    1523         for adapter in dm._adapters:
    1524             if adapter.getSchema().has_key(field_id):
    1525                 break # Note: 'adapter' is still the right one
    1526         else:
    1527             raise ValueError('No schema for field %r' % field_id)
    1528 
    1529         content_url = None
    1530         registry = getToolByName(self, 'mimetypes_registry')
    1531         mimetype = (registry.lookupExtension(current_filename.lower()) or
    1532                     registry.lookupExtension('file.bin'))
    1533 
    1534         image_info = {
    1535             'empty_file': empty_file,
    1536             'session_file': session_file,
    1537             'current_filename': current_filename,
    1538             'size': size,
    1539             'last_modified': last_modified,
    1540             'content_url': content_url,
    1541             'mimetype': mimetype,
    1542             }
    1543         if image_info['empty_file']:
    1544             tag = ''
    1545             height = 0
    1546             width = 0
    1547         else:
    1548             file_path = "/%s/%s_%s.jpg" % (self.storage_path,
    1549                                            datamodel[self.id_field],
    1550                                            self.field_id,)
    1551             # read the file from the filesystem
    1552             if not os.path.exists(file_path):
    1553                 image = None
    1554             else:
    1555                 image = open(file_path).read()
     1559        else:
     1560            image = open(file_path)
    15561561            from OFS.Image import getImageInfo
    15571562            image.seek(0)
    15581563            data = image.read(24)
    1559             ct, width, height = getImageInfo(data)
     1564            size = len(data)
     1565            empty_file = size == 0
     1566            session_file = False
     1567            last_modified = ''
     1568            image.close()
     1569            mimetype, width, height = getImageInfo(data)
    15601570            if width < 0:
    15611571                width = None
    15621572            if height < 0:
    15631573                height = None
    1564 
     1574   
    15651575            if (self.allow_resize
    15661576                and height is not None
     
    15771587                    width = int(zoom * width)
    15781588                    height = int(zoom * height)
    1579 
    1580             title = image_info['current_filename']
    1581             alt = title or ''
    1582             if height is None or width is None:
    1583                 tag = renderHtmlTag('img', src=image_info['content_url'],
    1584                                     alt=alt, title=title)
    1585             else:
    1586                 tag = renderHtmlTag('img', src=image_info['content_url'],
    1587                                     width=str(width), height=str(height),
    1588                                     alt=alt, title=title)
     1589        image_info = {
     1590            'empty_file': empty_file,
     1591            'session_file': session_file,
     1592            'current_filename': current_filename,
     1593            'size': size,
     1594            'last_modified': last_modified,
     1595            'content_url': content_url,
     1596            'mimetype': mimetype,
     1597            }
     1598        title = image_info['current_filename']
     1599        alt = title or ''
     1600        height = int(self.display_height)
     1601        width = int(self.display_width)
     1602        if height is None or width is None:
     1603            tag = renderHtmlTag('img', src=image_info['content_url'],
     1604                                alt=alt, title=title)
     1605        else:
     1606            tag = renderHtmlTag('img', src=image_info['content_url'],
     1607                                width=str(width), height=str(height),
     1608                                alt=alt, title=title)
    15891609
    15901610        image_info['height'] = height
     
    15941614    ###)
    15951615
     1616    # def getFileName(self, fileupload, datastructure, choice, old_filename=''):
     1617    #     #filename = datastructure[self.getWidgetId()+'_filename'].strip()
     1618    #     ext ='jpg'
     1619    #     filename = "%s_%s.%s" % (datastructure[self.id_field],
     1620    #                              self.getWidgetId(),
     1621    #                              ext)
     1622    #     if choice == 'change' and filename == old_filename:
     1623    #         # if upload with input field unchanged, use fileupload filename
     1624    #         filename = cookId('', '', fileupload)[0].strip()
     1625    #     #filename = cleanFileName(filename or 'file.bin')
     1626    #     return filename
     1627
     1628    def checkFileName(self, filename, mimetype):
     1629        return '', {}
     1630        if mimetype and mimetype.startswith('image'):
     1631            return '', {}
     1632        return 'cpsschemas_err_image', {}
     1633
    15961634    def prepare(self, datastructure, **kw): ###(
    15971635        """Prepare datastructure from datamodel."""
     
    15991637        widget_id = self.getWidgetId()
    16001638        file_name = datamodel[self.fields[0]]
    1601         if not file_name:
    1602             file = None
    1603         else:
    1604             import pdb; pdb.set_trace()
    16051639        datastructure[widget_id] = file_name
    1606         datastructure[widget_id + '_choice'] = ''
    1607         if file is not None:
    1608             title = file.title
    1609         else:
    1610             title = ''
     1640        datastructure[widget_id + '_choice'] = 'change'
     1641        title = 'Passport Foto'
    16111642        datastructure[widget_id + '_filename'] = title
    16121643    ###)
    16131644
    1614     def validate(self, datastructure, **kw):
     1645    def validate(self, datastructure, **kw): ###(
    16151646        """Update datamodel from user data in datastructure.
    16161647        """
     1648        #import pdb; pdb.set_trace()
    16171649        datamodel = datastructure.getDataModel()
    16181650        field_id = self.fields[0]
    16191651        widget_id = self.getWidgetId()
    1620         choice = datastructure[widget_id+'_choice']
    16211652        store = False
    16221653        fileupload = None
    16231654        mimetype = None
    16241655        old_file = datamodel[field_id]
    1625         if old_file is not None:
    1626             old_filename = old_file.title
    1627         else:
    1628             old_filename = ''
    1629 
     1656        # if old_file is not None:
     1657        #     old_filename = old_file.title
     1658        # else:
     1659        #     old_filename = ''
     1660        choice = datastructure[widget_id+'_choice']
     1661        fileupload = datastructure[widget_id]
     1662        is_upload = isinstance(fileupload, FileUpload)
     1663        if not is_upload:
     1664            return True
    16301665        if choice == 'delete':
    16311666            if self.is_required:
     
    16391674                # actually want to store it.
    16401675                store = True
    1641             else:
    1642                 # Nothing to change, don't pollute datastructure
    1643                 # with something costly already stored, which therefore
    1644                 # doesn't need to be kept in the session.
    1645                 self.unprepare(datastructure)
    1646         elif choice == 'change':
    1647             fileupload = datastructure[widget_id]
     1676            # else:
     1677            #     # Nothing to change, don't pollute datastructure
     1678            #     # with something costly already stored, which therefore
     1679            #     # doesn't need to be kept in the session.
     1680            #     self.unprepare(datastructure)
     1681        elif choice == 'change' and is_upload:
    16481682            if not fileupload:
    16491683                return self.validateError('cpsschemas_err_file_empty', {},
     
    16671701
    16681702        # Find filename
    1669         if fileupload is not None:
    1670             filename = self.getFileName(fileupload, datastructure, choice,
    1671                                         old_filename)
    1672             if filename != old_filename:
    1673                 registry = getToolByName(self, 'mimetypes_registry')
    1674                 mimetype = registry.lookupExtension(filename.lower())
    1675                 if mimetype is not None:
    1676                     mimetype = str(mimetype) # normalize
    1677                 err, err_mapping = self.checkFileName(filename, mimetype)
    1678                 if err:
    1679                     return self.validateError(err, err_mapping, datastructure)
    1680         elif datamodel[field_id] is not None:
    1681             # FIXME: not correct in the case of change=='resize' (CPSPhotoWidget)
    1682             filename = datamodel[field_id].title
    1683 
    1684         import pdb;pdb.set_trace()
    1685         # Set/update data
    1686         file_path = "/%s/%s_%s.jpg" % (storage_path,
    1687                                        datamodel[self.id_field],
    1688                                        self.field_id,)
     1703        if is_upload:
     1704            ext ='jpg'
     1705            filename = "%s_%s.%s" % (datastructure[self.id_field],
     1706                                 self.getWidgetId(),
     1707                                 ext)
     1708            registry = getToolByName(self, 'mimetypes_registry')
     1709            mimetype = registry.lookupExtension(filename.lower())
     1710            if mimetype is not None:
     1711                mimetype = str(mimetype) # normalize
     1712
    16891713        if store:
     1714            # Set/update data
     1715            file_path = "%s_%s.jpg" % (datamodel[self.id_field],
     1716                                       field_id,)
     1717            full_path = "%s/%s" % (self.storage_path, file_path)
    16901718            file = self.makeFile(filename, fileupload, datastructure)
    16911719            # Fixup mimetype
     
    16931721                file.content_type = mimetype
    16941722            # Store the file in the filesystem
    1695             if not os.path.exists(storage_path):
    1696                 os.mkdir(storage_path)
    1697             open(file_path,"w").write(file)
    1698             datamodel[field_id] = file_path
    1699         # elif datamodel[field_id] is not None:
    1700         #     # Change filename
    1701         #     if datamodel[field_id].title != filename:
    1702         #         datamodel[field_id].title = filename
     1723            if not os.path.exists(self.storage_path):
     1724                os.mkdir(self.storage_path)
     1725            #import pdb;pdb.set_trace()
     1726            pict = open(full_path,"w")
     1727            fileupload.seek(0)
     1728            pict.write(fileupload.read())
     1729            pict.close()
    17031730
    17041731
    17051732        return True
    17061733
     1734###)
     1735
     1736    def render(self, mode, datastructure, **kw): ###(
     1737        render_method = 'widget_passport_render'
     1738        meth = getattr(self, render_method, None)
     1739        if meth is None:
     1740            raise RuntimeError("Unknown Render Method %s for widget type %s"
     1741                               % (render_method, self.getId()))
     1742        img_info = self.getImageInfo(datastructure)
     1743        return meth(mode=mode, datastructure=datastructure, **img_info)
     1744    ###)
    17071745
    17081746InitializeClass(NoZodbImageWidget)
  • WAeUP_SRP/trunk/skins/waeup_student/apply_pume.py

    r2111 r2114  
    5050        for field in context.applicants_catalog.schema():
    5151            object[field] = getattr(brains[0],field,None)
     52        if not object['passport']:
     53            object['passport'] = ''
    5254        if object['status'] == "submitted":
    5355            submitted = True
    54         #set_trace()
    5556        if not create and pin != object['pin']:
    5657            return request.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
    5758if slip:
    5859    mode = "view_slip"
    59 
    6060res,psm,ds = lt.renderLayout(layout_id= 'application',
    6161                             schema_id= 'application',
     
    9191    pass
    9292data = {}
     93dm = ds.getDataModel()
     94#set_trace()
    9395for field in context.applicants_catalog.schema():
    94     if ds.has_key(field) and request.has_key("widget__%s" % field):
    95         data[field] = ds.get(field)
     96    if dm.has_key("%s" % field):
     97        data[field] = dm.get(field)
    9698data['reg_no'] = reg_no
    97 
    9899if apply_pume:
    99 
    100100    if submitted:
    101101        mode = "view"
     
    143143                                )
    144144elif edit:
     145    #set_trace()
    145146    if submitted:
    146147        mode = "view"
  • WAeUP_SRP/trunk/skins/waeup_student/apply_pume_form.pt

    r2109 r2114  
    1212        <h3 tal:condition="python:mode=='view'">Your PUME Application Record</h3>
    1313        <br />
     14        <img tal:condition="python:0" src="/uniben/viewimage?path=images/72921580DJ_passport.jpg" alt="" title="image/jpeg" />
    1415        <form action="" id="editForm" method="post"
    1516              enctype="multipart/form-data" class="workflow"
Note: See TracChangeset for help on using the changeset viewer.