'Generates a complete profile.
If "fields" is not empty, only the fields in the list will be returned'

def profile(self, fields=None, sex=None):

    if (fields is None):
        fields = []
    d = {'job': self.generator.job(), 'company': self.generator.company(), 'ssn': self.generator.ssn(), 'residence': self.generator.address(), 'current_location': (self.generator.latitude(), self.generator.longitude()), 'blood_group': ''.join(self.random_element(list(itertools.product(['A', 'B', 'AB', '0'], ['+', '-'])))), 'website': [self.generator.url() for i in range(1, self.random_int(2, 5))]}
    d = dict(d, **self.generator.simple_profile(sex))
    if (len(fields) > 0):
        d = dict(((k, v) for (k, v) in d.items() if (k in fields)))
    return d
