]> git.zarvox.org Git - wp3.git/blob - pagenewuserdata.py
Added Python docstrings for all classes.
[wp3.git] / pagenewuserdata.py
1 from PyQt4.QtCore import *
2 from PyQt4.QtGui import *
3
4 from ldapsearcher import LDAPSearcher
5
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:")
25                 # Personal info
26                 self.surname = QLineEdit()
27                 self.forename = QLineEdit()
28                 self.phone = QLineEdit()
29                 self.email = QLineEdit()
30                 self.major = QLineEdit()
31                 # Birthday
32                 self.year = QComboBox()
33                 self.month = QComboBox()
34                 self.day = QComboBox()
35                 # Residence locations
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)
51
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)
63                 
64
65                 # Set up layout
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:")
90
91
92         def initializePage(self):
93                 """Load known information from LDAP, like email, major, name, and NetID."""
94                 a = LDAPSearcher()
95                 ldapinfo = a.lookup(str(self.field("netid").toString()))
96                 for key,value in ldapinfo.iteritems():
97                         if(key == "sn"):
98                                 self.surname.setText(value)
99                         elif(key == "givenName"):
100                                 self.forename.setText(value)
101                         elif(key == "mail"):
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)))
107
108
109 if __name__ == "__main__":
110         a = QApplication([""])
111         wiz = QWizard()
112         p = PageNewUserData()
113         wiz.addPage(p)
114         wiz.resize(400,300)
115         wiz.show()
116         a.exec_()
117