예제 #1
0
파일: routes.py 프로젝트: z0mb1eg0d/ash
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
파일: routes.py 프로젝트: z0mb1eg0d/ash
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)
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
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)
예제 #15
0
파일: routes.py 프로젝트: z0mb1eg0d/ash
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)
예제 #16
0
파일: routes.py 프로젝트: z0mb1eg0d/ash
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)
예제 #17
0
파일: routes.py 프로젝트: z0mb1eg0d/ash
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)