def setup_database(): db.create_all() u1 = Student('Heather', 'Freeman', '*****@*****.**', 'Abc123', 'student') u2 = Student('Amanda', 'Evans', '*****@*****.**', 'Cde456', 'student') u3 = Student('Jerry', 'White', '*****@*****.**', 'qwerty123', 'student') u4 = Student('Jane', 'Berry', '*****@*****.**', 'tyu1234', 'student') u5 = Student('Lori', 'Welch', '*****@*****.**', 'erg34345', 'student') u6 = Student('Dorothy', 'Medina', '*****@*****.**', 'bfdg2', 'student') u7 = Student('Lawrence', 'Foster', '*****@*****.**', 'regergs2', 'student') u8 = Student('Annie', 'Pierce', '*****@*****.**', 'bfg3', 'student') u9 = Student('Melissa', 'Taylor', '*****@*****.**', 'eret3', 'student') u10 = Student('Deborah', 'Richards', '*****@*****.**', 'opi234', 'student') t1 = Teacher('Albert', 'Morris', '*****@*****.**', 'abc123', 'teacher') t2 = Teacher('Jane', 'Ripper', '*****@*****.**', 'abc123', 'teacher') task1 = Task(1, 1, 1) task2 = Task(2, 1, 1) task3 = Task(1, 2, 1) task3.mark_id = 1 task3.completed = True m1 = Mark(7, 10, 1, 2) m2 = Mark(1, 10, 3, 3) m3 = Mark(1, 10, 5, 3) m4 = Mark(4, 10, 5, 3) m5 = Mark(5, 10, 4, 3) m6 = Mark(3, 10, 2, 4) db.session.add_all([u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, t1, t2]) db.session.add_all([task1, task2, task3]) db.session.add_all([m1, m2, m3, m4, m5, m6]) links = [ t1.add_student(u1), t1.add_student(u2), t1.add_student(u3), t1.add_student(u8), t1.add_student(u9) ] db.session.add_all(links) db.session.commit() graph1 = Graph( '{"version":2,"graph":{"showGrid":true,"showXAxis":true,"showYAxis":true,"xAxisStep":0,"yAxisStep":0,"xAxisMinorSubdivisions":0,"yAxisMinorSubdivisions":0,"xAxisArrowMode":"NONE","yAxisArrowMode":"NONE","xAxisLabel":"Re","yAxisLabel":"Im","xAxisNumbers":true,"yAxisNumbers":true,"polarMode":false,"polarNumbers":true,"degreeMode":false,"projectorMode":false,"squareAxes":true,"viewport":{"xmin":-1.6708536134523648,"ymin":-1.9601353023240395,"xmax":1.9920012573229602,"ymax":1.847026847468353}},"expressions":{"list":[{"id":"0","type":"expression","latex":"\\sqrt{x^2+y^2}-\\sqrt{x^2+\\left(y+1\\right)^2}=0","domain":{"min":0,"max":1},"hidden":false,"color":"#2d70b3","style":"normal","residualVariable":"","regressionParameters":{},"isLogModeRegression":false},{"id":"1","type":"expression","latex":"\\sqrt{x^2+y^2}-\\sqrt{y^2+\\left(x-1\\right)^2}=0","domain":{"min":0,"max":1},"hidden":false,"color":"#388c46","style":"normal","residualVariable":"","regressionParameters":{},"isLogModeRegression":false}]}}', '<thead><tr><th>Plot</th><th></th><th></th></tr></thead><tbody> <tr id="row0"><td><span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" style="position: relative;" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle displaystyle="true"><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>+</mo><mi>i</mi><mo>|</mo></mrow></mstyle></math>" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-128" style="width: 6.074em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.06em; height: 0px; font-size: 120%;"><span style="position: absolute; clip: rect(1.691em, 1004.93em, 2.927em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-129"><span class="mstyle" id="MathJax-Span-130"><span class="mrow" id="MathJax-Span-131"><span class="mrow" id="MathJax-Span-132"><span class="mo" id="MathJax-Span-133" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-134" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-135" style="font-family: STIXVariants;">|</span></span><span class="mo" id="MathJax-Span-136" style="font-family: STIXGeneral; padding-left: 0.375em; padding-right: 0.375em;">=</span><span class="mrow" id="MathJax-Span-137"><span class="mo" id="MathJax-Span-138" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-139" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-140" style="font-family: STIXGeneral; padding-left: 0.3em; padding-right: 0.3em;">+</span><span class="mi" id="MathJax-Span-141" style="font-family: STIXGeneral; font-style: italic;">i</span><span class="mo" id="MathJax-Span-142" style="font-family: STIXVariants;">|</span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.298em; border-left: 0px solid; width: 0px; height: 1.198em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle displaystyle="true"><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>+</mo><mi>i</mi><mo>|</mo></mrow></mstyle></math></span></span><script type="math/asciimath" id="MathJax-Element-2">|z|=|z+i|</script></td><td><input name="plot" id="0" checked="" type="checkbox"></td><td><input class="btn btn-block" name="del" id="del0" value="X" type="button"></td></tr><tr id="row1"><td><span class="MathJax_Preview" style="color: inherit; display: none;"></span><span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" style="position: relative;" data-mathml="<math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle displaystyle="true"><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>-</mo><mn>1</mn><mo>|</mo></mrow></mstyle></math>" role="presentation"><nobr aria-hidden="true"><span class="math" id="MathJax-Span-201" style="width: 6.372em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.298em; height: 0px; font-size: 120%;"><span style="position: absolute; clip: rect(1.691em, 1005.17em, 2.927em, -1000em); top: -2.56em; left: 0em;"><span class="mrow" id="MathJax-Span-202"><span class="mstyle" id="MathJax-Span-203"><span class="mrow" id="MathJax-Span-204"><span class="mrow" id="MathJax-Span-205"><span class="mo" id="MathJax-Span-206" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-207" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-208" style="font-family: STIXVariants;">|</span></span><span class="mo" id="MathJax-Span-209" style="font-family: STIXGeneral; padding-left: 0.375em; padding-right: 0.375em;">=</span><span class="mrow" id="MathJax-Span-210"><span class="mo" id="MathJax-Span-211" style="font-family: STIXVariants;">|</span><span class="mi" id="MathJax-Span-212" style="font-family: STIXGeneral; font-style: italic;">z</span><span class="mo" id="MathJax-Span-213" style="font-family: STIXGeneral; padding-left: 0.3em; padding-right: 0.3em;">−</span><span class="mn" id="MathJax-Span-214" style="font-family: STIXGeneral;">1</span><span class="mo" id="MathJax-Span-215" style="font-family: STIXVariants;">|</span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.56em;"></span></span></span><span style="display: inline-block; overflow: hidden; vertical-align: -0.298em; border-left: 0px solid; width: 0px; height: 1.198em;"></span></span></nobr><span class="MJX_Assistive_MathML" role="presentation"><math xmlns="http://www.w3.org/1998/Math/MathML"><mstyle displaystyle="true"><mrow><mo>|</mo><mi>z</mi><mo>|</mo></mrow><mo>=</mo><mrow><mo>|</mo><mi>z</mi><mo>-</mo><mn>1</mn><mo>|</mo></mrow></mstyle></math></span></span><script type="math/asciimath" id="MathJax-Element-3">|z|=|z-1|</script></td><td><input name="plot" id="1" checked="" type="checkbox"></td><td><input class="btn btn-block" name="del" id="del1" value="X" type="button"></td></tr></tbody>', 2, '2 Lines', '', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAPWklEQVR4nO3dXVBU9xnH8UN7k15wZ/ei5cIyGTJDpzR1hsy01Aw3DZ0YymQYrNU6MTB21LCT1gQZ0whRY9CAxJd1asXqRMeYERUl9V3rYlxZhTgQXwFRAovgUtcsohsWdp9eWLb895wDC7rP7kN/35n/ReC/e86B83HPW1SjOKmjo4M6OjpivRpRKRgMkqZppGkaJSQkRG05xYdX0jsHVyhjaHgoassjmtq/NyIiLdYrMNJU/kEDiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5iQFy4MABWr16NW3evNl0fPjhh2S32xnXOrIARG5igJw4cYLee++90I5mNPLz88nhcDCudWQBiNzEABmpr6+PLBaLAsNisVBrayvDWk4uAJGbOCADAwO6T46SkhKGNZx8ACI3cUDu3LmjA9LQ0MCwhpMPQOQmDsjhw4cVHElJSeT1ehnWcPIBiNzEAbFarQqQgoICCgaDDGs4+QBEbqKADAwMUGpqqgJk//79TGs4+QBEbqKAfP3117rzj/b29nHf+9GjR9Tb22v4vfv375PL5aKhIfMdaXBwkLq7u+n+/fvjLssoAJGbNrKBsR4Oh4McDofu6319faFDqK1btyo4UlJSyO/3Kxs0ODhILpeL7HY72Ww2ysnJIU3TKDU1lYaHh0PznE4nZWRkKOcyPT09ynt99913tGnTJt0Vs0AgQERP4EWybaMvLCQkJETtZ2jdW0xL9ryrjFu322Pye5sqQ4v1Coz3g+7v7yeiJ38Kj+zsZpd3fT4fJScnG95EtNlsoXk2m23cOV1dXbrDuZHR1NQUWqdvvvlm3G0DELlDzCGW2+3W3SCsq6sznNfR0UGzZs0y3KnXr19PmqZRVlYWVVdXKwhGTvh7enpCy6qsrKSysrKnuqyMQyy5iQFit9t1d8/dbrfp/EWLFoXmJicn0+DgIFVXV5OmabRmzRoKBAIUDAYpNzc3NK+qqor8fj+lpaUpd+dv3LgBICYBCFPj/aBLS0uVnTQ7O1s5pxid3+9Xzi9KSkqoqamJNE2jZcuWhc5pwh9b2b9/Py1dupQSExOVR1dGn/tYLBbducp4AYjcRADx+XyUnp6uAKmqqjJ9r/C77evXr6fU1FTKzs5WrlaN/lSyWCxUUFBAmqbRuXPnQnPCz30yMjLGvOJlFIDITQSQ1tZW3Yny1atXTd+rpqZGNz8pKYn6+vqUeSPnFmlpaYYn6kREHo9H+ZQpKyub8LYBiNxEANm3b5+ysycnJ9Pjx49N32vJkiWkaRrNmDEj9Bqn06nMGRoaooyMDEpMTAzNmT17tu7T4eLFi8qyL1y4MOFtAxC5xT2QYDBICxYsUHZSq9Vq+j5Gd9tXr16tm9fV1RXRTccNGzYoh2Hhn0KRBCByi3sgXq9Xd2+jtrbW9H3C77ab7dRHjhxR5n3wwQe6OYFAgDIzM5VPGLMLA2MFIHKLeyCXLl1SduTExETq7Ow0fZ/wu+2VlZWG84qKipT3vH37tm5O+FWusS4MjBWAyC3ugVRWVio7/MyZM02vIoVfcTLD5PP5lBNzsyeCHQ6Hsuzm5uZJbRuAyC2ugQQCAeV+xlifCET6u+35+fmGO374jb9jx44Zvt+6deuUCwMPHz4kIqL+/n7dM2BjBSByi2sgLpdLdyIdfjVqdOF32812/D179ox74y/8/KOwsJCCwSANDAxQWloaVVRURLxtACK3uAHy4MGD0IOJI408GjJ6Z/Z4PKbvMfpuu9nc8KtiZnfkw3HW1tZSMBik+fPnk8Vioa6uroi3DUDkFjdAwvP7/bq755qmUXd3d0TzFy5caHh4FX5VzOzEO/ww7MyZM7R06VLSNI3q6+sntC0AIre4A+L1eqmhoYHy8vJ0ODRNo+LiYmpubqYHDx4or2tra4vo8Cr8qpjZHflwICPj+PHjE94mAJFb3AEJP6wyG+GPhIQ/V2X2pO+hQ4cMT7zDc7vdusO7y5cvT2qbAERucQcknnK73eR0OunKlSsTfkBxdAAiNwBhCEDkFjdA4v2v7nmaAERucQOks7NzQpdOJQUgcosbIFP5Bw0gcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkRuAMAQgcgMQhgBEbgDCEIDIDUAYAhC5AQhDACI3AGEIQOQGIAwBiNwAhCEAkZsWyT+YiSFjpLzxc3oh/xfKSPj+92K+XsJHzFcA4xkNAInKiPkKYDyjASBRGLE+xhtpKh/LTuVzEJfLRd3d3VFdRiwDEIamMpBgMDil/4ViAGFoKgOZ6gEIQ5KAeDweKi0tpYqKCtq8efOYo7y8nGw2Gx04cICam5vp4cOHUdqy2AUgDEkC4na7acuWLfT6669P6qTWarXSvXv3orSF/AEIQ5KAjG737t06AEVFReTxeGhgYIA6Ojpox44dujkWi4Xa2tqe4ZbFLgBhSCqQo0eP6nb+9vZ23TyPx0OpqanqJeeUFPL5fE+zOXERgDAkFUhlZaVup/f7/YZzHQ6HDlNTU9Oklx0vAQhDEoEEAgHKzMxUdviSkhLdvJFLvG1tbTog27dvf6rtiYcAhCGJQFwul26HP3funG7e8PAwERG1trbq5ttstqfanngIQBiSCOTIkSO6E2+Px6ObN/IJYgTkiy++eKrtiYcAhCGJQIqKipSdfc6cORQIBEzn79y5UwekpaVlQsscHBwkj8dDvb299O23305qvZ91AMKQNCADAwO6q1K7du0ynd/T00MWi0WZn52dHTr8Gq+vvvqKlixZogOWm5tLvb29E17/ZxmAMCQNyJUrV3Q7a2trq+Hc9vZ2SktL0x2O3b17d9zl9PT0UF5eXuh1a9eupZaWFiovLw99be7cuTF91gtAGJIGJPxwKTk5mfr6+mhoaIiGh4fJ6/VSQ0MDWa1WHaT09HRyuVzjLsPpdCqvczqdoe/dvHlTWXYsH2EBEIYkAQkGg5STkzPhR0yysrKorq4uoj/tT548qby2vr5e+f6NGzdC38vIyKChodg9cAkgDEkC0tfXpzufSExM1H1tZNTU1FBPT0/E73/27Fnl9Xv37tXNGX2BoKCgAIdYRADyLHoWQOx2u+nlXaNLv263O+L3vnPnzrgn8jU1NXF1Nx5AGJIEpLS01PTyrtHVraqqqojeNxAI6A7dmpublTkHDx4c99OFOwBhSAoQv99P6enpyk766aefKnNWrlypfD8lJSWic4TwT585c+aEDp3cbjctXLhQOaQ7derUxDY+SgEIQ1KAGD1Pde3aNWWO0SXg8Q6DjOAdP36cOjs7qaysTPn6li1byOv1Tmr7oxGAMCQFyL59+3SXdx8/fqzMCQQClJGRocwzeohxdNevXx/zClhubi4dOnSI+vv7J7Xd0QxAGJIAJBgM0oIFC5Qdt6ioyHDunj17lHlJSUmGz2mNVF1drczPz88np9NJbW1tcf+/6Wot3V6Kh2FvvEn2xpsxX49ojJsuLz03bTo9N206/eCHP4nact76fAUt+my5Mq513acvb9yjs1d7qfHWv01fe7n1Lj3/4q9D6/nctOm0Y99Rw7nOqx30o5QZEc1t6fbS8jUblbn7j5+P+e8k0qEVVl2ieBgFm+qoYFNdzNcjWmN6TkloRGsZv934Z8raYFXG7PV2emXlacpccZJeWXma3tx8wfC1fyw/qazj87mraKHtS9NlZb69Q5n/q8Vb6a1tFw3nvlxYpcyd9/GJmP8+Ih0AwjRiAeQ3n1gpa9VJylzxv/G7j84avvbV5Z8r6zjjzQ2mO3xh1SWa9/EJHSiz31/2+9XK3PnlJ8fcjvyNdkqbX0FvbjBeV84BIEwjNkAKKXPFMQVI1qozute9te0ivfhGpbKOry7/fMxlLd5aTz+b97Hymtf+us9wbu6qw8q8zLd3mL7v7z86QtNzSuinc9fRor8Zf9pxDgBhGrEA8sonVnrto9MKkLzyc7rX/WHtMWX9xtrZR4/wT50XZq8x/B3mb7Tr3j/z7R30py3nqbDqCdAFn/yLZv73UOylhTZavLU+5r+zwqpLpG0/3UbxMCqqG6iiuiHm6xGNUXWqjSzpeU/GS7Ojtpw5Vcsob9tSZWz45zX6y85GWvz3i/T+Z030j9O3aLf9Nu2236bNhy7TOxsP0rQZObrx41/Opnc2HqSNBxtpx+mW0GtGj8r9F3Wvm/7yPFqx7ThtO3ZNmbtozW7D5aTNWqz896I1u2nX2XbD5cVi4DIvQ/F4mdfn8+keGzEbZjcCx3ry1+j/R6+trTVdRnFxcVz+JdgAwlA8AolVjx49ovr6empsbKTz58/T9evX4/rvzwIQhgBEbgDC0FQG4vP54voT4GkDEIamMpCp/HsjAhCWAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELlpIxsY6+FwOMjhcMR8PaIxRv/bfAkJCVFbjnVvMS3Z864ybt1ux+/tKYYW6xX4f/hBA4jcgUMshnCIJTcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELkBCEMAIjcAYQhA5AYgDAGI3ACEIQCRG4AwBCByAxCGAERuAMIQgMgNQBgCELn9B4KLRTkmtn8TAAAAAElFTkSuQmCC' ) db.session.add(graph1) db.session.commit()
def test_teacher_invalid_confirmation_token(self): u1 = Teacher(password='******') u2 = Teacher(password='******') db.session.add(u1) db.session.add(u2) db.session.commit() token = u1.generate_auth_token() self.assertFalse(u2.verify_auth_token(token) == u2)
def bind_teacher(current_file_info: dict, current_book): worksheet = current_book.sheet_by_name('统计表') test_time = os.path.splitext(current_file_info['Name'])[0][22:30] # 每次遍历一个班级 for i in range(worksheet.ncols): # 寻找有效列 col = worksheet.col_values(i) if str(col[1]).startswith('1'): class_index = str(worksheet.col_values(i)[1])[0:4] grades = StudentGrade.query.filter_by(test_time=test_time, class_index=class_index).all() # TODO:query不all()直接迭代是否可以提高速度? for name in col: if str(name).isalpha(): results = re.findall(u"[\u4e00-\u9fa5]+", worksheet.col_values(0)[col.index(name)]) if int(class_index) in range(1801, 1818): subject = results[0] else: subject = results[-1] if not Teacher.query.filter_by(teacher_name=str(name)).first(): teacher = Teacher() teacher.teacher_name = str(name) teacher.subject = subject db.session.add(teacher) else: teacher = Teacher.query.filter_by(teacher_name=str(name)).first() for grade in grades: teacher.student_grades.append(grade) db.session.commit()
def setUp(self): """Set up test client and populate test database with test data """ self.app = app.test_client() db.create_all() user = User(username="******", password="******") student = Student(student_id="ST001", first_name="Hermione", last_name="Granger", email_address="*****@*****.**") teacher = Teacher(staff_id="TC001", first_name="Minerva", last_name="McGonagall", email_address="*****@*****.**") subject = Subject(subject_id="SB001", name="Transfiguration", description="Teaches the art of changing the form " "and appearance of an object or a person.") subject.major_students.append(student) teacher.subjects_taught.append(subject) db.session.add(user) db.session.add(student) db.session.add(teacher) db.session.add(subject) self.token = self.get_token()
def add_teacher(): if not current_user.is_authenticated or current_user.role != 'admin': return redirect(url_for('login')) db_subject_list = Subject.query.all() subject_list = [(i.name, i.name) for i in db_subject_list] form1 = AddTeacher(prefix="form1") form1.subject.choices = subject_list if form1.validate_on_submit() or form1.submit.data: old_user = User.query.filter(User.login == form1.login.data).first() if old_user is not None: flash('Teacher already exists') return redirect(url_for('add_teacher')) user = User(login=form1.login.data, role='teacher') user.set_password(form1.password.data) teacher = Teacher(name=form1.name.data, sub_name=form1.subject.data) user.teachers = teacher db.session.add(user) db.session.add(teacher) db.session.commit() flash('Teacher is added') return redirect(url_for('add_teacher')) db_teacher_list = Teacher.query.all() teacher_list = [(i.name, i.sub_name + "\t" + i.name) for i in db_teacher_list] form2 = DeleteTeacher(prefix="form2") form2.teacher.choices = teacher_list if form2.validate_on_submit() or form2.submit.data: t = Teacher.query.filter(Teacher.name == form2.teacher.data).first() u = User.query.filter(User.id == t.teach_id).first() db.session.delete(u) db.session.commit() flash('Teacher is deleted') return redirect(url_for('add_teacher')) return render_template('add_teacher.html', form1=form1, form2=form2)
def test_teacher_expired_confirmation_token(self): u = Teacher(password='******') db.session.add(u) db.session.commit() token = u.generate_auth_token(1) time.sleep(2) self.assertFalse(u.verify_auth_token(token) == u)
def signup(): form = SignupForm(request.form) if request.method == 'POST' and form.validate(): if form.role.data == "student": user = Student(name=form.name.data, email=form.email.data, student_ref=form.uni_id.data) else: user = Teacher(name=form.name.data, title=form.title.data, teacher_ref=form.uni_id.data, email=form.email.data) user.set_password(form.password.data) try: db.session.add(user) db.session.commit() response = make_response(redirect(url_for('main.index'))) response.set_cookie("name", form.name.data) return response except IntegrityError: db.session.rollback() flash( 'ERROR! Unable to register {}. Please check your details are correct and resubmit' .format(form.email.data), 'error') return render_template('signup.html', form=form)
def join_faculty(): form = JoinFaculty() if request.method == 'POST' and form.validate(): check_email = Teacher.query.filter_by(email=form.email.data).first() if check_email != None: flash( 'This email is already assigned to a Teacher. Are you sure you are not already a teacher at this school?' ) return render_template('teacher_templates/join_faculty.html', form=form) # work around to make sure user loader doesn't confuse teachers and students count1 = Student.query.order_by(Student.id.desc()).all()[0].id count2 = Teacher.query.order_by(Teacher.id.desc()).all()[0].id id = max(count1, count2) + 1 new_teacher = Teacher(id=id, first_name=form.first_name.data.title(), last_name=form.last_name.data.title(), started_at_school=form.started_at_school.data, pic_url=form.pic_url.data, email=form.email.data, password_hash=generate_password_hash( form.password.data)) db.session.add(new_teacher) db.session.commit() flash( f'Thank you {new_teacher.first_name} {new_teacher.last_name}. You are now a registered teacher. Please Log in!' ) return redirect('/login') return render_template('teacher_templates/join_faculty.html', form=form)
def dashboard_all_teachers(): admin = Admin.query.filter_by( admin_full_name=current_user.admin_full_name).first() # --------------------- # Teacher Registration # --------------------- teacher_form = TeacherRegistrationForm() if teacher_form.validate_on_submit(): teacher = Teacher( teacher_full_name=teacher_form.teacher_full_name.data, teacher_email=teacher_form.teacher_email.data, teacher_phone=teacher_form.teacher_phone.data, teacher_residence=teacher_form.teacher_residence.data, teacher_course=teacher_form.teacher_course.data) teacher.set_password(teacher_form.teacher_password.data) db.session.add(teacher) db.session.commit() send_registration_details_teacher(teacher) flash('Teacher successfully registered') return redirect(url_for('admin.dashboard_all_teachers')) # --------------------- # End of teacher registration # --------------------- teachers = Teacher.query.order_by(Teacher.teacher_last_seen.desc()).all() all_teachers = len(Teacher.query.all()) return render_template('admin/all_teachers.html', title='All Teachers', teachers=teachers, admin=admin, all_teachers=all_teachers, teacher_form=teacher_form)
def test_teacher_is_school_admin(self): t = Teacher(telephone='13700000001') s = School(name='aschool', admin='13700000001') db.session.add_all([t, s]) db.session.commit() self.assertFalse(t.is_teacher_admin(s.id)) t.schools.append(s) db.session.commit() self.assertTrue(t.is_teacher_admin(s.id))
def test_teacher_is_employ_and_dissmiss(self): t = Teacher(telephone='13700000000') s = School(name='aschool') t.schools.append(s) db.session.add_all([t, s]) db.session.commit() self.assertTrue(t.is_employ(s.id)) t.dismiss_school(s.id) self.assertFalse(t.is_employ(s.id))
def teacher_save(): try: t = Teacher() t.id = 1 t.username = '******' t.password = '******' db.session.add(t) db.session.commit() except Exception, e: print e
def test_teacher_bind_school(self): t = Teacher(telephone='13700000000') s = School(name='aschool') db.session.add_all([t, s]) db.session.commit() Tcode.generate_code(10, s.id) tcode = Tcode.query.all()[0].code t.bind_school(tcode) self.assertTrue(t.schools[0].id == s.id) self.assertTrue(Tcode.query.filter_by(code=tcode).first() is None)
def add_teacher(): form = AddTeacherForm() if form.validate_on_submit(): teacher = Teacher() teacher.name = form.name.data teacher.age = form.age.data db.session.add(teacher) db.session.commit() return redirect(url_for('.teachers')) return render_template('add_teacher.html', form=form)
def addteacher(): form = AddTeacherForm() if form.validate_on_submit(): user = Teacher(username=form.username.data, email=form.email.data) user.set_password(form.password_hash.data) db.session.add(user) db.session.commit() flash('Teacher is added Successfully') return redirect(url_for('addteacher')) return render_template('addteacher.html', form=form)
def register_teacher(): form = RegistrationTeacherForm() if form.validate_on_submit(): role_teacher = SystemRole.query.filter_by(name=role_teacher_name).first() user_teacher = SystemUser(login=form.login.data, password=form.password.data, system_role=role_teacher, enabled=form.enabled.data) teacher = Teacher(fio=form.fio.data, system_user=user_teacher, phone=form.phone.data) db.session.add(user_teacher) db.session.add(teacher) flash('преподаватель {} создан.'.format(form.login.data)) return redirect(url_for('.teachers_list')) return render_template('users/form_register_edit.html', form=form, class_name='преподавателя', creating=True)
def create(self, teacher): username = teacher['username'] user_service.set_request(self.request) user = user_service.create_user({ 'username': teacher['username'], 'password': constants.TEACHER_DEFAULT_PASSWORD, 'fullname': teacher['fullname'], 'roles': ['TEACHER'] }) user_service.create_school_user(self.request.school_id, user.id) teacher = Teacher() teacher.user = user return super().create(teacher)
def add_teacher(): """ Add new teacher """ form = AddTeacherForm() if form.validate_on_submit(): teacher = Teacher(teacher_name=form.teacher_name.data) db.session.add(teacher) db.session.commit() flash(message='Teacher is successfully added.', category='success') return redirect(url_for('teacher.add_teacher')) return render_template('teacher/add_teacher.html', title='Add Teacher', form=form)
def create_superuser(sid, password): """创建管理员账号""" admin = Teacher() admin.sid = sid admin.username = '******' admin.password = password admin.is_admin = True admin.confirmed = True try: db.session.add(admin) db.session.commit() except: return '创建失败' return '创建成功'
def setUp(self): self.app = create_app('test') self.app_context = self.app.app_context() self.app_context.push() db.create_all() t = Teacher() t.name = 'zhangliu' t.age = 35 db.session.add(t) db.session.commit() s = Student() s.name = 'wangwu' s.age = 20 s.teacher = t db.session.add(s) db.session.commit()
def register(): if current_user.is_authenticated: return redirect(url_for('users.dashboard')) form = RegistrationForm() if form.validate_on_submit(): dept = Department.query.filter_by( dept_code=form.department.data).first() teacher = Teacher(name=form.name.data, email=form.email.data, password=form.password.data, department=dept) db.session.add(teacher) db.session.commit() flash('Account created successfully! Please Log In.', 'success') return redirect(url_for('users.login')) return render_template('registerPro.html', form=form, title='Register')
def add_teacher(): form = AddTeacherForm() if form.validate_on_submit(): teacher = Teacher.query.filter_by( first_name=form.first_name.data, last_name=form.last_name.data, dept=form.dept.data).first() if teacher is not None: flash('Teacher already exists') return redirect(url_for('add_teacher')) teacher = Teacher(first_name=form.first_name.data, last_name=form.last_name.data, dept=form.dept.data, created_by=current_user.id) db.session.add(teacher) db.session.commit() flash("Successfully Added New Teacher!") return redirect(url_for('add_teacher')) return render_template('add_teacher.html', title='Add Teacher', form=form)
def post(self): parser = reqparse.RequestParser() parser.add_argument("first_name", required=True, help="Please enter a first name.") parser.add_argument("last_name", required=True, help="Please enter a last name.") parser.add_argument("email_address", required=True, help="Please enter an email address.") parser.add_argument("subjects_taught", help="Separate multiple subject IDs with a comma.") args = parser.parse_args() first_name, last_name, email_address, subjects_taught = \ args["first_name"], args["last_name"], args["email_address"], \ args["subjects_taught"] teacher = Teacher(first_name=first_name, last_name=last_name, email_address=email_address, staff_id="TC" + str(random.randint(1, 999))) if subjects_taught: subjects_taught_list = [ subject.strip() for subject in subjects_taught.split(',') ] for subject_id in subjects_taught_list: try: subject = Subject.query.get(subject_id) if subject: teacher.subjects_taught.append(subject) else: return { "error": "One or more subject IDs you entered " "is invalid." }, 400 except: return { "error": "The subjects_taught field should only " "contain subject IDs separated by a comma." }, 400 return create_or_update_resource(resource=teacher, resource_type="teacher", serializer=teacher_serializer, create=True)
def setUp(self): print('start test') self.app = create_app('test') self.app_context = self.app.app_context() self.app_context.push() db.create_all() self.t = Teacher() self.t.name = 'lizhiyong' self.t.age = 32 db.session.add(self.t) db.session.commit() self.s = Student() self.s.name = 'zhangsan' self.s.age = 22 self.s.teacher = self.t db.session.add(self.s) db.session.commit()
def addTeacher(): result = {'code': 1, 'result': 'success'} try: teacher = Teacher() teacher.id = request.form.get('TeacherId', teacher.id) teacher.name = request.form.get('TeacherName', teacher.name) teacher.sex = str_to_bool(request.form.get('Sex', teacher.sex)) if (request.form.get('Passwd', '') != ''): teacher.passwd = request.form.get('Passwd') db.session.add(teacher) db.session.commit() except Exception as e: result['code'] = 0 result['result'] = '添加失败' print(e) return str(json.dumps(result))
def add_teacher(): if isinstance(current_user._get_current_object(), Manager): if request.method == 'POST': TeacherNum = request.form['TeacherNum'] DeptName = request.form['DeptName'] DeptNum = Dept.query.filter_by(DeptName=DeptName).first().DeptNum TeacherName = request.form['TeacherName'] TeacherSex = request.form['TeacherSex'] TeacherTitle = request.form['TeacherTitle'] TeacherInyear = request.form['TeacherInyear'] if not Teacher.query.filter_by(TeacherNum=TeacherNum).first(): teacher = Teacher(TeacherNum, DeptNum, TeacherName, TeacherSex, TeacherInyear, TeacherTitle) db.session.add(teacher) db.session.commit() flash('录入教师信息成功!') else: flash('工号%s已存在!' % (TeacherNum)) return redirect(url_for('teacher_manage'))
def import_data(request): rb = xlrd.open_workbook('D:\pydata\prepod_goda.xlsx') sheet = rb.sheet_by_index(0) ins = Institute.objects.all()[0] n = sheet.nrows s = 'sdads' for rownum in range(sheet.nrows): row = sheet.row_values(rownum) d = row[0].strip() t = row[1].strip() g = row[2].strip() dep = Department() tech = Teacher() group = Group() db_d = Department.objects.filter(name=d) if (db_d.count() == 0): dep.name = d dep.institute = ins dep.save() else: dep = db_d[0] db_t = Teacher.objects.filter(last_name=t) if (db_t.count() == 0): tech.last_name = t tech.department = dep tech.save() else: tech = db_t[0] db_g = Group.objects.filter(name=g) if (db_g.count() == 0): group.name = g group.department = dep group.save() else: group = db_g[0] group.teachers.add(tech) group.save() return HttpResponse("OK " + s)
def register(): if request.method == "GET": form = RegisterForm() return render_template("teacher/register.html", form=form, err=None, err2=None) elif request.method == "POST": # 获取数据 form = RegisterForm(request.form) try: form.validate_name(form.username) form.validate_email(form.email) form.validate_phone(form.phone) except ValidationError as e: return render_template("teacher/register.html", form=form, err=None, err2=e) if form.validate(): data = form.data teacher = Teacher( username=data["username"], name=data["name"], pwd=generate_password_hash(data["pwd"]), email=data["email"], phone=data["phone"], ) db.session.add(teacher) db.session.commit() session["username"] = teacher.username session["password"] = teacher.pwd return render_template("teacher/register_ok.html") err = form.errors return render_template("teacher/register.html", form=form, err=err, err2=None)
def add_teacher(): classes = Class.query.all() subjects = Subject.query.all() if request.method == 'POST': tech_name = request.form['tech_name'] email = request.form['email'] tech_address = request.form['tech_address'] tech_contact = request.form['tech_contact'] gender = request.form['gender'] admin_id = current_user.id tech_subject = request.form['tech_subject'] salary = request.form['salary'] tech_class = request.form['stdclass'] if tech_subject == 'Open this select subject': flash('Please etner subject!') return redirect(url_for('add_teacher')) if tech_class == 'Open this select class': tech_class = 'None' #tech_subject = Subject.query.filter_by(id=tech_subject.id).first() teacher = Teacher(tech_name=tech_name, email=email, tech_address=tech_address, tech_contact=tech_contact, gender=gender, salary=salary, admin_id=admin_id, tech_subject=tech_subject, tech_class=tech_class) db.session.add(teacher) db.session.commit() flash('{} teacher is successfully added!'.format(tech_name)) return redirect(url_for('teacher_detials')) return render_template('administrator/add_teacher.html', title='Add Teacher', subjects=subjects, classes=classes, teacher=None)
def teacher_name_step(message): try: chat_id = message.chat.id name = message.text try: check_name = Student.query.filter( Student.id == str(chat_id)).first().name bot.send_message(chat_id, text='Вы уже зарегистрировались как студент ' + str(check_name)) except AttributeError: teacher = Teacher(id=chat_id, name=name) db.session.add(teacher) db.session.commit() msg = bot.send_message(chat_id, text='Введите ссылку на таблицу Google') bot.register_next_step_handler(msg, teacher_table_link_step) except Exception as e: bot.reply_to(message, "Произошла какая-то ошибка, я вас не понял " + str(e))