def works(): cur.execute( 'select username, email, type_u from Пользователи where id = %s', (current_user.id, )) user1 = cur.fetchone() user = {'username': user1[0], 'role': user1[2]} cur.execute('select type_u,username from Пользователи where id=%s', (current_user.id, )) r = cur.fetchall() if r[0][0] == 'Студент': cur.execute('select №Зачетки from Студент where ФИО = %s', (r[0][1], )) s_number = cur.fetchone() cur.execute( 'select distinct НаучнаяРабота.Название, ТемаНаучнаяРабота.НазваниеТемы, НаучнаяРабота.ФИОНаучрук from НаучнаяРабота, ТемаНаучнаяРабота where НаучнаяРабота.Название = ТемаНаучнаяРабота.НазваниеРаботы;' ) w = cur.fetchall() if r[0][0] == 'Студент': cur.execute('select * from СтудентНаучнаяРабота') elif r[0][0] == 'Преподаватель': cur.execute('select Название from НаучнаяРаботаПрепод where ФИО = %s', (r[0][1], )) check = cur.fetchone() form = Works() if form.validate_on_submit(): cur.execute('select type_u,username from Пользователи where id=%s', (current_user.id, )) r = cur.fetchall() if r[0][0] == 'Преподаватель': cur.execute('insert into НаучнаяРаботаПрепод values (%s,%s)', ( form.names.data, r[0][1], )) elif r[0][0] == 'Студент': cur.execute('insert into СтудентНаучнаяРабота values (%s,%s)', ( form.names.data, s_number, )) con.commit() return redirect('/index') return render_template('works.html', title='Принять участие в научной работе', user=user, w=w, form=form, r=r, check=check)
def dropTableColumn(category, columns): executeString = "alter table {0} drop column %s".format(category) ## e.g., "alter table Tasks drop column %s" try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) for c in columns: cur.execute(executeString, (AsIs(c), )) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def dropTableColumn(category, columns): executeString = "alter table {0} drop column %s".format(category) ## e.g., "alter table Tasks drop column %s" try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) for c in columns: cur.execute(executeString, (AsIs(c),)) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def addTableColumn(category, columns, typeString): executeString = "alter table {0} add column %s {1}".format(category, typeString) ## e.g., "alter table Tasks add column %s char(40)" ## columns = ['add1', 'add2'] try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) for c in columns: cur.execute(executeString, (AsIs(c),)) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def addTableColumn(category, columns, typeString): executeString = "alter table {0} add column %s {1}".format( category, typeString) ## e.g., "alter table Tasks add column %s char(40)" ## columns = ['add1', 'add2'] try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) for c in columns: cur.execute(executeString, (AsIs(c), )) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def create_task(): if not request.json or not 'title' in request.json or not 'id' in request.json: abort(400) task = { 'id': request.json['id'], 'title': request.json['title'], 'description': request.json.get('description', ""), 'done': request.json.get('done', "false"), } category = 'Tasks' executeString = "SELECT * FROM {0}".format(category) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) # table = cur.fetchall() # if len(table) == 0: # abort(400) #method 1: keyString = ",".join(['"%s"' % k for k in task ]) # "description","done","id","title" valueString = ",".join([ "%s", ] * len(task.keys())) # %s,%s,%s,%s query = "insert into Tasks (%s) values (%s)" % (keyString, valueString) cur.execute(query, tuple(task.values())) #method 2: #cur.execute("insert into Tasks VALUES(16, 'test', 'testt', 'test2')") #method 3: #s = "insert into Tasks VALUES({0},'{1}','{2}','{3}')".format(task['id'], task['title'], task['description'], task['done']) #cur.execute(s) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def add_conference(): cur.execute( 'select username, email, type_u from Пользователи where id = %s', (current_user.id, )) user1 = cur.fetchone() user = {'username': user1[0], 'role': user1[2]} form = AddConferenceForm() if form.validate_on_submit(): cur.execute('select Название from Конференция where Название = %s;', (form.title.data, )) r = cur.fetchone() if r is None: cur.execute('insert into Конференция values (%s);', (form.title.data, )) cur.execute('insert into ПроведениеКонференции values (%s,%s,%s);', ( form.number.data, form.date.data, form.title.data, )) cur.execute('select Название from Тема where Название = %s;', (form.theme.data, )) r = cur.fetchone() if r is None: cur.execute('insert into Тема values (%s);', (form.theme.data, )) cur.execute( 'select * from ТемаКонференция where НазваниеТемы = %s and НазваниеКонференции = %s;', ( form.theme.data, form.title.data, )) r = cur.fetchone() if r is None: cur.execute('insert into ТемаКонференция values (%s,%s);', ( form.theme.data, form.title.data, )) con.commit() flash('Конференция успешно добавлена!') return redirect('/index') return render_template('add_conference.html', title='Добавление конференции', form=form, user=user)
def addTableColumnWithArrayType(category, columns): typeString = "float[]" executeString = "alter table {0} add column %s {1}".format(category, typeString) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) for c in columns: cur.execute(executeString, (AsIs(c),)) #query = "UPDATE Tasks SET add6 = ARRAY{0} WHERE id = 55".format(table['feature']) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def delete_task(task_id): category = 'Tasks' executeSearchString = "SELECT FROM {0} WHERE id = {1}".format(category, task_id) executeDeleteString = "DELETE FROM {0} WHERE id = {1} ".format(category, task_id) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeSearchString) row = cur.fetchone() if row is None: abort(400) cur.execute(executeDeleteString) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def addTableColumnWithArrayType(category, columns): typeString = "float[]" executeString = "alter table {0} add column %s {1}".format( category, typeString) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) for c in columns: cur.execute(executeString, (AsIs(c), )) #query = "UPDATE Tasks SET add6 = ARRAY{0} WHERE id = 55".format(table['feature']) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def create_task(): if not request.json or not 'title' in request.json or not 'id' in request.json: abort(400) task = { 'id': request.json['id'], 'title': request.json['title'], 'description': request.json.get('description', ""), 'done': request.json.get('done', "false"), } category = 'Tasks' executeString = "SELECT * FROM {0}".format(category) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeString) # table = cur.fetchall() # if len(table) == 0: # abort(400) #method 1: keyString = ",".join(['"%s"' % k for k in task]) # "description","done","id","title" valueString = ",".join(["%s",] * len(task.keys())) # %s,%s,%s,%s query = "insert into Tasks (%s) values (%s)" % (keyString, valueString) cur.execute(query, tuple(task.values())) #method 2: #cur.execute("insert into Tasks VALUES(16, 'test', 'testt', 'test2')") #method 3: #s = "insert into Tasks VALUES({0},'{1}','{2}','{3}')".format(task['id'], task['title'], task['description'], task['done']) #cur.execute(s) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def delete_task(task_id): category = 'Tasks' executeSearchString = "SELECT FROM {0} WHERE id = {1}".format( category, task_id) executeDeleteString = "DELETE FROM {0} WHERE id = {1} ".format( category, task_id) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) cur.execute(executeSearchString) row = cur.fetchone() if row is None: abort(400) cur.execute(executeDeleteString) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def update_task(): if not request.json or not 'id' in request.json: abort(400) category = 'Tasks' updateId = request.json['id'] task = getTableEntryById(category, updateId) if not task: abort(404) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) executePushStrings = [] for keyInTarget in task.keys(): if keyInTarget == 'id': continue requestValue = request.json.get(keyInTarget, "") if requestValue is not "": if isinstance(requestValue, basestring): executePushString = "UPDATE {0} SET {1} = '{2}' WHERE id = {3}".format( category, keyInTarget, requestValue, updateId) print 'requestValue is string' else: executePushString = "UPDATE {0} SET {1} = {2} WHERE id = {3}".format( category, keyInTarget, requestValue, updateId) print 'requestValue is not string' executePushStrings.append(executePushString) #cur.execute("UPDATE Tasks SET done = true WHERE id = 15") for executePushString in executePushStrings: cur.execute(executePushString) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def update_task(): if not request.json or not 'id' in request.json: abort(400) category = 'Tasks' updateId = request.json['id'] task = getTableEntryById(category, updateId) if not task: abort(404) try: cur = con.cursor(cursor_factory=psycopg2.extras.DictCursor) executePushStrings = [] for keyInTarget in task.keys(): if keyInTarget == 'id': continue requestValue = request.json.get(keyInTarget, "") if requestValue is not "": if isinstance(requestValue, basestring): executePushString = "UPDATE {0} SET {1} = '{2}' WHERE id = {3}".format(category, keyInTarget, requestValue, updateId) print 'requestValue is string' else: executePushString = "UPDATE {0} SET {1} = {2} WHERE id = {3}".format(category, keyInTarget, requestValue, updateId) print 'requestValue is not string' executePushStrings.append(executePushString) #cur.execute("UPDATE Tasks SET done = true WHERE id = 15") for executePushString in executePushStrings: cur.execute(executePushString) con.commit() except psycopg2.DatabaseError, e: print 'Error %s' % e sys.exit(1)
def register(): if current_user.is_authenticated: flash('Вы уже вошли в ученую запись!') return redirect('index') user = [None, None] form = RegisterForm() cur.execute('select * from Группа order by №Группы') gr = cur.fetchall() if form.validate_on_submit(): cur.execute('select email from Пользователи where email = %s;', (form.email.data, )) check_user = cur.fetchone() if check_user is not None: flash('Эта почта уже зарегистрирована!') return redirect('register') if form.role.data == 'Преподаватель': if form.position.data == "" or form.department_number.data == "": flash('Вы не полностью заполнили форму!') return redirect('register') elif type(form.department_number.data) != int: flash('Номер кафедры указан неверно!') return redirect('register') else: cur.execute( 'insert into Преподаватель (email, ФИО, №Кафедры, Должность, Звание) values (%s,%s,%s,%s,%s);', (form.email.data, form.username.data, form.department_number.data, form.position.data, form.rank.data)) con.commit() if form.role.data == 'Студент': cur.execute('select №Группы from Группа where №Группы = %s', (form.group_num.data, )) st_gr = cur.fetchone() if form.record_num.data == "" or form.group_num.data == "": flash('Вы не полностью заполнили формуу!') return redirect('register') elif st_gr is None: flash('Такой группы не существует!') return redirect('register') else: cur.execute( 'insert into Студент (email, ФИО, №Зачетки, №Группы) values (%s,%s,%s,%s);', (form.email.data, form.username.data, form.record_num.data, form.group_num.data)) con.commit() cur.execute( 'insert into Пользователи (username, pass_hash, email, type_u) values (%s,%s,%s,%s);', (form.username.data, generate_password_hash( form.password1.data), form.email.data, form.role.data)) cur.execute('select id from Пользователи where email = %s', (form.username.data, )) user = cur.fetchone() con.commit() id = user user_id = User(id) flash('Вы успешно зарегистрировались!') return redirect('login') return render_template('register.html', title='Регистрация', form=form, user=user, gr=gr)
def index(): cur.execute( 'select username, email, type_u from Пользователи where id = %s', (current_user.id, )) user1 = cur.fetchone() st_gr = user1 if user1[2] == 'Студент': cur.execute('select №Группы from Студент where email = %s', (user1[1], )) st_gr = cur.fetchone() user = {'username': user1[0], 'role': user1[2], 'group': st_gr[0]} form = IndexForm() cur.execute( 'select ФИО, №Зачетки,Стипендия,№Группы from Студент order by ФИО') students = cur.fetchall() if user1[2] == 'Студент': cur.execute('select №Зачетки from Студент where ФИО = %s', (user1[0], )) s_number = cur.fetchone() cur.execute( 'select НаучнаяРабота.Название, ТемаНаучнаяРабота.НазваниеТемы, НаучнаяРабота.ФИОНаучрук from НаучнаяРабота, ТемаНаучнаяРабота where НаучнаяРабота.Название = ТемаНаучнаяРабота.НазваниеРаботы and НаучнаяРабота.Название in (select Название from СтудентНаучнаяРабота where №Зачетки = %s);', (s_number)) elif user1[2] == 'Преподаватель': cur.execute( 'select НаучнаяРабота.Название, ТемаНаучнаяРабота.НазваниеТемы, НаучнаяРабота.ФИОНаучрук from НаучнаяРабота, ТемаНаучнаяРабота where НаучнаяРабота.Название = ТемаНаучнаяРабота.НазваниеРаботы and НаучнаяРабота.Название in (select Название from НаучнаяРаботаПрепод where ФИО = %s);', (user1[0], )) w = cur.fetchall() w1 = cur.fetchall() w_prep = cur.fetchall() w_st = cur.fetchall() if user1[2] == 'Преподаватель': cur.execute( 'select НазваниеРаботы, НазваниеТемы from ТемаНаучнаяРабота where НазваниеРаботы in (select Название from НаучнаяРабота where ФИОНаучрук = %s)', (user1[0], )) w1 = cur.fetchall() cur.execute('select * from НаучнаяРаботаПрепод') w_prep = cur.fetchall() cur.execute( 'select СтудентНаучнаяРабота.Название, Студент.ФИО from СтудентНаучнаяРабота, Студент where СтудентНаучнаяРабота.№Зачетки = Студент.№Зачетки' ) w_st = cur.fetchall() if form.validate_on_submit(): if form.submit.data == True: if form.group.data == '': flash('Вы не ввели номер группы!') return redirect('/index') cur.execute('select * from Группа where №Группы = %s;', (form.group.data, )) g = cur.fetchone() if g is None: cur.execute('insert into Группа values (%s);', (form.group.data, )) con.commit() flash('Группа добавлена!') return redirect('/index') else: flash('Такая группа уже существует!') return redirect('/index') elif form.submit_s.data == True: if form.grant.data == '': form.grant.data = 0 if int(form.grant.data) == 0: cur.execute( 'update Студент set Стипендия = %s where №Зачетки = %s', ( None, form.s_num.data, )) else: cur.execute( 'update Студент set Стипендия = %s where №Зачетки = %s', ( form.grant.data, form.s_num.data, )) con.commit() flash('Стипендия изменена!') return redirect('/index') elif form.submit_st_del.data == True: cur.execute('select email from Студент where №Зачетки = %s', (form.st_del_id.data, )) email = cur.fetchone() cur.execute('delete from СтудентНаучнаяРабота where №Зачетки = %s', (form.st_del_id.data, )) cur.execute('delete from Студент where №Зачетки = %s', (form.st_del_id.data, )) cur.execute('delete from Пользователи where email = %s', (email, )) con.commit() elif form.gr_del.data == True: cur.execute('select ФИО from Студент where №Группы = %s', (form.gr_del_num.data, )) st_in_gr = cur.fetchone() if st_in_gr is None: cur.execute('delete from Группа where №Группы = %s', (form.gr_del_num.data, )) con.commit() else: flash('В этой группе еще продолжают учиться студенты!') elif form.prep_del_s.data == True: cur.execute('delete from НаучнаяРаботаПрепод where ФИО = %s', (form.prep_del.data, )) cur.execute( 'select Название from НаучнаяРабота where ФИОНаучрук = %s', (form.prep_del.data, )) prep_del = cur.fetchone() if prep_del is not None: cur.execute( 'delete from СтудентНаучнаяРабота where Название in (select Название from НаучнаяРабота where ФИОНаучрук = %s)', (form.prep_del.data, )) cur.execute( 'delete from Участие where НазваниеРаботы in (select Название from НаучнаяРабота where ФИОНаучрук = %s)', (form.prep_del.data, )) cur.execute( 'delete from ТемаНаучнаяРабота where НазваниеРаботы in (select Название from НаучнаяРабота where ФИОНаучрук = %s)', (form.prep_del.data, )) cur.execute('delete from НаучнаяРабота where ФИОНаучрук = %s', (form.prep_del.data, )) cur.execute('delete from Преподаватель where ФИО = %s', (form.prep_del.data, )) cur.execute('delete from Пользователи where username = %s', (form.prep_del.data, )) flash('Преподаватель %s уволен!', (form.prep_del.data)) cur.execute( 'select ФИО, №Зачетки,Стипендия,№Группы from Студент order by ФИО') students = cur.fetchall() cur.execute('select * from Преподаватель') prep = cur.fetchall() cur.execute('select * from Группа order by №Группы') gr = cur.fetchall() return render_template('index.html', title='Научные работы', user=user, form=form, w=w, w1=w1, students=students, w_prep=w_prep, w_st=w_st, gr=gr, prep=prep)
def add_work(): cur.execute('select Название from Тема') theme = cur.fetchall() cur.execute( 'select НазваниеТемы, НазваниеКонференции from ТемаКонференция') theme_conf = cur.fetchall() cur.execute('select НазваниеКонференции, Номер from ПроведениеКонференции') conf_num = cur.fetchall() cur.execute( 'select username, email, type_u from Пользователи where id = %s', (current_user.id, )) user1 = cur.fetchone() user = {'username': user1[0], 'role': user1[2]} form = AddWorkForm() if form.validate_on_submit(): cur.execute( 'select НазваниеТемы, НазваниеКонференции from ТемаКонференция where (НазваниеКонференции = %s) and (НазваниеТемы = %s);', ( form.conference.data, form.theme.data, )) us = cur.fetchone() if us is None: flash( 'Вы не можете заявить работу с такой темой на указанную конференцию!' ) return redirect('add_work') cur.execute( 'select * from НаучнаяРабота where Название = %s and ФИОНаучрук = %s;', ( form.title.data, user1[0], )) us = cur.fetchone() if us is None: cur.execute('insert into НаучнаяРабота values (%s,%s);', ( form.title.data, user1[0], )) cur.execute('insert into ТемаНаучнаяРабота values (%s,%s);', ( form.title.data, form.theme.data, )) cur.execute( 'select Дата from ПроведениеКонференции where НазваниеКонференции = %s;', (form.conference.data, )) us = cur.fetchone() cur.execute( 'insert into Участие (НазваниеРаботы, НомерКонференции, Дата, НазваниеКонференции) values (%s,%s,%s,%s);', ( form.title.data, form.conference_number.data, us, form.conference.data, )) con.commit() flash('Работа успешно добавлена!') return redirect('/index') return render_template('add_work.html', title='Новая научная работа', form=form, user=user, theme_conf=theme_conf, conf_num=conf_num, theme=theme)