def hello(): before = dateparse(request.args.get('before')).date() after = dateparse(request.args.get('after')).date() ret = [] for contrib in ContributionChanges.select().where(ContributionChanges.date == before): before_contrib_dict = get_dictionary_from_model(contrib) after_contrib_dict = get_dictionary_from_model(Contribution.get(sub_id=contrib.sub_id).get_on_date(after)) before_contrib_dict.pop('id') before_contrib_dict.pop('contribution') after_contrib_dict.pop('id') after_contrib_dict['transaction_pgi'] = transaction_pgi_dict[after_contrib_dict['transaction_pgi']] if after_contrib_dict['transaction_pgi'] else None before_contrib_dict['transaction_pgi'] = transaction_pgi_dict[before_contrib_dict['transaction_pgi']] if before_contrib_dict['transaction_pgi'] else None after_contrib_dict['ammendment_id'] = ammendment_id_dict[after_contrib_dict['ammendment_id']] if after_contrib_dict['ammendment_id'] else None before_contrib_dict['ammendment_id'] = ammendment_id_dict[before_contrib_dict['ammendment_id']] if before_contrib_dict['ammendment_id'] else None after_contrib_dict['transaction_tp'] = transaction_tp_dict[after_contrib_dict['transaction_tp']] if after_contrib_dict['transaction_tp'] else None before_contrib_dict['transaction_tp'] = transaction_tp_dict[before_contrib_dict['transaction_tp']] if before_contrib_dict['transaction_tp'] else None after_contrib_dict['report_type'] = report_type_dict[after_contrib_dict['report_type']] if after_contrib_dict['report_type'] else None before_contrib_dict['report_type'] = report_type_dict[before_contrib_dict['report_type']] if before_contrib_dict['report_type'] else None # report_type_dict ret.append({ "before": before_contrib_dict, "after": after_contrib_dict, "changes": list(set([x[1][0][0] for x in diff(before_contrib_dict, after_contrib_dict).diffs if x[0] not in ["equal", "context_end_container"] and x[1][0][0] not in ['contribution', 'date', 'id']])) }) before_sub_ids = set([x.sub_id for x in ContributionHistory.select().where(ContributionHistory.date == before)]) after_sub_ids = set([x.sub_id for x in ContributionHistory.select().where(ContributionHistory.date == after)]) for sub_id in (before_sub_ids - after_sub_ids): ret.append({ "before": get_dictionary_from_model(Contribution.get(sub_id=sub_id)), "after": None, "changes": None }) return render_template('diff.html', ret=ret, before=before, after=after)