Пример #1
0
def validate_field(field, supplied):
    value = None
    if not supplied:
        if field.required:
            return None, "%s is a required field" % field.name
        else:
            return supplied, ''
    
    if field.max_length and field.max_length < len(supplied):
        return None, "%s must be less than %s characters." % (field.name, field.max_length)
    
    if field.type == 'email' and not utils.is_valid_email(supplied):
        return None, "%s is not valid" % field.name
    
    if field.type in ['datetime', 'date'] and supplied:
        value = utils.default_time_parse(supplied)
        if not value:
            return None, "%s is invalid" % field.name
    
    value = value or supplied
    return value, ''
Пример #2
0
 def read(self, request, namespace, collection, response, id=None):
     try:
         collection = Collection.objects.get((Q(name=collection) | 
                                              Q(object_name=collection) | 
                                              Q(list_name=collection)),
                                              namespace__name=namespace)
     except Collection.DoesNotExist:
         return response.send(errors='Not found', status=404)
     query = {}
     db = settings.CONN[namespace]
     coll = db[collection.name]
     if collection.login_required:
         if not request.user.is_authenticated():
             return response.send(errors="Unauthorized", status=401)
         
         if collection.private_ownership:
             query['owner_id'] = request.user.id
     if id:
         query['_id'] = ObjectId(id)
         d = coll.find_one(query)
         response.set(**{collection.object_name or namespace.name: d})
         
     if request.GET.get('since'):
         query['when_created'] = {'$gte': utils.default_time_parse(request.GET.get('since'))}
     
     if collection.enforce_schema:
         fields = CollectionField.objects.filter(collection=collection)
         for field in fields:
             if field.name in request.GET:
                 if field.type in consts.FIELD_TYPES_REGEX:
                     query_val = re.compile(request.GET.get(field.name), re.IGNORECASE)
                 else:
                     query_val = request.GET(field.name)
                 query[field.name] = query_val
     else:
         query.update(dict((k, v) for k, v in request.GET.iteritems() if k not in keywords))
     d = list(coll.find(query))
     response.set(**{collection.list_name or namespace.name: d})
     return response.send()