Ejemplo n.º 1
0
    def getFieldValue(self,
                      form,
                      doc=None,
                      editmode_obsolete=False,
                      creation=False,
                      request=None):
        """
        """
        fieldValue = BaseField.getFieldValue(self, form, doc,
                                             editmode_obsolete, creation,
                                             request)

        mode = self.context.getFieldMode()
        if (mode == "EDITABLE" and request
                and ((doc is None and not (creation))
                     or request.has_key('Plomino_datagrid_rowdata'))):
            fieldname = self.context.id
            fieldValue = request.get(fieldname, fieldValue)

        if fieldValue and isinstance(fieldValue, basestring):
            fmt = self.format
            if not fmt:
                fmt = form.getParentDatabase().getDateTimeFormat()
            fieldValue = StringToDate(fieldValue, fmt)
        return fieldValue
Ejemplo n.º 2
0
 def validate(self, submittedValue):
     """
     """
     errors = []
     fieldname = self.context.id
     submittedValue = submittedValue.strip()
     try:
         # check if date only:
         if len(submittedValue) == 10:
             v = StringToDate(submittedValue, '%Y-%m-%d')
         else:
             # calendar widget default format is '%Y-%m-%d %H:%M' and might use the AM/PM format
             if submittedValue[-2:] in ['AM', 'PM']:
                 v = StringToDate(submittedValue, '%Y-%m-%d %I:%M %p')
             else:
                 v = StringToDate(submittedValue, '%Y-%m-%d %H:%M')
     except:
         errors.append(fieldname +
                       " must be a date/time (submitted value was: " +
                       submittedValue + ")")
     return errors
Ejemplo n.º 3
0
    def processInput(self, submittedValue):
        """
        """
        submittedValue = submittedValue.strip()
        try:
            # check if date only:
            if len(submittedValue) == 10:
                d = StringToDate(submittedValue, '%Y-%m-%d')
            else:
                # calendar widget default format is '%Y-%m-%d %H:%M' and might use the AM/PM format

                if submittedValue[-2:] in ['AM', 'PM']:
                    d = StringToDate(submittedValue, '%Y-%m-%d %I:%M %p')
                else:
                    d = StringToDate(submittedValue, '%Y-%m-%d %H:%M')
            return d
        except:
            # with datagrid, we might get dates formatted differently than using calendar
            # widget default format
            format = self.format
            if not format:
                format = self.context.getParentDatabase().getDateTimeFormat()
            return StringToDate(submittedValue, format)
Ejemplo n.º 4
0
    def getFieldValue(self, form, doc, editmode, creation, request):
        """
        """
        fieldValue = BaseField.getFieldValue(self, form, doc, editmode,
                                             creation, request)

        mode = self.context.getFieldMode()
        if mode == "EDITABLE" and request:
            if (doc is None and not (creation)
                ) or request.has_key('Plomino_datagrid_rowdata'):
                fieldname = self.context.id
                fieldValue = request.get(fieldname, fieldValue)
                if fieldValue:
                    format = self.format
                    if not format:
                        format = form.getParentDatabase().getDateTimeFormat()
                    fieldValue = StringToDate(fieldValue, format)
        return fieldValue
Ejemplo n.º 5
0
def _extended_json_decoding(dct):
    if '<datetime>' in dct:
        # 2013-10-18T20:35:18+07:00
        return StringToDate(dct['datetime'], format=None)
    return dct
Ejemplo n.º 6
0
    def extractItems(self, dxlFileContent):
        """
        Extract items from the DXL parsed file
        """
        #print 'extracting items ...'
        extractedItems = []
        items = dxlFileContent.getElementsByTagName("item")

        for item in items:
            dico = {'name': '', 'type': '', 'value': ''}

            # Get item type ----
            if item.hasChildNodes():
                # REM: getting first node element could be in a class derivating of minidom ...
                firstElement = item.firstChild
                while firstElement is not None and firstElement.nodeType is not firstElement.ELEMENT_NODE:
                    firstElement = firstElement.nextSibling

                if firstElement is not None:
                    dico['type'] = firstElement.nodeName

            # Get item name ----
            if item.nodeType is item.ELEMENT_NODE and item.hasAttribute(
                    'name'):
                dico['name'] = item.getAttribute('name')

#            if dico['type'] in FIELD_TYPES:
#                dico['type'] = FIELD_TYPES[dico['type']]

# Get item value ----
# number ----
            if dico['type'] == 'number':
                dico['value'] = firstElement.firstChild.nodeValue

            # text ----
            elif dico['type'] == 'text':
                # there may be some break tag, so get content recursively
                subchild = firstElement.firstChild
                while subchild is not None:
                    if subchild.nodeName == 'break':
                        dico['value'] += '<br />'
                    elif subchild.nodeName == '#text':
                        dico['value'] += unicode(
                            subchild.data.replace('\n', ''))

                    subchild = subchild.nextSibling

            # richtext ----
            elif dico['type'] == 'richtext':
                dico['value'] = self.richtextToHtml(item)

            # datetime ----
            elif dico['type'] == 'datetime':
                dateValue = str(firstElement.firstChild.nodeValue)
                if 'T' not in dateValue:
                    dateValue = StringToDate(dateValue, '%Y%m%d')
                else:
                    dateValue = StringToDate(dateValue[:15], '%Y%m%dT%H%M%S')
                dico['value'] = dateValue

            # selection ----
            elif dico['type'][4:] == 'list':
                dico['value'] = []
                subchild = firstElement.firstChild

                while subchild is not None:
                    dico['value'].append(subchild.firstChild.nodeValue)
                    subchild = subchild.nextSibling

            else:
                dico['value'] = '#########'

            if dico['name'] != '$FILE':
                extractedItems.append(dico)

        return extractedItems