import uuid
import logging
from peewee import IntegrityError, CharField
from app import app
from data.database import BaseModel
logger = logging.getLogger(__name__)
ENUM_CLASSES_WITH_SEQUENCES = [
'TeamRole',
'LoginService',
'Visibility',
'Role',
'AccessTokenKind',
'BuildTriggerService',
'ImageStorageTransformation',
'ImageStorageSignatureKind',
'ImageStorageLocation',
'LogEntryKind',
'NotificationKind',
'ExternalNotificationEvent',
'ExternalNotificationMethod',
]
def reset_enum_sequences():
for class_name in ENUM_CLASSES_WITH_SEQUENCES:
reset_sequence(class_name)
def reset_sequence(class_name):
logger.info('Resetting sequence for table: %s', class_name.lower())
unique_name = '%s' % uuid.uuid4()
Model = type(class_name, (BaseModel,), {'name': CharField(index=True)})
for skips in xrange(50):
try:
Model.create(name=unique_name).delete_instance()
logger.info('Advanced sequence %s numbers', skips)
break
except IntegrityError:
pass
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
reset_enum_sequences()