def agreement_to_json(agreement_id):
print('\033[93m{}\033[0m'.format(agreement_id)) # Yellow
ma = MembershipAgreement.objects.prefetch_related(
'company', 'service_set', 'paymentdetail', 'clientdata',
'spacesdata', 'company__memberdetail_set', 'payment_set') \
.get(id=agreement_id)
ma_dict = model_to_dict(ma)
base_json_dict = {'membershipagreement': {}}
print('\033[92m{}\033[0m'.format(ma_dict)) # Green
for related_name, relationship in ma._meta.fields_map.items():
relation = getattr(ma, relationship.get_accessor_name())
if isinstance(relation, Model):
base_json_dict['membershipagreement'].update({
related_name: model_to_dict(relation)})
else:
objects = relation.all()
base_json_dict['membershipagreement'].update({
related_name: [model_to_dict(instance) for instance in objects]})
ma_dict.update(base_json_dict)
data = json.dumps(base_json_dict, default=json_handler)
print('\033[91m{}\033[0m'.format(data)) # Red
return data