From 999f7e420471b2a2f34d25764016dafa85f901f5 Mon Sep 17 00:00:00 2001 From: Divy Date: Tue, 4 Aug 2020 00:16:11 +0530 Subject: [PATCH] refactor: Deduplicate get_new_identifier --- app/api/helpers/db.py | 9 +++++++++ app/api/helpers/scheduled_jobs.py | 2 +- app/models/event_invoice.py | 14 ++++---------- app/models/order.py | 14 ++++---------- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/api/helpers/db.py b/app/api/helpers/db.py index 58fd05138b..3c183f8e57 100644 --- a/app/api/helpers/db.py +++ b/app/api/helpers/db.py @@ -142,3 +142,12 @@ def get_new_slug(model, name): return slug else: return '{}-{}'.format(slug, uuid.uuid4().hex) + + +def get_new_identifier(model): + identifier = str(uuid.uuid4()) + count = get_count(model.query.filter_by(identifier=identifier)) + if count == 0: + return identifier + else: + return get_new_identifier(model) diff --git a/app/api/helpers/scheduled_jobs.py b/app/api/helpers/scheduled_jobs.py index 7915bc725c..7bf121de91 100644 --- a/app/api/helpers/scheduled_jobs.py +++ b/app/api/helpers/scheduled_jobs.py @@ -21,7 +21,7 @@ ) from app.api.helpers.query import get_user_event_roles_by_role_name from app.api.helpers.storage import UPLOAD_PATHS -from app.api.helpers.utilities import monthdelta, make_dict +from app.api.helpers.utilities import make_dict, monthdelta from app.instance import celery from app.models import db from app.models.event import Event diff --git a/app/models/event_invoice.py b/app/models/event_invoice.py index e5a3ec71c8..652e0bb2c1 100644 --- a/app/models/event_invoice.py +++ b/app/models/event_invoice.py @@ -1,20 +1,14 @@ import time -import uuid from sqlalchemy.sql import func -from app.api.helpers.db import get_count +from app.api.helpers.db import get_new_identifier from app.models import db from app.models.base import SoftDeletionModel -def get_new_identifier(): - identifier = str(uuid.uuid4()) - count = get_count(EventInvoice.query.filter_by(identifier=identifier)) - if count == 0: - return identifier - else: - return get_new_identifier() +def get_new_id(): + return get_new_identifier(EventInvoice) class EventInvoice(SoftDeletionModel): @@ -25,7 +19,7 @@ class EventInvoice(SoftDeletionModel): __tablename__ = 'event_invoices' id = db.Column(db.Integer, primary_key=True) - identifier = db.Column(db.String, unique=True, default=get_new_identifier) + identifier = db.Column(db.String, unique=True, default=get_new_id) amount = db.Column(db.Float) address = db.Column(db.String) city = db.Column(db.String) diff --git a/app/models/order.py b/app/models/order.py index 8e4b5b54e9..8353b7a35a 100644 --- a/app/models/order.py +++ b/app/models/order.py @@ -1,20 +1,14 @@ import time -import uuid from sqlalchemy.sql import func -from app.api.helpers.db import get_count +from app.api.helpers.db import get_new_identifier from app.models import db from app.models.base import SoftDeletionModel -def get_new_order_identifier(): - identifier = str(uuid.uuid4()) - count = get_count(Order.query.filter_by(identifier=identifier)) - if count == 0: - return identifier - else: - return get_new_order_identifier() +def get_new_id(): + return get_new_identifier(Order) def get_updatable_fields(): @@ -54,7 +48,7 @@ class Order(SoftDeletionModel): __tablename__ = "orders" id = db.Column(db.Integer, primary_key=True) - identifier = db.Column(db.String, unique=True, default=get_new_order_identifier) + identifier = db.Column(db.String, unique=True, default=get_new_id) amount = db.Column(db.Float, nullable=False, default=0) address = db.Column(db.String) city = db.Column(db.String)