2008-06-09 23:45:01 -04:00
|
|
|
import urwid
|
2009-09-09 17:37:35 -04:00
|
|
|
from ceo import members, mysql
|
2008-06-09 23:45:01 -04:00
|
|
|
from ceo.urwid import search
|
|
|
|
from ceo.urwid.widgets import *
|
|
|
|
from ceo.urwid.window import *
|
|
|
|
|
2009-09-09 17:37:35 -04:00
|
|
|
class IntroPage(WizardPanel):
|
|
|
|
def init_widgets(self):
|
|
|
|
self.widgets = [
|
|
|
|
urwid.Text("MySQL databases"),
|
|
|
|
urwid.Divider(),
|
|
|
|
urwid.Text("Members and hosted clubs may have one MySQL database each. You may "
|
|
|
|
"create a database for an account if: \n"
|
|
|
|
"\n"
|
|
|
|
"- It is your personal account,\n"
|
|
|
|
"- It is a club account, and you are in the club group, or\n"
|
|
|
|
"- You are on the CSC systems committee\n"
|
|
|
|
"\n"
|
|
|
|
"You may also use this to reset your database password."
|
|
|
|
)
|
|
|
|
]
|
|
|
|
def focusable(self):
|
|
|
|
return False
|
2008-06-09 23:45:01 -04:00
|
|
|
|
2009-09-09 17:37:35 -04:00
|
|
|
class UserPage(WizardPanel):
|
|
|
|
def init_widgets(self):
|
|
|
|
self.userid = LdapWordEdit(csclub_uri, csclub_base, 'uid',
|
|
|
|
"Username: ")
|
|
|
|
|
|
|
|
self.widgets = [
|
|
|
|
urwid.Text("Member Information"),
|
|
|
|
urwid.Divider(),
|
|
|
|
urwid.Text("Enter the user which will own the new database."),
|
|
|
|
urwid.Divider(),
|
|
|
|
self.userid,
|
|
|
|
]
|
|
|
|
def check(self):
|
|
|
|
self.state['userid'] = self.userid.get_edit_text()
|
|
|
|
self.state['member'] = None
|
|
|
|
if self.state['userid']:
|
|
|
|
self.state['member'] = members.get(self.userid.get_edit_text())
|
|
|
|
if not self.state['member']:
|
|
|
|
set_status("Member not found")
|
|
|
|
self.focus_widget(self.userid)
|
|
|
|
return True
|
|
|
|
|
|
|
|
class EndPage(WizardPanel):
|
|
|
|
def init_widgets(self):
|
|
|
|
self.headtext = urwid.Text("")
|
|
|
|
self.midtext = urwid.Text("")
|
|
|
|
|
|
|
|
self.widgets = [
|
|
|
|
self.headtext,
|
|
|
|
urwid.Divider(),
|
|
|
|
self.midtext,
|
|
|
|
]
|
|
|
|
def focusable(self):
|
|
|
|
return False
|
|
|
|
def activate(self):
|
|
|
|
problem = None
|
|
|
|
try:
|
|
|
|
password = mysql.create_mysql(self.state['userid'])
|
2009-09-10 15:37:41 -04:00
|
|
|
|
|
|
|
try:
|
|
|
|
mysql.write_mysql_info(self.state['userid'], password)
|
|
|
|
helpfiletext = "Settings written to ~%s/ceo-mysql-info." % self.state['userid']
|
|
|
|
except (KeyError, IOError, OSError), e:
|
|
|
|
helpfiletext = "An error occured writing the settings file: %s" % e
|
2009-09-09 17:37:35 -04:00
|
|
|
self.headtext.set_text("MySQL database created")
|
|
|
|
self.midtext.set_text("Connection Information: \n"
|
|
|
|
"\n"
|
|
|
|
"Database: %s\n"
|
|
|
|
"Username: %s\n"
|
|
|
|
"Hostname: localhost\n"
|
|
|
|
"Password: %s\n"
|
|
|
|
"\n"
|
2009-09-10 15:37:41 -04:00
|
|
|
"%s\n"
|
|
|
|
% (self.state['userid'], self.state['userid'], password, helpfiletext))
|
2009-09-09 17:37:35 -04:00
|
|
|
except mysql.MySQLException, e:
|
|
|
|
self.headtext.set_text("Failed to create MySQL database")
|
|
|
|
self.midtext.set_text("We failed to create the database. The error was:\n\n%s" % e)
|
|
|
|
|
|
|
|
def check(self):
|
|
|
|
pop_window()
|