Ejemplo n.º 1
0
    def get_fields(self):
        required_details = OrderedDict()
        non_required_details = OrderedDict()

        for k, f in sorted(get_fields(self.model_type).iteritems()):
            if is_required(f):
                required_details[k] = f
            else:
                non_required_details[k] = f

        details = OrderedDict()
        for k, f in required_details.iteritems():
            details[k] = f
        for k, f in non_required_details.iteritems():
            details[k] = f

        return details
Ejemplo n.º 2
0
    def test_should_return_model_instance_fields_dict(self):
        result = get_fields(User())

        expect(result).to(have_keys(name=User.name, email=User.email))
Ejemplo n.º 3
0
 def test_non_model_object_should_raise_type_error(self):
     expect(lambda: get_fields(object)).to(raise_error(TypeError))
Ejemplo n.º 4
0
 def test_should_return_a_copy_of_internal_fields_dict(self):
     expect(get_fields(User)).not_to(be(get_fields(User)))
Ejemplo n.º 5
0
    def test_should_return_a_copy_of_internal_fields_dict(self):
        result = get_fields(User)

        expect(result).not_to.be(get_fields(User))
Ejemplo n.º 6
0
    def test_should_return_model_class_fields_dict(self):
        result = get_fields(User)

        expect(result).to.have.keys(name=User.name, email=User.email)
Ejemplo n.º 7
0
def ask_details_for_type(model_type, ask_only_required=True, help_map={}):
    '''
    Asks for user input to create an object of a specified type.

    If the type is registered in a model/builder map, the function associated
    with this type is used to create the object instead of the auto-generated
    query.
    '''

    if MODEL_MAP.get(model_type, None):

        func = MODEL_MAP[model_type]
        return func()

    required_details = OrderedDict()
    non_required_details = OrderedDict()

    values = {}

    for k, f in sorted(get_fields(model_type).iteritems()):
        if is_required(f):
            required_details[k] = f
        else:
            non_required_details[k] = f

    print
    print "Enter values for fields below. Enter '?' or '? arg1 [arg2]' for help for each field."
    print
    print "Required fields:"
    print "----------------"
    print
    for k, f in required_details.iteritems():
        while True:
            value = ask_detail_for_field(k, f, ask_only_required, help_map)
            if value:
                values[k] = value
                break
            else:
                print
                print "This is a required field, please enter value for {}.".format(
                    k)

            print

    if not ask_only_required:

        print
        print "Optional fields, press 'Enter' to ignore a field."
        print "-------------------------------------------------"
        print

        for k, f in non_required_details.iteritems():
            value = ask_detail_for_field(k, f, ask_only_required, help_map)

            if value:
                values[k] = value

            print

    obj = model_type(**values)

    return obj