From cfab13824df74525a9b54f0549bbbc0acfa76ede Mon Sep 17 00:00:00 2001 From: AdvanticGmbH Date: Tue, 28 Jun 2022 11:16:45 +0200 Subject: [PATCH] Add history entries for association changes of domains --- powerdnsadmin/models/domain.py | 9 +++++++++ powerdnsadmin/routes/admin.py | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/powerdnsadmin/models/domain.py b/powerdnsadmin/models/domain.py index bbd71e1..6db2d40 100644 --- a/powerdnsadmin/models/domain.py +++ b/powerdnsadmin/models/domain.py @@ -2,6 +2,7 @@ import json import re import traceback from flask import current_app +from flask_login import current_user from urllib.parse import urljoin from distutils.util import strtobool @@ -835,6 +836,7 @@ class Domain(db.Model): headers = {'X-API-Key': self.PDNS_API_KEY, 'Content-Type': 'application/json'} + account_name_old = Account().get_name_by_id(domain.account_id) account_name = Account().get_name_by_id(account_id) post_data = {"account": account_name} @@ -858,6 +860,13 @@ class Domain(db.Model): self.update() msg_str = 'Account changed for domain {0} successfully' current_app.logger.info(msg_str.format(domain_name)) + history = History(msg='Update domain {0} associate account {1}'.format(domain.name, 'none' if account_name == '' else account_name), + detail = json.dumps({ + 'assoc_account': 'None' if account_name == '' else account_name, + 'dissoc_account': 'None' if account_name_old == '' else account_name_old + }), + created_by=current_user.username) + history.add() return {'status': 'ok', 'msg': 'account changed successfully'} except Exception as e: diff --git a/powerdnsadmin/routes/admin.py b/powerdnsadmin/routes/admin.py index c8c9536..837e6d4 100644 --- a/powerdnsadmin/routes/admin.py +++ b/powerdnsadmin/routes/admin.py @@ -919,6 +919,16 @@ class DetailedHistory(): ''', history_status=DetailedHistory.get_key_val(detail_dict, 'status'), history_msg=DetailedHistory.get_key_val(detail_dict, 'msg')) + + elif 'Update domain' in history.msg and 'associate account' in history.msg: # When an account gets associated or dissociate with domains + self.detailed_msg = render_template_string(''' + + + +
Associate: {{ history_assoc_account }}
Dissociate:{{ history_dissoc_account }}
+ ''', + history_assoc_account=DetailedHistory.get_key_val(detail_dict, 'assoc_account'), + history_dissoc_account=DetailedHistory.get_key_val(detail_dict, 'dissoc_account')) # check for lower key as well for old databases @staticmethod