Add the adjustment from @CaptainQwark in PR #49

This commit is contained in:
Khanh Ngo 2016-06-16 10:31:36 +07:00
parent a14ccec39e
commit af7402096e

View File

@ -434,6 +434,7 @@ class Domain(db.Model):
""" """
db_domain = Domain.query.all() db_domain = Domain.query.all()
list_db_domain = [d.name for d in db_domain] list_db_domain = [d.name for d in db_domain]
dict_db_domain = dict((x.name,x) for x in db_domain)
headers = {} headers = {}
headers['X-API-Key'] = PDNS_API_KEY headers['X-API-Key'] = PDNS_API_KEY
@ -461,15 +462,25 @@ class Domain(db.Model):
# update/add new domain # update/add new domain
for data in jdata: for data in jdata:
d = Domain.query.filter(Domain.name == data['name']).first() d = dict_db_domain.get(data['name'].rstrip('.'), None)
changed = False
if d: if d:
#update exist domain # existing domain, only update if something actually has changed
d.master = str(data['masters']) if ( d.master != str(data['masters'])
d.type = data['kind'] or d.type != data['kind']
d.serial = data['serial'] or d.serial != data['serial']
d.notified_serial = data['notified_serial'] or d.notified_serial != data['notified_serial']
d.last_check = 1 if data['last_check'] else 0 or d.last_check != ( 1 if data['last_check'] else 0 )
d.dnssec = data['dnssec'] or d.dnssec != data['dnssec'] ):
d.master = str(data['masters'])
d.type = data['kind']
d.serial = data['serial']
d.notified_serial = data['notified_serial']
d.last_check = 1 if data['last_check'] else 0
d.dnssec = data['dnssec']
changed = True
else: else:
# add new domain # add new domain
d = Domain() d = Domain()
@ -481,10 +492,12 @@ class Domain(db.Model):
d.last_check = data['last_check'] d.last_check = data['last_check']
d.dnssec = 1 if data['dnssec'] else 0 d.dnssec = 1 if data['dnssec'] else 0
db.session.add(d) db.session.add(d)
try: changed = True
db.session.commit() if changed:
except: try:
db.session.rollback() db.session.commit()
except:
db.session.rollback()
return {'status': 'ok', 'msg': 'Domain table has been updated successfully'} return {'status': 'ok', 'msg': 'Domain table has been updated successfully'}
except Exception, e: except Exception, e:
logging.error('Can not update domain table.' + str(e)) logging.error('Can not update domain table.' + str(e))