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
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
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)
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
def _extended_json_decoding(dct): if '<datetime>' in dct: # 2013-10-18T20:35:18+07:00 return StringToDate(dct['datetime'], format=None) return dct
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