3 from csc.apps.urwid.widgets import *
4 from csc.apps.urwid.window import *
6 from csc.adm import members, terms
8 class IntroPage(WizardPanel):
9 def init_widgets(self):
11 urwid.Text( "Renewing Membership" ),
13 urwid.Text( "CSC membership is $2.00 per term. You may pre-register "
14 "for future terms if desired." )
19 class UserPage(WizardPanel):
20 def init_widgets(self):
21 self.userid = WordEdit("Username: ")
24 urwid.Text( "Member Information" ),
29 self.state['userid'] = self.userid.get_edit_text()
30 self.state['member'] = None
31 if self.state['userid']:
32 if not members.connected(): members.connect()
33 self.state['member'] = members.get(self.userid.get_edit_text())
34 if not self.state['member']:
35 set_status("Member not found")
36 self.focus_widget(self.userid)
39 class TermPage(WizardPanel):
40 def init_widgets(self):
41 self.start = SingleEdit("Start: ")
42 self.count = SingleIntEdit("Count: ")
45 urwid.Text( "Terms to Register" ),
51 if not self.start.get_edit_text():
53 if 'term' in self.state['member']:
54 old_terms = self.state['member']['term']
55 self.start.set_edit_text( terms.next_unregistered( old_terms ) )
56 self.count.set_edit_text( "1" )
59 self.state['terms'] = terms.interval( self.start.get_edit_text(), self.count.value() )
61 self.focus_widget( self.start )
62 set_status( "Invalid start term" )
64 for term in self.state['terms']:
65 if members.registered( self.state['userid'], term):
66 self.focus_widget( self.start )
67 set_status( "Already registered for " + term )
69 if len(self.state['terms']) == 0:
70 self.focus_widget(self.count)
71 set_status( "Registering for zero terms?" )
74 class PayPage(WizardPanel):
75 def init_widgets(self):
76 self.midtext = urwid.Text("")
79 urwid.Text("Membership Fee"),
86 regterms = self.state['terms']
88 if len(self.state['terms']) > 1:
90 self.midtext.set_text("You are registering for %d %s, and owe the "
91 "Computer Science Club $%d.00 in membership fees. "
92 "Please deposit the money in the safe before "
93 "continuing. " % ( len(regterms), plural, len(regterms * 2)))
95 class EndPage(WizardPanel):
96 def init_widgets(self):
97 self.headtext = urwid.Text("")
98 self.midtext = urwid.Text("")
109 members.register( self.state['userid'], self.state['terms'] )
110 self.headtext.set_text("Registration Succeeded")
111 self.midtext.set_text("The member has been registered for the following "
112 "terms: " + ", ".join(self.state['terms']) + ".")
114 self.headtext.set_text("Failed to Register")
115 self.midtext.set_text("You may refund any fees paid or retry."
116 "The error was: '%s'" % e)