Exemple #1
0
 def match(self, site, stream_path, tag=None):
     if stream_path.startswith(self.prefix) and \
             stream_path.endswith(self.suffix):
         param_item_id_str = stream_path[len(self.prefix):]
         if self.suffix:
             param_item_id_str = param_item_id_str[:-len(self.suffix)]
         param_stream = site.retrieveStream(self.paramStream,
                                            tag=site.transmitTag(tag))
         try:
             param_item_id = \
                 param_stream.fields.id.convertFromString(param_item_id_str,
                                                          param_stream)
         except ValueError:
             return
         param_item = param_stream.retrieveItem(param_item_id)
         if param_item is None:
             # no such item
             return
         params = self.streamParams.copy()
         params[self.paramName] = param_item
         if self.titleTemplate is not None:
             params['title'] = interpolateString(self.titleTemplate, params)
         return self.templateStream, params
     else:
         return
Exemple #2
0
 def convertFromForm(self, form, name, item=None):
     value = form.getfirst(name, '').strip()
     if not value and self.allowNull:
         return
     try:
         # DateTime.strptime is not available on Windows
         return DateTime.DateTime(*time.strptime(value, self.format)[:6])
     except:
         message = qUtils.interpolateString(self.error_message,
                                            {'brick': self})
         raise self.InvalidFieldContent(message)
Exemple #3
0
 def convertFromForm(self, form, name, item=None):
     value = form.getString(name, '').strip()
     if self.allowNull and not value:
         return None
     if len(value) < self.minlength or len(value) > self.maxlength:
         message = qUtils.interpolateString(self.length_error_message,
                                            {'brick': self})
         raise self.InvalidFieldContent(message)
     if self.pattern and not re.match(self.pattern, value):
         raise self.InvalidFieldContent(self.not_match_error_message)
     return value
Exemple #4
0
 def convertFromForm(self, form, name, item):
     value = form.getfirst(name, '').strip()
     old_value = getattr(item, name)
     if value or not old_value:
         if len(value)<self.minlength:
             message = qUtils.interpolateString(self.too_short_message,
                                                {'brick': self})
             raise self.InvalidFieldContent(message)
         confirm = form.getfirst(name+'-confirm', '').strip()
         if value!=confirm:
             message = qUtils.interpolateString(
                         self.confirmation_failed_message, {'brick': self})
             raise self.InvalidFieldContent(message)
         try:
             value = str(value)
         except UnicodeEncodeError:
             raise self.InvalidFieldContent(self.encoding_failed_message)
         return self.crypt(value)
     else:
         # leave unchanged
         return old_value
Exemple #5
0
 def convertFromForm(self, form, name, item=None):
     value = form.getfirst(name, '').strip()
     if not value:
         if self.allowNull:
             return
         else:
             value = self.getDefault(item)
     message = qUtils.interpolateString(self.error_message, {'brick': self})
     try:
         value = self.type(value)
     except ValueError:
         raise self.InvalidFieldContent(message)
     if self.minValue<=value<=self.maxValue:
         return value
     else:
         raise self.InvalidFieldContent(message)
Exemple #6
0
 def convertFromForm(self, form, name, item=None):
     value = STRING.convertFromForm(self, form, name, item)
     if value is None:
         return value  # NULL (if allowed) is not required to be unique
     from qps.qDB.qSQL import Query, Param
     conn = item.dbConn
     query = Query("%s=" % name, Param(self.convertToDB(value, item)))
     if item.exists():
         query = conn.join([query, Query("%s !=" % item.fields.idFieldName,
                                         Param(item.id))])
     row = conn.selectRow(item.stream.tableName, [name], query)
     if row:
         message = qUtils.interpolateString(self.unique_error,
                                            {'brick': self})
         raise self.InvalidFieldContent(message)
     return value
Exemple #7
0
 def pattern(self):
     namespace = self.item.site.globalNamespace.copy()
     namespace.update({'brick': self.item})
     return qUtils.interpolateString(self.path_template,
                                     namespace)
Exemple #8
0
 def getIndexLabel(self, value):
     count = len(value)
     return qUtils.interpolateString(self.countTemplate, {'count': count})
Exemple #9
0
 def getLabel(self, item):
     namespace = item.site.globalNamespace.copy()
     namespace.update({'brick': item})
     return qUtils.interpolateString(self.labelTemplate, namespace)
Exemple #10
0
 def _stream_params(self, item):
     stream = qUtils.interpolateString(
         self.streamTemplate, {'item': item, 'field': self})
     return (stream, item.stream.tag)
Exemple #11
0
 def getLabel(self, item):
     '''Return label for option defined by item'''
     namespace = item.site.globalNamespace.copy()
     namespace.update({'brick': item})
     return qUtils.interpolateString(self.labelTemplate, namespace)
Exemple #12
0
 def _cookiePath(self, publisher):
     return qUtils.interpolateString(self.cookiePathTmpl,
                                     {'publisher': publisher})