1 from PyQt4.QtCore import *
2 from PyQt4.QtGui import *
4 from ldapsearcher import LDAPSearcher
6 class PageNewUserData(QWizardPage):
7 def __init__(self, parent=None):
8 """Set up lots of input fields."""
9 QWizardPage.__init__(self,parent)
10 self.setCommitPage(True)
11 self.setButtonText(QWizard.CommitButton, "Next")
12 # Create all the subwidgets
13 self.year_lab = QLabel("Year:")
14 self.month_lab = QLabel("Month:")
15 self.day_lab = QLabel("Day:")
16 self.forename_lab = QLabel("Preferred name:")
17 self.surname_lab = QLabel("Last name:")
18 self.email_lab = QLabel("Email:")
19 self.phone_lab = QLabel("Phone:")
20 self.major_lab = QLabel("Major:")
21 self.hometown_lab = QLabel("Hometown:")
22 self.room_lab = QLabel("Room number:")
23 self.bday_lab = QLabel("Birthday:")
24 self.dorm_lab = QLabel("Hall:")
26 self.surname = QLineEdit()
27 self.forename = QLineEdit()
28 self.phone = QLineEdit()
29 self.email = QLineEdit()
30 self.major = QLineEdit()
32 self.year = QComboBox()
33 self.month = QComboBox()
34 self.day = QComboBox()
36 self.dorm = QComboBox()
37 self.room = QLineEdit()
38 # Fill the comboboxes with values, set valid field types
39 years = QStringList(["1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994"])
40 months = QStringList(["January","February","March","April","May","June","July","August","September","October","November","December"])
41 days = QStringList(["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"])
42 dorms = QStringList(["","Clements","Lechner","McFadden"])
43 self.year.addItems(years)
44 self.month.addItems(months)
45 self.day.addItems(days)
46 self.year.setCurrentIndex(6) # Start in 1988 or so
47 self.dorm.addItems(dorms)
48 self.phone.setInputMask("(999)-999-9999")
49 self.major.setMaxLength(4)
50 self.room.setMaxLength(3)
52 # Register fields with QWizard
53 self.registerField("surname*", self.surname)
54 self.registerField("forename*", self.forename)
55 self.registerField("phone", self.phone)
56 self.registerField("email*", self.email)
57 self.registerField("major", self.major)
58 self.registerField("dorm*", self.dorm)
59 self.registerField("room*", self.room)
60 self.registerField("year", self.year)
61 self.registerField("month", self.month)
62 self.registerField("day", self.day)
66 self.layout = QGridLayout()
67 self.bday_layout = QHBoxLayout()
68 self.bday_layout.addWidget(self.year)
69 self.bday_layout.addWidget(self.month)
70 self.bday_layout.addWidget(self.day)
71 self.layout.addWidget(self.forename_lab, 1, 0)
72 self.layout.addWidget(self.forename, 1, 1)
73 self.layout.addWidget(self.surname_lab, 2, 0)
74 self.layout.addWidget(self.surname, 2, 1)
75 self.layout.addWidget(self.email_lab, 3, 0)
76 self.layout.addWidget(self.email, 3, 1)
77 self.layout.addWidget(self.phone_lab, 4, 0)
78 self.layout.addWidget(self.phone, 4, 1)
79 self.layout.addWidget(self.bday_lab,5,0)
80 self.layout.addLayout(self.bday_layout,5,1)
81 self.layout.addWidget(self.major_lab, 6, 0)
82 self.layout.addWidget(self.major, 6, 1)
83 self.layout.addWidget(self.dorm_lab, 7, 0)
84 self.layout.addWidget(self.dorm, 7, 1)
85 self.layout.addWidget(self.room_lab, 8, 0)
86 self.layout.addWidget(self.room, 8, 1)
87 self.setLayout(self.layout)
88 self.setTitle("Move-in Wizard")
89 self.setSubTitle("Enter your contact information:")
92 def initializePage(self):
93 """Load known information from LDAP, like email, major, name, and NetID."""
95 ldapinfo = a.lookup(str(self.field("netid").toString()))
96 for key,value in ldapinfo.iteritems():
98 self.surname.setText(value)
99 elif(key == "givenName"):
100 self.forename.setText(value)
102 self.email.setText(value)
103 elif(key == "major"):
104 self.major.setText(value)
105 elif(key == "tamuEduPersonNetID"):
106 self.setField("netid",QVariant(QString(value)))
109 if __name__ == "__main__":
110 a = QApplication([""])
112 p = PageNewUserData()