diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f16ae2be3..20a87769b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ##### v1.8.0 (Unreleased): -- No Changes +- Run `python manage.py fix_digit_identifier` to correct all digit identifiers ##### v1.7.0 (2019-10-19): diff --git a/app/models/event.py b/app/models/event.py index 50aa222658..d30e5bea32 100644 --- a/app/models/event.py +++ b/app/models/event.py @@ -28,8 +28,7 @@ def get_new_event_identifier(length=8): identifier = str(binascii.b2a_hex(os.urandom(int(length / 2))), 'utf-8') - count = get_count(Event.query.filter_by(identifier=identifier)) - if count == 0: + if not identifier.isdigit() and get_count(Event.query.filter_by(identifier=identifier)) == 0: return identifier else: return get_new_event_identifier(length) @@ -364,7 +363,7 @@ def get_average_rating(self): def is_payment_enabled(self): return self.can_pay_by_paypal or self.can_pay_by_stripe or self.can_pay_by_omise or self.can_pay_by_alipay \ - or self.can_pay_by_cheque or self.can_pay_by_bank or self.can_pay_onsite or self.can_pay_by_paytm + or self.can_pay_by_cheque or self.can_pay_by_bank or self.can_pay_onsite or self.can_pay_by_paytm @property def average_rating(self): @@ -455,7 +454,6 @@ def has_speakers(self): return Speaker.query.filter_by(event_id=self.id).count() > 0 - @event.listens_for(Event, 'after_update') @event.listens_for(Event, 'after_insert') def receive_init(mapper, connection, target): diff --git a/manage.py b/manage.py index e431e91b84..9593e05e23 100644 --- a/manage.py +++ b/manage.py @@ -37,6 +37,15 @@ def add_event_identifier(): save_to_db(event) +@manager.command +def fix_digit_identifier(): + events = Event.query.filter(Event.identifier.op('~')('^[0-9\.]+$')).all() + for event in events: + event.identifier = get_new_event_identifier() + db.session.add(event) + db.session.commit() + + @manager.option('-n', '--name', dest='name', default='all') @manager.option('-s', '--switch', dest='switch', default='off') def module(name, switch):