This commit is contained in:
parent
f9fd39d83b
commit
0aeba866bc
3 changed files with 148 additions and 46 deletions
|
@ -12,11 +12,11 @@ class DataBase:
|
|||
user="szene", \
|
||||
passwd="szene", \
|
||||
use_unicode=1)
|
||||
print "Verbindung zur DB steht"
|
||||
print "Connection to databse established"
|
||||
|
||||
def close (self):
|
||||
self.db.close()
|
||||
print "Verbindung getrennt"
|
||||
print "Connection to database detached"
|
||||
|
||||
def get_latest_uid_category(self, type):
|
||||
c = self.db.cursor()
|
||||
|
@ -40,21 +40,64 @@ class DataBase:
|
|||
print "latest uid for %s is: %i" % (type, j)
|
||||
return j
|
||||
|
||||
def prepare_new_month(self, month):
|
||||
#TODO Monatsvorlage rekursiv kopieren
|
||||
# IDs der Kategorien aus config
|
||||
next_month = str(month)
|
||||
parentid = str(34)
|
||||
def create_rubrik(self, rubrik, parentid, new_month):
|
||||
latest_month_id = ("SELECT `uid` FROM `pages` WHERE `title` = '" + new_month + "' AND `pid` = '""" + parentid + "'")
|
||||
self.db.query(latest_month_id)
|
||||
monthid = self.db.store_result().fetch_row()[0][0]
|
||||
#print "%s %s %s" % (rubrik, parentid, new_month)
|
||||
#print monthid
|
||||
#monthid = monthid[0][0]
|
||||
get_rubrik_id = ("""SELECT `uid` FROM `pages` WHERE `title` = '"""+ rubrik + """' AND `pid` = '""" + str(monthid) + """' LIMIT 1""")
|
||||
self.db.query(get_rubrik_id)
|
||||
rubrik_id = self.db.store_result().fetch_row()
|
||||
## create dir for the rubrik if it doesn't exist yet
|
||||
if not rubrik_id:
|
||||
sqlqueue = " \
|
||||
INSERT INTO `pages` (`pid`,`title`,`doktype`,`urltype`,`tx_rgmenu_special`,`sorting`,`cruser_id`) \
|
||||
VALUES ("\
|
||||
+ "'" + str(monthid) + "', " \
|
||||
+ "'" + str(rubrik) + \
|
||||
"', '254','1','5','8','1');"
|
||||
self.db.query(sqlqueue)
|
||||
print "Created rubrik %s under monthid %s pid %s" % (rubrik, parentid, monthid)
|
||||
#print sqlqueue
|
||||
get_rubrik_id = ("""SELECT `uid` FROM `pages` WHERE `title` = '"""+ rubrik + """' AND `pid` = '""" + str(monthid) + """' LIMIT 1""")
|
||||
self.db.query(get_rubrik_id)
|
||||
rubrik_id = self.db.store_result().fetch_row()[0][0]
|
||||
if not rubrik_id:
|
||||
print "Couldn't create rubrik %s" % rubrik
|
||||
sys.exit()
|
||||
return rubrik_id
|
||||
|
||||
def prepare_new_month(self, parentid, month):
|
||||
'''create a new folder in typo3 under the given parentid
|
||||
'''
|
||||
new_month = str(month)
|
||||
#parentid = str(34)
|
||||
doktype = str(254)
|
||||
perms_user = str(31)
|
||||
perms_group = str(27)
|
||||
hidden = str(1)
|
||||
tx_rgmenu_special = str(5)
|
||||
tstamp = str(int(mktime(datetime.now().timetuple())))
|
||||
## delete entries with same parent id and month to avoid duplicates
|
||||
#latest_month_id = ("DELETE FROM `pages` WHERE `title` = '" + new_month + "' AND `pid` = '" + parentid + "'")
|
||||
## better don't delete, just inform
|
||||
latest_month_id = ("""SELECT `uid` FROM `pages` WHERE `title` = '"""+ new_month + """' AND `pid` = '""" + parentid + """' LIMIT 1""")
|
||||
self.db.query(latest_month_id)
|
||||
monthid = self.db.store_result().fetch_row()
|
||||
self.monthid = monthid
|
||||
if monthid:
|
||||
print "Caution, the month >%s< alread exists in this dir >%s< !" % (new_month, parentid)
|
||||
print "It's ID is >%s<. I'm cowardly stopping now." % monthid[0][0]
|
||||
print "Rename or delete it manually to go on with this action."
|
||||
return
|
||||
|
||||
## insert new month (as typo3 folder)
|
||||
sqlqueue="INSERT INTO `pages` (`pid`, `title`, `doktype`, `tstamp`, `perms_user`, `perms_group`, `hidden`, `tx_rgmenu_special`) \
|
||||
VALUES (" \
|
||||
+ "'" + parentid + "', " \
|
||||
+ "'" + next_month + "', " \
|
||||
+ "'" + new_month + "', " \
|
||||
+ "'" + doktype + "', " \
|
||||
+ "'" + tstamp + "', " \
|
||||
+ "'" + perms_user + "', " \
|
||||
|
@ -62,18 +105,62 @@ class DataBase:
|
|||
+ "'" + hidden + "', " \
|
||||
+ "'" + tx_rgmenu_special \
|
||||
+ "');"
|
||||
print sqlqueue
|
||||
#print sqlqueue
|
||||
c = self.db.cursor()
|
||||
c.execute(sqlqueue)
|
||||
|
||||
## neues Verz fuer Kategorie anlegen
|
||||
#INSERT INTO 'pages' ('pid','title','doktype','urltype','tx_rgmenu_special','sorting','cruser_id') VALUES ('89','Ballermann','254','1','5','8''1');
|
||||
## get uid of newly created month, there should be exactly one
|
||||
latest_month_id = ("SELECT `uid` FROM `pages` WHERE `title` = '" + new_month + "' AND `pid` = '""" + parentid + "'")
|
||||
self.db.query(latest_month_id)
|
||||
monthid = self.db.store_result().fetch_row()[0][0]
|
||||
print "The new month has the ID >%s<" % monthid
|
||||
|
||||
def prepare_event(self, event_dic, month, day):
|
||||
'''
|
||||
## create categories
|
||||
for title in categories:
|
||||
sqlqueue = " \
|
||||
INSERT INTO `pages` (`pid`,`title`,`doktype`,`urltype`,`tx_rgmenu_special`,`sorting`,`cruser_id`) \
|
||||
VALUES ("\
|
||||
+ "'" + str(monthid) + "', " \
|
||||
+ "'" + title + \
|
||||
"', '254','1','5','8','1');"
|
||||
c.execute(sqlqueue)
|
||||
print sqlqueue
|
||||
'''
|
||||
|
||||
def delete_month_entries(self, monthid):
|
||||
'''create a new folder in typo3 under the given parentid
|
||||
'''
|
||||
c = self.db.cursor()
|
||||
rubrik_query = ("""SELECT `uid` FROM `pages` WHERE `pid` = """ + monthid )
|
||||
c.execute(rubrik_query)
|
||||
rubrik_ids = c.fetchall()
|
||||
print rubrik_ids
|
||||
for r_id in rubrik_ids:
|
||||
self.delete_event_in_rubrik(r_id)
|
||||
|
||||
def delete_event_in_rubrik(self, rubrikid):
|
||||
print rubrikid[0]
|
||||
rubrikid = str(rubrikid[0])
|
||||
#delete_query = ("""SELECT `uid` FROM `tx_skcalendar_event` WHERE `pid` = """ + rubrikid )
|
||||
delete_query = ("""DELETE FROM `tx_skcalendar_event` WHERE `pid` = """ + rubrikid )
|
||||
c = self.db.cursor()
|
||||
c.execute(delete_query)
|
||||
#rubrik_ids = c.fetchall()
|
||||
#print rubrik_ids
|
||||
|
||||
def prepare_event(self, event_dic, month, day, parentid, rubrikid):
|
||||
'''hiermit wird eine neue Veranstaltung in passender Form
|
||||
fuer die VCE Extension vorbereitet'''
|
||||
event_pid = "29"
|
||||
event_title = event_dic["WAS_XML"]
|
||||
## event_pid is the uid of the current rubrik
|
||||
event_pid = rubrikid
|
||||
if int(event_pid) <= int(parentid):
|
||||
print "Event ID is smaller than parent ID."
|
||||
print "%s <= %s" % (event_pid, parentid)
|
||||
print "This should not happen, so I stop processing here."
|
||||
sys.exit()
|
||||
event_title = "<p class=\"uhrzeit\">%s</p><p class=\"titel\">%s</p><p class=\"veranst\">%s</p>" \
|
||||
% (event_dic["WANN_START_XML"], event_dic["WAS_XML"], event_dic["WO_XML"])
|
||||
event_description = event_dic["INFORMATION"]
|
||||
event_startdate = self.calc_correct_day(month, day)
|
||||
event_targetgroup = "5"
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
[month]
|
||||
## welcher Monat soll eingepflegt werden (als Zahl)
|
||||
number = 5
|
||||
## Typo3 ID des Monatsverzeichnisses
|
||||
pid = 89
|
||||
number = 8
|
||||
|
||||
[organizer]
|
||||
pid = 1
|
||||
|
@ -15,16 +13,10 @@ pid = 1
|
|||
|
||||
######################################################################
|
||||
## ab hier nichts aendern, es sei denn der XML Export wurde veraendert
|
||||
[xmltags]
|
||||
tags = "INFORMATION", "WANN_START_XML", "WANN_ENDE", "WO_XML", "WAS_XML", "RUBRIK_XML", "SONSTIGES"
|
||||
[static]
|
||||
## Typo3 ID des Kalenderverz. (Hauptverzeichnis)
|
||||
pid = 34
|
||||
|
||||
## Namen der XML Tags
|
||||
xmltags = "INFORMATION", "WANN_START_XML", "WANN_ENDE", "WO_XML", "WAS_XML", "RUBRIK_XML", "SONSTIGES"
|
||||
|
||||
[category]
|
||||
pid = 58
|
||||
Live = 67
|
||||
Sonstiges = 66
|
||||
Lesungen = 65
|
||||
Bar = 64
|
||||
Sport = 63
|
||||
Familie = 61
|
||||
Party = 60
|
||||
Kino = 59
|
||||
|
|
|
@ -9,10 +9,14 @@ import os, mysql_connect, configobj
|
|||
def main():
|
||||
usage = "usage: %prog [options]"
|
||||
parser = OptionParser(usage)
|
||||
parser.add_option("-f", "--file", dest="filename",
|
||||
help="read xml data from FILENAME")
|
||||
parser.add_option("--insert-xml", dest="filename",
|
||||
help="read events from xml FILENAME")
|
||||
parser.add_option("-c", "--config", dest="configfile",
|
||||
help="read DB config from FILENAME")
|
||||
parser.add_option("--add-month", dest="newmonth", default=False, action="store_true",
|
||||
help="create new template for a month")
|
||||
parser.add_option("--delete-events", dest="delevents",
|
||||
help="delete alle events under a month ID")
|
||||
parser.add_option("-v", "--verbose", dest="verbose",
|
||||
help="change Loglevel (0-3)")
|
||||
(options, args) = parser.parse_args()
|
||||
|
@ -27,15 +31,31 @@ def main():
|
|||
else:
|
||||
print parser.print_help()
|
||||
return
|
||||
|
||||
if options.filename:
|
||||
print "reading XML file: %s " % options.filename
|
||||
if not os.access(options.filename, os.R_OK) or not os.path.isfile(options.filename):
|
||||
print "Error: could not read configuration file (%s)\n" % options.filename
|
||||
return
|
||||
else:
|
||||
print parser.print_help()
|
||||
#else:
|
||||
#print parser.print_help()
|
||||
#return
|
||||
|
||||
if options.newmonth:
|
||||
create_new_month(prefs["static"]["pid"], prefs["month"]["number"])
|
||||
return
|
||||
|
||||
if options.delevents:
|
||||
test = mysql_connect.DataBase()
|
||||
test.connect()
|
||||
test.delete_month_entries(options.delevents)
|
||||
test.close()
|
||||
return
|
||||
|
||||
#if not options.filename or not options.newmonth:
|
||||
#print parser.print_help()
|
||||
#return
|
||||
|
||||
loglevel = 0
|
||||
if options.verbose: loglevel = int(options.verbose)
|
||||
|
||||
|
@ -43,13 +63,9 @@ def main():
|
|||
|
||||
dic = readXML(options.filename)
|
||||
|
||||
if "xmltags" in prefs.keys() :
|
||||
xmltags = prefs["xmltags"]["tags"]
|
||||
xmltags = prefs["static"]["xmltags"]
|
||||
if loglevel >= 2: print xmltags
|
||||
else:
|
||||
print "Warning: using hardcoded XML structure.. "
|
||||
xmltags = ["INFORMATION", "WANN_START_XML", "WANN_ENDE", "WO_XML", "WAS_XML", "RUBRIK_XML", "SONSTIGES"]
|
||||
print
|
||||
|
||||
if loglevel >= 1: print "XML Quelle: ", dic["FMPDSORESULT"]["DATABASE"]
|
||||
#print "Data 0", dic["FMPDSORESULT"]["ROW"][0]
|
||||
#print "Data 1", dic["FMPDSORESULT"]["ROW"][1]
|
||||
|
@ -57,7 +73,9 @@ def main():
|
|||
month = prefs["month"]["number"]
|
||||
days = 0
|
||||
data = []
|
||||
rubrikid = prefs["static"]["pid"]
|
||||
test = mysql_connect.DataBase()
|
||||
test.connect()
|
||||
|
||||
for item in dic["FMPDSORESULT"]["ROW"]:
|
||||
entry += 1
|
||||
|
@ -68,7 +86,9 @@ def main():
|
|||
#f = open(filename,mode="a")
|
||||
#f.write(text)
|
||||
#print text
|
||||
data.append(test.prepare_event(item, month, days))
|
||||
if len(item["RUBRIK_XML"]) > 1:
|
||||
rubrikid = test.create_rubrik(item["RUBRIK_XML"], prefs["static"]["pid"], month)
|
||||
data.append(test.prepare_event(item, month, days, prefs["static"]["pid"], rubrikid))
|
||||
'''
|
||||
for content in xmltags:
|
||||
text = ("%s: %s") % (content, item[content])
|
||||
|
@ -85,10 +105,8 @@ def main():
|
|||
print "Es gibt %i Eintraege in der xml Datei aber nur %i wurden durchlaufen" % (entries, entry)
|
||||
|
||||
## finally put the mess into mysql db
|
||||
test.connect()
|
||||
print "Datenbank fuellen.."
|
||||
#test.prepare_new_month("Mai")
|
||||
#test.insert_event(data)
|
||||
test.insert_event(data)
|
||||
test.close()
|
||||
|
||||
|
||||
|
@ -167,8 +185,6 @@ def readXML(filename):
|
|||
return nodeToDic(dom)
|
||||
|
||||
def get_preferences(config_file):
|
||||
"""Load the CryptoBox configuration.
|
||||
"""
|
||||
import StringIO
|
||||
try:
|
||||
prefs = configobj.ConfigObj(config_file)
|
||||
|
@ -183,6 +199,13 @@ def get_preferences(config_file):
|
|||
raise CBConfigError("failed to load config file (%s): %s" % (config_file, err_msg))
|
||||
return prefs
|
||||
|
||||
def create_new_month(parentid, month):
|
||||
print "Creating new monthly template.."
|
||||
db = mysql_connect.DataBase()
|
||||
db.connect()
|
||||
db.prepare_new_month(parentid, month)
|
||||
db.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
Loading…
Reference in a new issue