'Preconditions: the model has 5 string columns,
len(attr[0]) == len(attr[1]) == len(props),
type(attr[0][i]) == type(attr[1][i]) for every i
attr is a list with two tuples. the first tuple holds info about obj1,
the second about obj2, for example:
[(name_obj1, ports_obj1), (name_obj2, porst_obj2)]
props is the list with names of such attributes, for example:
["Name: ", "Ports: "]
Will return a model filled up with information as detailed in
self.create_conflicts_models.'

def fill_model_from_props_and_attr(self, model, attr, props):

    def decide_type(raw_prop):
        'Returns    the    name    of    a    type    of    an    object.\n                                                Keep    in    mind,    type(type("a"))    is    Type,\n                                                                                                        type(type("a").__name__)    is    Str\n                                                '
        type_as_string = type(first_raw_prop).__name__
        return type_as_string
    def decide_bg():
        'Decides    which    background    should    the    row    have    depending    on\n                                                the    users    default    theme    (light,    dark,    or    unknown    abomination)\n                                                Pretty    ugly,    but    it    works'
        color = self.bg_color.split('(')[1]
        color = color.split(',')
        color1 = int(color[0])
        color2 = int(color[1])
        color3 = int(color[2][:(-1):None])
        default_bg = ('#%02x%02x%02x' % (color1, color2, color3))
        if ((color1 > 200) and (color2 > 200) and (color3 > 200)):
            return ('pink' if (first_prop != sec_prop) else default_bg)
        elif ((color1 < 100) and (color2 < 100) and (color3 < 100)):
            return ('darkred' if (first_prop != sec_prop) else default_bg)
        else:
            return ('#%02x%02x%02x' % (color1, color2, color3))
    for (index, prop) in enumerate(props):
        first_raw_prop = attr[0][index]
        sec_raw_prop = attr[1][index]
        first_prop = self.cook(first_raw_prop)
        sec_prop = self.cook(sec_raw_prop)
        model.append([prop, first_prop, sec_prop, decide_bg(), decide_type(first_raw_prop)])
    return model
