45 lines
1.5 KiB
Python
45 lines
1.5 KiB
Python
"""Remove duplicates from certificate_notification_associations.
|
|
|
|
Revision ID: 5770674184de
|
|
Revises: ce547319f7be
|
|
Create Date: 2018-02-23 15:27:30.335435
|
|
|
|
"""
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = '5770674184de'
|
|
down_revision = 'ce547319f7be'
|
|
|
|
from flask_sqlalchemy import SQLAlchemy
|
|
from lemur.models import certificate_notification_associations
|
|
|
|
db = SQLAlchemy()
|
|
session = db.session()
|
|
|
|
|
|
def upgrade():
|
|
print("Querying for all entries in certificate_notification_associations.")
|
|
# Query for all entries in table
|
|
results = session.query(certificate_notification_associations).with_entities(
|
|
certificate_notification_associations.c.certificate_id,
|
|
certificate_notification_associations.c.notification_id,
|
|
certificate_notification_associations.c.id,
|
|
)
|
|
|
|
seen = {}
|
|
# Iterate through all entries and mark as seen for each certificate_id and notification_id pair
|
|
for x in results:
|
|
# If we've seen a pair already, delete the duplicates
|
|
if seen.get("{}-{}".format(x.certificate_id, x.notification_id)):
|
|
print("Deleting duplicate: {}".format(x))
|
|
d = session.query(certificate_notification_associations).filter(certificate_notification_associations.c.id==x.id)
|
|
d.delete(synchronize_session=False)
|
|
seen["{}-{}".format(x.certificate_id, x.notification_id)] = True
|
|
db.session.commit()
|
|
db.session.flush()
|
|
|
|
|
|
def downgrade():
|
|
# No way to downgrade this
|
|
pass
|