示例#1
0
def login():
    """
    Страница авторизации
    :return:
    вывод формы авторизации или переход на регистрацию
    """
    form = LoginForm()
    if form.validate_on_submit():  # ввели логин и пароль
        user_name = form.username.data
        password = form.password.data
        user_model = UsersModel(db.get_connection())
        # проверяем наличие пользователя в БД и совпадение пароля
        if user_model.exists(user_name)[0] and \
                check_password_hash(user_model.exists(user_name)[1], password):
            session['username'] = user_name
            # запоминаем в сессии имя пользователя и кидаем на главную
            return redirect('/index')
        elif user_model.exists(user_name)[0]:
            flash('Введен неверный пароль')
        else:
            flash('Упс! Такого аккаунта не существует, повторите попытку! ')
    return render_template('login.html',
                           title='Авторизация',
                           form=form,
                           loged=False)
示例#2
0
def resetFixture(request):
	if request.method == 'POST':
		UsersModel.resetFixture()
		err ={}
		err{'errCode'} = 1;
		return HttpResponse(json.dumps(err), content_type="application/json")

	else:
		raise Http404
 def post(self):
     args = userParser.parse_args()
     username = args['username']
     username = username.lower()
     user = UsersModel.fetch_by_username(username)
     if user:
         return marshal(user, userStructure), 200
     user = UsersModel(username=username)
     record = user.create_record()
     return marshal(record,userStructure),201
 def put(self,uid):
     args = userParser.parse_args()
     username = args['username'].lower()
     if UsersModel.fetch_by_username(username):
         return {"message":"Username {} already exists".format(username)},409
     updated = UsersModel.update_by_id(id=uid, newUsername=username)
     if updated:
         record = UsersModel.fetch_by_id(uid)
         return marshal(record,userStructure),200
     else:
         return {"Message":"Record not updated"},500
示例#5
0
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user_name = form.username.data
        password = form.password.data
        user_model = UsersModel(db.get_connection())
        if user_model.exists(user_name)[0] and check_password_hash(
                user_model.exists(user_name)[1], password):
            session['username'] = user_name
            return redirect('/index')
        else:
            flash('Пользователь или пароль не верны')
    return render_template('login.html', title='Авторизация', form=form)
示例#6
0
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user_name = form.username.data
        password = form.password.data
        user_model = UsersModel(db.get_connection())
        if user_model.exists(user_name)[0] \
           and check_password_hash(user_model.exists(user_name)[1], password):
            session['username'] = user_name
            return redirect('/index')
        else:
            flash('User or password is incorrect')
    return render_template('login.html', title='Authorization', form=form)
示例#7
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        users = UsersModel(db.get_connection())
        if form.user_name.data in [u[1] for u in users.get_all()]:
            flash('Такой пользователь уже существует')
        else:
            users.insert(user_name=form.user_name.data,
                         email=form.email.data,
                         password_hash=generate_password_hash(
                             form.password_hash.data))
            return redirect(url_for('index'))
    return render_template("register.html",
                           title='Регистрация пользователя',
                           form=form)
示例#8
0
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        users = UsersModel(db.get_connection())
        if form.user_name.data in [u[1] for u in users.get_all()]:
            flash('This user already exists.')
        else:
            users.insert(user_name=form.user_name.data,
                         email=form.email.data,
                         password_hash=generate_password_hash(
                             form.password_hash.data))
            return redirect(url_for('index'))
    return render_template("register.html",
                           title='User registration',
                           form=form)
    def put(self,uid,pid):
        user = UsersModel.fetch_by_id(uid)
        record = user.projects
        for each in record:
            if each.id == pid:
                body = projectUpdateParser.parse_args()
                title = body['title'] if body['title'] else None
                description = body['description'] if body['description'] else None
                status = int(body['status']) if body['status'] else None
                startDate = None
                endDate = None
                if status == 1:
                    startDate = datetime.now()
                elif status == 2:
                    endDate = datetime.now()
                updated = ProjectsModel.update_by_id(id=pid, newTitle=title, newDescription=description,
                                                     newStartDate=startDate, newEndDate=endDate,
                                                     newStatus=status)

                if updated:
                    record = ProjectsModel.fetch_by_id(pid)
                    return record,200
                else:
                    return {},400

        return {},404
示例#10
0
文件: index.py 项目: Kol2ja/web2
def login():
    # Страница авторизации переадресация на главную, либо вывод формы авторизации
    form = LoginForm()
    if form.validate_on_submit():  # ввели логин и пароль
        user_name = form.username.data
        password = form.password.data
        user_model = UsersModel(db.get_connection())
        # проверяем наличие пользователя в БД и совпадение пароля
        if user_model.exists(user_name)[0] and check_password_hash(
                user_model.exists(user_name)[1], password) or True:
            session[
                'username'] = user_name  # запоминаем в сессии имя пользователя и кидаем на главную
            return redirect('/index')
        else:
            flash('Пользователь или пароль не верны')
    return render_template('login.html', title='Авторизация', form=form)
示例#11
0
def books_page():
    """ Страница со всеми книгами """
    books = BooksModel(db.get_connection()).get_all()
    authors = AuthorsModel(db.get_connection()).get_all()
    # страница для не авторизованного пользователя
    if 'username' not in session:
        return render_template('books_page.html',
                               books=books,
                               title="Книги",
                               loged=False,
                               admin=False,
                               authors=authors)
    # страница для администратора
    if UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('books_page.html',
                               books=books,
                               title="Книги",
                               loged=True,
                               username=session['username'],
                               admin=True,
                               authors=authors)
    # страница для авторизованного пользователя
    return render_template('books_page.html',
                           books=books,
                           title="Книги",
                           loged=True,
                           username=session['username'],
                           authors=authors)
示例#12
0
def shopping():
    """ Вывод интерфейса корзины """
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    else:
        loged = True
    user = UsersModel(db.get_connection()).get_by_name(session['username'])

    books = BooksModel(db.get_connection())
    all_books = {}
    # наполнение корзины покупками, если она не пустая
    if user[5]:
        for item in user[5].split('//'):
            if books.get(item) in all_books:
                all_books[books.get(item)] += 1
            else:
                all_books[books.get(item)] = 1
        return render_template('shopping.html',
                               username=session['username'],
                               title='Моя корзина',
                               loged=loged,
                               user=user,
                               books=all_books,
                               alert=0,
                               disabled=False)
    else:
        # отображение пустой корзины
        return render_template('shopping.html',
                               username=session['username'],
                               title='Моя корзина',
                               loged=loged,
                               user=user,
                               books={},
                               disabled=True)
示例#13
0
def add_author():
    """ Добавление автора """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    books = BooksModel(db.get_connection()).get_all()
    form = AddAuthorForm()
    if form.validate_on_submit():
        # создать автора
        authors = AuthorsModel(db.get_connection())
        book_list = ''
        for item in books:
            if item[2] == form.name.data:
                book_list += item[1] + '//'
        book_list.rstrip('//')
        if form.picture.data is not None:
            filename = secure_filename(form.picture.data.filename)
            server_file = 'static/img/' + filename
            form.pictures.data.save(server_file)
        authors.insert(name=form.name.data,
                       picture=filename,
                       bio=form.bio.data,
                       books=book_list)
        # редирект на главную страницу
        return redirect('index')
    return render_template("add_author.html",
                           title='Добавить автора',
                           form=form,
                           loged=True)
示例#14
0
def author_page(author_id):
    """ Вывод информации о писателе """
    # проверка, авторизован ли пользователь
    if 'username' not in session:
        loged = False
    else:
        loged = True
    # ошибка, если такого автора нет в базе
    if not AuthorsModel(db.get_connection()).exists_id(str(author_id)):
        return render_template('error.html', loged=loged, title='Ошибка')
    books = BooksModel(db.get_connection())
    book = []
    author = AuthorsModel(db.get_connection()).get(author_id)
    books_author = author[4].split('//')
    for item in books_author:
        book.append(books.get_by_name(str(item)))
    # для авторизованного пользователя показывается список книг автора
    # для не авторизованного пользователя показывается только страница автора
    # страница для администратора
    if UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('author_info.html',
                               title=author[1],
                               loged=loged,
                               author=author,
                               book=book,
                               admin=True)
    return render_template('author_info.html',
                           title=author[1],
                           loged=loged,
                           author=author,
                           book=book,
                           admin=False)
示例#15
0
def delete_book_shopping(book_id):
    """ Удаление товара в корзину из интерфейса корзины """
    # ошибка, если пользователь не авторизован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    # изменение БД
    books = user[5].split('//')
    f = None
    for i in range(len(books)):
        if not f and int(books[i]) == book_id:
            f = i
    del books[f]
    books = '//'.join(books)
    UsersModel(db.get_connection()).add_book(user[0], books)
    return redirect('shopping')
示例#16
0
def delete_all():
    """ Очстка корзины """
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    # изменение БД
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    UsersModel(db.get_connection()).add_book(user[0], '')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    return render_template('shopping.html',
                           username=session['username'],
                           title='Моя корзина',
                           loged=True,
                           user=user,
                           books='',
                           alert=2,
                           disabled=True)
示例#17
0
def index():
    """ Главная страница """
    # загружаем списки книг и авторов
    books = BooksModel(db.get_connection()).get_all()
    authors = AuthorsModel(db.get_connection()).get_all()
    # страница для навторизованного пользователя
    if 'username' not in session:
        return render_template('main_page.html',
                               books=books,
                               title="MyBookShelf",
                               loged=False,
                               admin=False,
                               authors=authors)
    # страница для администратора
    if UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('main_page.html',
                               books=books,
                               title="MyBookShelf",
                               loged=True,
                               username=session['username'],
                               admin=True,
                               authors=authors)
    # страница для авторизованного пользователя
    return render_template('main_page.html',
                           books=books,
                           title="MyBookShelf",
                           loged=True,
                           username=session['username'],
                           authors=authors,
                           admin=False)
示例#18
0
def add_book_shopping(book_id):
    """ Добавление товара в корзину из интерфейса корзины """
    # ошибка, если пользователь не авторизован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    book = BooksModel(db.get_connection()).get(book_id)
    # изменение БД
    books = user[5] + '//' + str(book_id)
    num = 0
    for item in books.split('//'):
        if int(item) == book_id:
            num += 1
    if book[7] - num >= 0:
        UsersModel(db.get_connection()).add_book(user[0], books)
    return redirect('shopping')
示例#19
0
def buy_book(book_id):
    """ Добавление книги в корзину через интерфейс страницы книги """
    # если пользователь не авторизован, кидаем его на страницу входа
    if 'username' not in session:
        return redirect('login')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    book = BooksModel(db.get_connection()).get(book_id)
    # изменение БД
    if user[5]:
        books = user[5] + '//' + str(book_id)
    else:
        books = str(book_id)
    num = 0
    for item in books.split('//'):
        if int(item) == book_id:
            num += 1
    all_comments = []
    comments = Comment.query.filter_by(book_id=book_id).all()
    for comment in comments:
        all_comments.append(str(comment).strip('<> ').split(' !! '))
    author = AuthorsModel(db.get_connection()).exists(book[2])
    # добавление книги в корзину, если она есть на складе
    if book[7] - num >= 0:
        UsersModel(db.get_connection()).add_book(user[0], books)
        return render_template('book_info.html',
                               username=session['username'],
                               title=book[1],
                               loged=True,
                               book=book,
                               alert=1,
                               author=author,
                               comments=all_comments,
                               admin=UsersModel(db.get_connection()).is_admin(
                                   session['username']))
    # вывод сообщения, если книги нет на складе
    else:
        return render_template('book_info.html',
                               username=session['username'],
                               title=book[1],
                               loged=True,
                               book=book,
                               alert=2,
                               author=author,
                               comments=all_comments,
                               admin=UsersModel(db.get_connection()).is_admin(
                                   session['username']))
示例#20
0
 def get(self,uid):
     user = UsersModel.fetch_by_id(uid)
     try:
         record = user.projects
         if record:
             return marshal(record,project), 200
         return {}, 404
     except:
         return {"Message":"User does not exist"},404
示例#21
0
 def get(self,uid,pid):
     user = UsersModel.fetch_by_id(uid)
     try:
         record = user.projects
         for each in record:
             if each.id == pid:
                 return marshal(each, project), 200
         return {}, 404
     except:
         return {"Message":"User not found"},500
示例#22
0
    def sign_in():
        data = request.get_json()
        user = UsersModel.find_by_login(data['login'])
        if user and Controller.bycrpt.check_password_hash(
                user[0].password, data['password']):
            access_token = create_access_token(identity=user[0].login)
            return Controller.format_response({'token': access_token},
                                              status_code=200)

        return Controller.format_response(errors=11, status_code=401)
示例#23
0
 def delete(self,uid,pid):
     user = UsersModel.fetch_by_id(uid)
     record = user.projects
     for each in record:
         if each.id == pid:
             deleted = ProjectsModel.delete_by_id(pid)
             if deleted:
                 return {"Message": "Task deleted Successfully"}, 204
             return {"Message":"something went wrong"},500
     return {"Message":"Record not found"},404
示例#24
0
def register():
    """ Форма регистрации """
    form = RegisterForm()
    if form.validate_on_submit():
        # создать пользователя
        users = UsersModel(db.get_connection())
        #  проверка существования пользоавтеля с таким же именем
        if form.user_name.data in [u[1] for u in users.get_all()]:
            flash('Такой пользователь уже существует')
        else:
            users.insert(user_name=form.user_name.data,
                         email=form.email.data,
                         password_hash=generate_password_hash(
                             form.password_hash.data))
            # редирект на страницу авторизации
            return redirect(url_for('login'))
    return render_template("register.html",
                           title='Регистрация',
                           form=form,
                           loged=False)
示例#25
0
def order():
    """ Обработка заказа """
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    UsersModel(db.get_connection()).add_book(user[0], '')
    books = BooksModel(db.get_connection())
    # изменение БД
    if user[5]:
        for item in user[5].split('//'):
            books.buy_book(int(item), books.get(int(item))[7])
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    return render_template('shopping.html',
                           username=session['username'],
                           title='Моя корзина',
                           loged=True,
                           user=user,
                           books='',
                           alert=1,
                           disabled=True)
示例#26
0
def add_book_admin(book_id):
    """ Добавление книг на склад """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    # Изменение числа книг на складе
    book = BooksModel(db.get_connection()).get(book_id)
    BooksModel(db.get_connection()).add_book(book_id, book[7])
    # Редирект на страницу книги
    return redirect('book/' + str(book_id))
示例#27
0
def login(request):
	if request.method == 'POST':

		x = json.loads(request.body)
		err = {}

		user = x.get('username')
		password = x.get('password')

		if not user or len(user) > errors.MAX_USERNAME_LENGTH:
			err['errCode'] = errors.ERR_BAD_USERNAME
			return HttpResponse(json.dumps(err), content_type="application/json")

		if UsersModel.addUser(user,password) == 1:
			err['errCode'] = errors.SUCCESS
			err['count'] = UsersModel.objects.get(username=user).count;
			return HttpResponse(json.dumps(err), content_type="application/json")
		else:
			HttpResponse(json.dumps(UsersModel.login(user,password)), content_type="application/json")

	else:
		raise Http404
示例#28
0
def delete_book_admin(book_id):
    """ Удаление существующих книг """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    BooksModel(db.get_connection()).delete(book_id)
    # Удаление книги из всех корзин пользователей
    users = UsersModel(db.get_connection()).get_all()
    for item in users:
        books = item[5].split('//')
        if str(book_id) in books:
            k = []
            for i in range(len(books)):
                if books[i] == str(book_id):
                    k.append(i)
            for l in k:
                del books[l]
            '//'.join(books)
            UsersModel(db.get_connection()).add_book(item[0], books)
    # Редирект на главную страницу
    return redirect('index')
示例#29
0
def add(request):
	if request.method == 'POST':

		x = json.loads(request.body)
		err = {}

		user = x.get('username')
		password = x.get('password')

		if not user or len(user) > errors.MAX_USERNAME_LENGTH:
			err['errCode'] = errors.ERR_BAD_USERNAME
			return HttpResponse(json.dumps(err), content_type="application/json")

		if len(password)>constants.MAX_PASSWORD_LENGTH:
			err['errCode'] = errors.ERR_BAD_PASSWORD
			return HttpResponse(json.dumps(err), content_type="application/json")

		if UsersModel.addUser(user,password) == 1:
			err['errCode'] = errors.SUCCESS
			err['count'] = 1
			return HttpResponse(json.dumps(err), content_type="application/json")
		else:
			HttpResponse(json.dumps(UsersModel.addUser(user,password)), content_type="application/json")
示例#30
0
 def post(self,uid):
     args = projectParser.parse_args()
     dateformat = '%Y-%m-%d'
     title = args['title']
     description = args['description']
     status = 0
     userId = uid
     if UsersModel.fetch_by_id(uid) == None:
         return {"message":"User not found"},404
     if ProjectsModel.fetch_by_title(title):
         return 'project "{}" already exist'.format(title),409
     project = ProjectsModel(title=title, description=description,status=status,userId=userId)
     record = project.create_record()
     print(record)
     return record, 201
示例#31
0
def login(request):
    if request.method == "POST":
        request_data = json.loads(request.POST.keys()[0])
        try:
            responseInt = UsersModel.login(**request_data)
        except:
            print traceback.format_exc()
            raise
        if responseInt == ERR_BAD_CREDENTIALS:
            response_data = {"errCode": ERR_BAD_CREDENTIALS}
        elif responseInt > 0:
            response_data = {"errCode": SUCCESS, "count": responseInt}
        else:
            raise Exception("Bad response from server!")
        return HttpResponse(json.dumps(response_data), content_type="application/json")
    else:
        raise Exception("Request must be a post!")
示例#32
0
def add(request):
    try:
        if request.method == 'POST':
            request_data = json.loads(request.POST.keys()[0])
            responseInt = UsersModel.add(**request_data)
            if responseInt in [ERR_USER_EXISTS, ERR_BAD_USERNAME, ERR_BAD_PASSWORD]:
                response_data = {'errCode' : responseInt}
            elif responseInt > 0:
                response_data = {'errCode' : SUCCESS,
                                 'count' : responseInt}
            else:
                print responseInt, ' was the response int'
                raise Exception('Bad response from server!')
            return HttpResponse(json.dumps(response_data), content_type = "application/json")
        else:
            raise Exception('Request must be a post!')
    except:
        print traceback.format_exc()
示例#33
0
def edit_author_page(author_id):
    """ Редактирование информации о писателе """
    # проверка, авторизован ли пользователь
    if 'username' not in session:
        loged = False
    else:
        loged = True
    # ошибка, если такого автора нет в базе
    if not AuthorsModel(db.get_connection()).exists_id(str(author_id)):
        return render_template('error.html', loged=loged, title='Ошибка')
    books = BooksModel(db.get_connection())
    book = []
    author = AuthorsModel(db.get_connection()).get(author_id)
    books_author = author[4].split('//')
    for item in books_author:
        book.append(books.get_by_name(str(item)))
    if UsersModel(db.get_connection()).is_admin(session['username']):
        form = EditAuthorForm()
        if form.validate_on_submit():
            if form.bio.data:
                AuthorsModel(db.get_connection()).edit_bio(
                    author_id, form.bio.data)
            if form.picture.data is not None:
                filename = secure_filename(form.picture.data.filename)
                server_file = 'static/img/' + filename
                form.picture.data.save(server_file)
                AuthorsModel(db.get_connection()).edit_picture(
                    author_id, filename)
            return redirect('author/' + str(author_id))

        return render_template('edit_author.html',
                               title='Редактирование',
                               loged=loged,
                               admin=True,
                               form=form)

    return render_template('author_info.html',
                           title=author[1],
                           loged=loged,
                           author=author,
                           book=book,
                           admin=False)
示例#34
0
    def sign_up():
        data = request.get_json()
        password = Controller.bycrpt.generate_password_hash(
            data['password']).decode('utf-8')

        if UsersModel.find_by_login(data['login']):
            return Controller.format_response(errors=9, status_code=400)

        if UsersModel.find_by_email(data['email']):
            return Controller.format_response(errors=10, status_code=400)

        user = UsersModel(data['login'], data['name'], data['email'],
                          data['birthday'], password)
        user.insert()

        return Controller.format_response(status_code=201)
示例#35
0
def add_book():
    """ Добавление книги """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    form = AddBookForm()
    if form.validate_on_submit():
        # создать книгу
        books = BooksModel(db.get_connection())
        f = None
        all_books = BooksModel(db.get_connection()).get_all()
        for i in range(len(all_books)):
            if all_books[i][2] == form.author.data:
                f = all_books[i][0]
        if f:
            # добавить книгу в список произведений автора
            author = AuthorsModel(db.get_connection()).get_by_name(
                form.author.data)
            book_list = author[4] + '//' + form.name.data
            AuthorsModel(db.get_connection()).add_book(book_list, author[0])
        if form.pictures.data is not None:
            filename = secure_filename(form.pictures.data.filename)
            server_file = 'static/img/' + filename
            form.pictures.data.save(server_file)
        books.insert(name=form.name.data,
                     author=form.author.data,
                     year=form.year.data,
                     pages=form.pages.data,
                     pictures=filename,
                     bio=form.bio.data,
                     stock=form.stock.data,
                     price=form.price.data)
        # редирект на главную страницу
        return redirect('index')
    return render_template("add_book.html",
                           title='Добавить книгу',
                           form=form,
                           loged=True)