Exemplo n.º 1
0
    def from_dict(cls, adict):
        invalid_req = InvalidRequestObject()

        schema = Schema(
            {
                Required('full_name'):
                All(str, Length(min=1, max=128)),
                Required('reg_date'):
                Any(
                    All(
                        datetime.date,
                        Range(min=datetime.date(1000, 1, 1),
                              max=datetime.date.today())),
                    Datetime('%Y-%m-%d')),
            },
            extra=REMOVE_EXTRA)

        try:
            values = schema(adict)
        except MultipleInvalid as exc:
            for error in exc.errors:
                try:
                    invalid_req.add_error(parameter='.'.join(
                        [p for p in error.path]),
                                          message=error.error_message)
                except TypeError as e:
                    invalid_req.add_error(parameter='.'.join(
                        [p.schema for p in error.path]),
                                          message=error.error_message)

        if invalid_req.has_errors():
            return invalid_req

        return ReaderAddRequestObject(init_values=values)
Exemplo n.º 2
0
    def from_dict(cls, adict):
        invalid_req = InvalidRequestObject()

        schema = Schema(
            {
                Required('title'):
                All(str, Length(min=1, max=128)),
                Required('author'):
                All(str, Length(min=1, max=128)),
                Required('year'):
                Any(
                    Datetime('%Y'),
                    All(int, Range(min=1000,
                                   max=datetime.datetime.now().year))),
                Required('language'):
                All(str, Length(min=1, max=128)),
            },
            extra=REMOVE_EXTRA)

        try:
            values = schema(adict)
        except MultipleInvalid as exc:
            for error in exc.errors:
                try:
                    invalid_req.add_error(parameter='.'.join(
                        [p for p in error.path]),
                                          message=error.error_message)
                except TypeError as e:
                    invalid_req.add_error(parameter='.'.join(
                        [p.schema for p in error.path]),
                                          message=error.error_message)

        if invalid_req.has_errors():
            return invalid_req

        return BookAddRequestObject(init_values=values)
Exemplo n.º 3
0
         str,
         'locales':
         Any([str], [None]),
         'branch':
         str,
         'platform':
         Any(str, None),
         'version':
         str,
         'revision':
         str,
         'build_number':
         int,
         'release_eta':
         Any(None,
             Datetime(format='%Y-%m-%dT%H:%M:%S.%f')),
         Extra:
         object,
     },
     'signing': {
         'signature': str,
     },
     Extra: object,
 },
 Required('metadata',
          msg="Required for TaskCluster schema."): {
     'name': All(str, Length(max=255)),
     'description': All(str, Length(max=32768)),
     'owner': All(Email(), Length(max=255)),
     'source': All(Url(), Length(max=4096)),
 },
Exemplo n.º 4
0
def test_datetime():
    schema = Schema({"datetime": Datetime()})
    schema({"datetime": "2016-10-24T14:01:57.102152Z"})
    assert_raises(MultipleInvalid, schema, {"datetime": "2016-10-24T14:01:57"})
Exemplo n.º 5
0
 Required('reruns', msg="Required for releasetasks schema."): Range(min=0, max=100),
 Required('taskId', msg="Required for TaskCluster schema."): Match(TASKCLUSTER_ID_REGEX),
 Required('task', msg="Required for TaskCluster schema."): All(task_provisionerId_test, Schema({
                 Required('created', msg="Required for TaskCluster schema."): str,
                 Required('deadline', msg="Required for TaskCluster schema."): str,
                 Required('extra', msg="Required for releasetasks schema."): {
                     'task_name': str,
                     'build_props': {
                         'product': str,
                         'locales': Any([str], [None]),
                         'branch': str,
                         'platform': Any(str, None),
                         'version': str,
                         'revision': str,
                         'build_number': int,
                         'release_eta': Any(None, Datetime(format='%Y-%m-%dT%H:%M:%S.%f')),
                         Extra: object,
                     },
                     'signing': {
                         'signature': str,
                     },
                     Extra: object,
                 },
                 Required('metadata', msg="Required for TaskCluster schema."): {
                     'name': All(str, Length(max=255)),
                     'description': All(str, Length(max=32768)),
                     'owner': All(Email(), Length(max=255)),
                     'source': All(Url(), Length(max=4096)),
                 },
                 Required('payload', msg="Required for TaskCluster schema."): {
                     Extra: object,
Exemplo n.º 6
0
        Optional('radius', default=10, msg="radius must be a positive whole number of meters"): Any(int, Range(min=0)),

        # Now that we have our bounding box defined, we now set the trigger. Ingress or egress?
        Optional('trigger', default=_reminder_triggers[0]): In(_reminder_triggers,
                                                               msg="Location based reminder can be trigger on ONE OF {}".format(
                                                                   _reminder_triggers))

    }

}

# Todoist also supports an absolute date/time reminder which is just a full date&timestamp
_absolute_reminder_schema = {

    # There must be a WHEN object which must be _iso_8601_fmt
    Required('when'): Datetime(format=iso_8601_fmt)

}

# Users can set an arbitrary number of minutes from 'now' to fire a reminder off with
_relative_reminder_schema = {
    # TODO: in the future, it might be possible to add support for calculating a relative offset. E.G.: remind me 15min
    #   after $other_task_due or some fixed time in the future
    # TODO: it may also be nice to implement some code to allow the users to specify an offset in hours or days and
    #   calculate the minute_offset for them.
    ##
    # for now, we ONLY support an arbitrary number of minutes from now()!
    # minutes from now must be a positive integer!
    Required('minutes'): Range(min=1)
}
Exemplo n.º 7
0
    All(Coerce(int), Range(min=1)),
})

insert_contract_schema = Schema({
    Required('user_id'):
    All(Coerce(int), Range(min=1)),
    Required('contract_type'):
    All(Coerce(int), Range(min=0, max=2)),
    Required('rank_reward_bonus_rate'):
    All(Coerce(float), Range(min=0.0, max=1.0)),
    Required('basic_salary', default=0):
    All(Coerce(int), Range(min=0)),
    Required('gift_exponent_share', default=0.5):
    All(Coerce(float), Range(min=0.0)),
    Required('start_from'):
    All(Coerce(Datetime('%Y-%m-%d %H:%M:%S'))),
})

get_all_contract_schema = Schema({
    Required('user_id'):
    All(Coerce(int), Range(min=1)),
})

notification_schema = Schema({
    Required('user_id'):
    All(Coerce(int), Range(min=1)),
    Required('master_user_id'):
    All(Coerce(int), Range(min=1)),
    'modify':
    All(Coerce(int), Range(min=0, max=1)),
})