Dooitze: vraag dat eens aan SWAT of Dennis, alleen zij kunnen zoiets doen.
Het zou ook kunnen als benjamins regelmatig de branch nakijkt voor updates en deze naar het testforum upload.
Ik heb trouwens een script geschreven dat alle categorieen en boards van dit forum in een lokale database zet, zodat testers deze niet meer zelf moeten aanmaken.
Moet misschien nog wat getest worden, maar hier werkt het prima. Enig nadeel is dat als ge een andere table prefix dan "smf_" hebt aangegeven tijdens de installatie van SMF, ge deze nog handmatig moet aanpassen in het script, daar heb ik nog geen optie voor gemaakt.
Gebruik: python script.py -u USER -p PASSWORD -d DATABASE -n HOST
#!/usr/bin/env python
# Copy the Ubuntu-NL categories and boards into your own SMF forum.
#
# Usage:
# $ script.py -u USER -p PASSWORD -d DATABASE -n HOST
# Example:
# $ script.py -u root -p Jc3re86NQ2 -d smf -n localhost
# Note that these values are for your MySQL database, not the forum.
# The host argument is optional and will be "localhost" as default.
#
# Created by Timo Vanwynsberghe
# 2010-09-06 - Initial release
#
# TODO: Let the user specify a different table prefix
import sys
import warnings
from optparse import OptionParser
try:
import MySQLdb
except ImportError:
sys.exit("Please install the python-mysqldb package first!")
# Disable MySQL warning about deprecated syntax
warnings.simplefilter("ignore")
# Data
CATEGORIES = ["Ondersteuning", "Interactief", "Teams"]
BOARDS = {"Ondersteuning": [("Installatie", "Heeft u hulp nodig bij de installatie van Ubuntu/Kubuntu zelf? Aarzel niet en vraag het hier!"),
("Software en configuratie", "Heeft u hulp nodig met de software en/of instellingen? Aarzel niet en vraag het hier!"),
("Hardware en drivers", "Hier kunt u hulp vinden bij het installeren van hardware en drivers."),
("Internet en draadloos", "Kijk hier o.a. voor oplossingen bij verbindingsproblemen."),
("Server en netwerk", "Voor al uw server- en netwerkvragen kunt u hier terecht."),
("Games", "Alles over games en spelletjes."),
("Programmeren", "Alles over het ontwikkelen van computerprogrammas en websites."),
("Foto-, video- en audiobewerking", "Foto-, video- en audiobewerkingsdiscussies en vragen."),
("Ubuntu-NL", "Wilt u meer weten over Ubuntu NL of meedoen? Kijk gauw!")],
"Interactief": [("Testforum", "Dit onderdeel is bedoeld om alpha, beta en RC-uitgaven met elkaar te testen en te bespreken."),
("Andere distributies ", "Voor hulp bij andere Linux-distributies."),
("Etalage", "Laat hier uw geweldige desktop, programmeertalent of bijdragen aan Ubuntu zien."),
("Offtopic", "Hou het netjes en doe gezellig! :)"),
("Aangeboden", ""),
("Gevraagd", "")],
"Teams": [("Forum", "Forumteam-communicatiekanaal, bedoeld voor forum-teamleden en/of community-leden (mits ontopic)."),
("Vertalingen", "Nederlandse taalfout gevonden? Geef het door en help op deze manier mee met het correct vertalen van Ubuntu/Kubuntu!"),
("Documentatie", "Ideeen/suggesties voor de Ubuntu-NL documentatie? Geef ze door of help zelf mee om de documentatie aan te vullen/te verbeteren!"),
("Artwork", "Artworkteam-communicatiekanaal, bedoeld voor Artwork-teamleden en/of community-leden (mits ontopic)."),
("Promotie", "Promotieteam-communicatiekanaal, bedoeld voor Promotie-teamleden en/of community-leden (mits ontopic).")]
}
# SQL
CATEGORY_CREATE = \
"""CREATE TABLE `smf_categories` (
id_cat tinyint(4) unsigned NOT NULL auto_increment,
cat_order tinyint(4) NOT NULL default 0,
name varchar(255) NOT NULL default '',
can_collapse tinyint(1) NOT NULL default 1,
PRIMARY KEY (id_cat)
) TYPE=MyISAM"""
CATEGORY_INSERT = \
"""INSERT INTO `smf_categories`
(`id_cat`, `cat_order`, `name`, `can_collapse`)
VALUES (%i, %i, '%s', 1)"""
BOARD_CREATE = \
"""CREATE TABLE `smf_boards` (
id_board smallint(5) unsigned NOT NULL auto_increment,
id_cat tinyint(4) unsigned NOT NULL default 0,
child_level tinyint(4) unsigned NOT NULL default 0,
id_parent smallint(5) unsigned NOT NULL default 0,
board_order smallint(5) NOT NULL default 0,
id_last_msg int(10) unsigned NOT NULL default 0,
id_msg_updated int(10) unsigned NOT NULL default 0,
member_groups varchar(255) NOT NULL default '-1,0',
id_profile smallint(5) unsigned NOT NULL default 1,
name varchar(255) NOT NULL default '',
description text NOT NULL,
num_topics mediumint(8) unsigned NOT NULL default 0,
num_posts mediumint(8) unsigned NOT NULL default 0,
count_posts tinyint(4) NOT NULL default 0,
id_theme tinyint(4) unsigned NOT NULL default 0,
override_theme tinyint(4) unsigned NOT NULL default 0,
unapproved_posts smallint(5) NOT NULL default 0,
unapproved_topics smallint(5) NOT NULL default 0,
redirect varchar(255) NOT NULL default '',
PRIMARY KEY (id_board),
UNIQUE categories (id_cat, id_board),
KEY id_parent (id_parent),
KEY id_msg_updated (id_msg_updated),
KEY member_groups (member_groups(48))
) TYPE=MyISAM"""
BOARD_INSERT = \
"""INSERT INTO `smf_boards`
(`id_board`, `id_cat`, `child_level`, `id_parent`, `board_order`, `id_last_msg`, `id_msg_updated`, `member_groups`, `id_profile`, `name`, `description`, `num_topics`, `num_posts`, `count_posts`, `id_theme`, `override_theme`, `unapproved_posts`, `unapproved_topics`, `redirect`)
VALUES (%i, %i, 0, 0, %i, 0, 0, '-1,0,2', 1, '%s', '%s', 0, 0, 0, 0, 0, 0, 0, '')"""
def create_categories(cursor):
cursor.execute("DROP TABLE IF EXISTS `smf_categories`")
cursor.execute(CATEGORY_CREATE)
for index, category in enumerate(CATEGORIES):
cursor.execute(CATEGORY_INSERT %(index+1, index, category))
def create_boards(cursor):
cursor.execute("DROP TABLE IF EXISTS `smf_boards`")
cursor.execute(BOARD_CREATE)
index = 1
for category, boards in BOARDS.items():
catindex = CATEGORIES.index(category)+1
for board, description in boards:
cursor.execute(BOARD_INSERT %(index, catindex, index, board, description))
index += 1
if __name__ == '__main__':
parser = OptionParser()
parser.add_option("-n", "--host", dest="host",
help="Hostname of your MySQL database",
metavar="HOST", default="localhost")
parser.add_option("-u", "--user", dest="user",
help="Username for connecting to the MySQL database",
metavar="USER")
parser.add_option("-p", "--password", dest="pw",
help="Password for connecting to the MySQL database",
metavar="PW")
parser.add_option("-d", "--database", dest="db",
help="Name of the database where your forum data is located",
metavar="DB")
(options, args) = parser.parse_args()
for value in options.__dict__.values():
if value is None:
parser.print_help()
sys.exit()
try:
conn = MySQLdb.connect(host=options.host, user=options.user, passwd=options.pw, db=options.db)
except MySQLdb.Error, e:
sys.exit("Error! %s" %e.args[1])
cursor = conn.cursor()
goforit = raw_input("If you continue, all current categories, boards, topics and messages will be deleted from you forum! Do you really want to continue? [Y/n]: ")
if goforit in ["Y", "y", "J", "j", ""]:
create_categories(cursor)
create_boards(cursor)
print "New data has been created, check your forum to see the result."
else:
print "Nothing has been done!"
cursor.close()
conn.close()