X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/1a949f7c97dc2f34c135f5cdf088df2927d3d652..0054ee58f31791696063ce7a0b89edddb82fd1ed:/forum/management/__init__.py?ds=inline diff --git a/forum/management/__init__.py b/forum/management/__init__.py index 49ad8d5..629678e 100644 --- a/forum/management/__init__.py +++ b/forum/management/__init__.py @@ -1,13 +1,42 @@ from forum.modules import get_modules_script + +get_modules_script('management') + from django.db.models.signals import post_syncdb import forum.models -def setup_badges(sender, **kwargs): - from forum.badges import ALL_BADGES +def post_syncdb_callback(sender, **kwargs): + # Import the needed libraries to use the database and detect the + # DB engine/sever type being currently employed. + from django.db import connection, connections + + verbosity = int(kwargs["verbosity"]) + + # Get the DB engine being used for persistence for this app. + current_db_engine = connections.databases[connection.alias]['ENGINE'] + + # Make sure the updates are only executed for a MySQL DB. + if current_db_engine.find("mysql") > 0: + # Ok, mysql was found in the engine description. Go ahead + # and attempt to execute the alter table statements. + cursor = connection.cursor() + + # Pair the table names with the columns that need to be updated. + updatable_table_columns = { + "forum_tag": "name", + "auth_user": "username" + } - for badge in ALL_BADGES: - badge.install() + # Update each column in turn. + for table_name, column_name in updatable_table_columns.iteritems(): + alter_table_statement = "ALTER TABLE %(table_name)s MODIFY %(column_name)s varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL;" % { + "table_name": table_name, "column_name": column_name} + log_status(verbosity,"Updating MySQL column with this statement: " + alter_table_statement) + cursor.execute(alter_table_statement) -post_syncdb.connect(setup_badges, sender=forum.models) +def log_status(verbosity, message): + if verbosity == 2: + print "[DEBUG] " + str(message) -get_modules_script('management') \ No newline at end of file +# Link the callback to the post_syncdb signal. +post_syncdb.connect(post_syncdb_callback, sender=forum.models)