Preserve domain records history after domain deletion.

This commit is contained in:
Rauno Tuul 2023-02-13 12:08:03 +02:00
parent c5b9e24604
commit 7221271a7b
3 changed files with 15 additions and 5 deletions

View File

@ -548,11 +548,12 @@ class Domain(db.Model):
domain.apikeys[:] = [] domain.apikeys[:] = []
# Remove history for domain # Remove history for domain
domain_history = History.query.filter( if not Setting().get('preserve_history'):
History.domain_id == domain.id domain_history = History.query.filter(
) History.domain_id == domain.id
if domain_history: )
domain_history.delete() if domain_history:
domain_history.delete()
# then remove domain # then remove domain
Domain.query.filter(Domain.name == domain_name).delete() Domain.query.filter(Domain.name == domain_name).delete()

View File

@ -31,6 +31,7 @@ class Setting(db.Model):
'delete_sso_accounts': False, 'delete_sso_accounts': False,
'bg_domain_updates': False, 'bg_domain_updates': False,
'enable_api_rr_history': True, 'enable_api_rr_history': True,
'preserve_history': False,
'site_name': 'PowerDNS-Admin', 'site_name': 'PowerDNS-Admin',
'site_url': 'http://localhost:9191', 'site_url': 'http://localhost:9191',
'session_timeout': 10, 'session_timeout': 10,

View File

@ -927,6 +927,13 @@ def history():
'msg': 'You do not have permission to remove history.' 'msg': 'You do not have permission to remove history.'
}), 401) }), 401)
if Setting().get('preserve_history'):
return make_response(
jsonify({
'status': 'error',
'msg': 'History removal is not allowed (toggle preserve_history in settings).'
}), 401)
h = History() h = History()
result = h.remove_all() result = h.remove_all()
if result: if result:
@ -1282,6 +1289,7 @@ def setting_basic():
'otp_field_enabled', 'otp_field_enabled',
'otp_force', 'otp_force',
'pdns_api_timeout', 'pdns_api_timeout',
'preserve_history',
'pretty_ipv6_ptr', 'pretty_ipv6_ptr',
'record_helper', 'record_helper',
'record_quick_edit', 'record_quick_edit',