Exemple #1
0
def board_write(request):
    if request.method == "POST":
        if not request.body is None:
            if User.objects.filter(user = request.POST['user']).exists() :
                d = timezone.localtime(timezone.now())
                board = Board(user = User.objects.get(user = request.POST['user']),
                              title = request.POST['title'],
                              content = request.POST['content'],
                              cost = request.POST['cost'],
                              item = request.POST['item'],
                              date = d.strftime('%Y-%m-%d')
                              )
                board.save()

                if not request.FILES.getlist('image') is None:
                    for f in request.FILES.getlist('image'):
                        boardImage = BoardImage(board = board,
                                                image = f
                            )
                        boardImage.save()
                return JSONResponse('')
            else :
                return HttpResponse(status=400)
        else :
            return HttpResponse(status=400)
    else :
        return HttpResponse(status=400)
Exemple #2
0
def generate_board(game_id):
    boggle_board = Board.query.filter_by(id=game_id).first()

    if not boggle_board:
        board_dice = random.sample(Config.DICE, len(Config.DICE))
        board = []

        for _ in range(4):
            board.append([random.choice(board_dice.pop()) for __ in range(4)])

        boggle_board = Board(board)

        db.session.add(boggle_board)
        db.session.commit()

    board = boggle_board.generate_board()

    start = time.time()
    words = solver.generate_words(boggle_board)
    time_taken = f"{(time.time() - start) * 1000:.4f}"

    return {
        "game_id": boggle_board.id,
        "board": board,
        "words": words,
        "time_taken": time_taken
    }
Exemple #3
0
def post_board():
    form = BoardForm()  # need to build a form
    form['csrf_token'].data = request.cookies['csrf_token']
    if form.validate_on_submit():
        new_board = Board()
        form.populate_obj(new_board)
        db.session.add(new_board)
        db.session.commit()
        return new_board.to_dict()
    return {"errors": "Error occured"}
Exemple #4
0
def create_board():
    data = request.json
    data['description'] = " "
    new_board = Board(title=data['title'],
                      color=data['color'],
                      description=data['description'],
                      user_id=data['userId'])
    db.session.add(new_board)
    db.session.commit()
    format_board = new_board.to_dict()
    return {"board": format_board}
def add_board(request):
    print('add_board_test1')
    #게시물 작성 후 리다이렉트
    print(request.POST.get("board_title"))
    print(request.POST.get("board_content"))
    board = Board(
        board_title=request.POST.get("board_title"),
        board_content=request.POST.get("board_content"),
    )
    # db에 반영
    board.save()
    # 게시물 목록으로 리다이렉트
    return redirect("/get_board_list")
Exemple #6
0
def bulletin_board():
    admin_id = g.admin_id  # 获取管理员的id
    admin_name = session.get("username")  # 获取管理员的名字
    ip_addr = request.remote_addr  # 获取管理员登录的ip
    req_dict = request.get_json()
    title = req_dict.get("title")
    content = req_dict.get("content")

    # 校验参数
    # 参数完整的校验
    if not all([title, content, ip_addr]):
        return jsonify(re_code=400, msg="参数不完整")

    # 将数据保存
    board = Board(title=title, content=content, admin_id=admin_id)

    try:
        detail = "管理员:%s --> id:%s ; 新发送了公告 <%s> " % (admin_name, admin_id,
                                                      title)
        admin_operate_log = AdminOperateLog(admin_id=admin_id,
                                            ip=ip_addr,
                                            detail=detail)
        db.session.add(board)
        db.session.add(admin_operate_log)
        db.session.commit()
        return jsonify(re_code=200, msg="保存数据成功")
    except:
        db.session.rollback()
        return jsonify(re_code=400, msg="保存数据失败")
Exemple #7
0
    def decorated_view(*args, **kwargs):
        board_id = kwargs['board_id']

        if not Board.objects(id=board_id, is_deleted=False):
            return jsonify(message='없는 게시판입니다.'), 404

        return f(*args, **kwargs)
Exemple #8
0
def bulletin_board():
    req_data = request.get_json()

    admin_id = g.admin_id

    title = req_data.get("title")
    content = req_data.get("content")
    if not all([admin_id, title, content]):
        return jsonify(msg="参数不完整", code=4000), 400

    # 存的是 公告
    board = Board(title=title, content=content, admin_id=admin_id)
    db.session.add(board)

    # 存操作日志
    ip = request.remote_addr
    detail = "添加了公告:" + title
    aol = AdminOperateLog(admin_id=admin_id, ip=ip, detail=detail)
    db.session.add(aol)

    try:
        db.session.commit()
    except Exception as e:
        print(e)
        db.session.rollback()
        return jsonify(msg="提交不成功", code=4001), 400
    return jsonify(msg="提交成功", code=200), 200
Exemple #9
0
def bulletin_board():
    admin_id = g.admin_id  # 获取管理员的id
    ip_addr = request.remote_addr  # 获取管理员登录的ip
    req_dict = request.get_json()
    title = req_dict.get("title")
    content = req_dict.get("content")

    # 校验参数
    # 参数完整的校验
    if not all([title, content, ip_addr]):
        return jsonify(code=400, msg="参数不完整")

    # 将数据保存
    board = Board(title=title, content=content, admin_id=admin_id)

    try:
        detail = "发送了新公告: %s " % title
        admin_operate_log = AdminOperateLog(admin_id=admin_id, ip=ip_addr, detail=detail)
        db.session.add(board)
        db.session.add(admin_operate_log)
        db.session.commit()
        return jsonify(code=200, msg="保存数据成功")
    except Exception as e:
        print(e)
        db.session.rollback()
        return jsonify(code=400, msg="保存数据失败")
Exemple #10
0
def cast_vote(search_name):
    if not request.json or (not ('voter' in request.json)
                            and not ('ballot' in request.json)
                            and not ('election_id' in request.json)):
        return bad_request('Не все заголовки')
    # Проверка существования такого голосования
    election = Election.query.filter_by(search_name=search_name).first()
    if election is None:
        return not_found('Такого голосования нет')
    # Проверка доступа
    voter = Voter.query.filter_by(election_id=election.election_id).filter_by(
        e_mail=request.json['voter']['e_mail']).first()
    if not voter:
        return unauthorized('Неверный e-mail адрес')
    if not voter.password == request.json['voter']['password']:
        return unauthorized('Неверный пароль')
    # Проверка, существует ли уже бюллетень от этого пользователя
    old_ballot = Board.query.filter_by(
        election_id=election.election_id).filter_by(
            voter_id=voter.voter_id).first()
    if not (old_ballot is None):
        db.session.delete(old_ballot)
    # Добавление бюллетеня
    ballot = Board(election_id=election.election_id,
                   voter_id=voter.voter_id,
                   voter_identifier=voter.voter_identifier,
                   ballot_dict=request.json['ballot'])
    db.session.add(ballot)
    db.session.commit()
    return make_response(jsonify({'status': 'OK'}), 200)
Exemple #11
0
def create_board(name):
    board = session.query(Board).filter_by(name=name).first()
    if not board:
        if 'session' in web_session:
            user_id = redisSession.open_session(web_session['session'])
            if user_id:
                board = Board(
                    name = name,
                    master = user_id
                )
                save(board)
                response = {
                    'status': 'success',
                    'message': 'Create board successfully'
                }
                return response, 201
            else:
                response = {
                    'status': 'fail',
                    'message': 'Permission denied'
                }
                return response, 403
        else:
            response = {
                'status': 'fail',
                'message': 'Login required'
            }
            return response, 403
    else:
        response = {
            'status': 'fail',
            'message': 'Already existed board'
        }
        return response, 409
Exemple #12
0
def test_board(app, db, dummy_user):
  board = Board(
    name='My board',
    owner_id=dummy_user.id
  )

  assert board.name == 'My board'
  assert board.owner_id == dummy_user.id
Exemple #13
0
 def get_category(self):
     """
     게시판 카테고리 조회 API
     :return: 게시판 카테고리
     """
     boards = Board.objects(is_deleted=False)
     board_category = BoardCategorySchema(many=True).dump(boards)
     return {'category': board_category}, 200
Exemple #14
0
def add_board():
    form = BoardAddForm()
    if form.validate_on_submit():
        b = Board(ref=form.ref.data, description=form.description.data)
        db.session.add(b)
        db.session.commit()
        return redirect(url_for('main.board_b', board=b.ref))
    return render_template('add_board.html', form=form)
Exemple #15
0
def create_board():
    """Create the board needed for the foreign key constraint."""
    db.session.add(
        Board(
            name='board_name',
            url=f"https://trello.com/b/{default_board_id}",
            trello_board_id=default_board_id
        )
    )
def seed_boards(data):
    for exp in data:
        try:
            for b in data[exp].get("boards"):
                board = Board.query.get(b) or Board()
                board.id = b
                board.expansion_id = exp
                board.is_thematic = data[exp]["boards"][b].get("thematic")
                db.session.add(board)
        except TypeError:
            pass
Exemple #17
0
  def post(self):
    data = parser.parse_args()
    name = data['name']
    owner_id = data['owner_id']

    try:
      new_board = BoardModel(
        name=name,
        owner_id=uuid.UUID(owner_id)
      )

      new_board.save()

      return {
        'board': marshal(new_board, permitted)
      }, HTTPStatus.CREATED
    except Exception as error:
      return {
        'message': str(error)
      }, HTTPStatus.INTERNAL_SERVER_ERROR
Exemple #18
0
def create_board():
    form = CreateThreadForm()

    if form.validate_on_submit():
        bn = Board(title=form.name.data, body=form.description.data)
        db.session.add(bn)
        db.session.commit()
        flash(_('Your board has been created.'))
        return redirect(url_for('main.index'))

    return render_template('create_board.html', form=form)
Exemple #19
0
def test_board_model(session):
    board = Board(
        name='Memory Card Game',
        global_best=20
    )
    session.add(board)
    session.commit()

    getboard = Board.query.filter_by(name=board.name).first()

    assert getboard.name is board.name
Exemple #20
0
def boards():
    currentboards = current_user.created_boards
    form = BoardForm()
    if form.validate_on_submit():
        board = Board(name=form.name.data, creator=current_user)
        db.session.add(board)
        db.session.commit()
        flash(_('Your board has been created'))
        return redirect(url_for('main.boards'))

    return render_template('boards.html', boards=currentboards, form=form )
def newboard():
    form = NewBoardForm()
    if form.validate_on_submit():
        board = Board(name=form.name.data)
        current_user.boards.append(board)
        db.session.add(board)
        db.session.commit()
        flash('New board created!')
        return redirect(url_for('index'))
    return render_template('newboard.html',
                           title='Create new board',
                           form=form)
Exemple #22
0
def new_board():
    board = request.get_json()

    error = validator('board', board)
    if error:
        return jsonify(error)

    add_board = Board(board_name=board.get("board_name"),
                      user_id=session["user_id"])
    db.session.add(add_board)
    db.session.commit()

    return redirect("/")
Exemple #23
0
    def delete(self, board_id):
        """
        게시판 삭제 API
        :param board_id: 게시판 objectId
        :return: message
        """
        if not g.master_role:
            return jsonify(message='권한이 없는 사용자입니다.'), 403

        board = Board.objects(id=board_id, is_deleted=False).get()
        board.update(is_deleted=True)

        return jsonify(message='삭제되었습니다.'), 200
Exemple #24
0
def board_write(request):
    if request.method == "POST":
        if not request.body is None:
            if User.objects.filter(user=request.POST['user']).exists():
                d = timezone.localtime(timezone.now())
                board = Board(user=User.objects.get(user=request.POST['user']),
                              title=request.POST['title'],
                              content=request.POST['content'],
                              cost=request.POST['cost'],
                              item=request.POST['item'],
                              date=d.strftime('%Y-%m-%d'))
                board.save()

                if not request.FILES.getlist('image') is None:
                    for f in request.FILES.getlist('image'):
                        boardImage = BoardImage(board=board, image=f)
                        boardImage.save()
                return JSONResponse('')
            else:
                return HttpResponse(status=400)
        else:
            return HttpResponse(status=400)
    else:
        return HttpResponse(status=400)
Exemple #25
0
 def post(data):
     board = Board()
     board.title = data.get('title')
     board.description = data.get('description')
     board.save()
     access = BoardAccessMatrix()
     access.board = board
     access.user = User.objects.get(email=data.get('email'))
     access.level = 'admin'
     access.save()
     return board
def board_submit():
    data = request.get_json()
    name = data["name"]
    sounds = data["sounds"]
    board_id = data["board_id"]

    if board_id == -1:
        # neues board erstellen
        if not name:
            flash('Kein Name.', 'danger')
            return "/admin/boards"

        board = Board.query.filter_by(name=name).first()
        if board:
            flash('Dieser Name existiert bereits.', 'danger')
            return "/admin/boards"

        # add to database
        new_board = Board(name=name)
        db.session.add(new_board)
        db.session.commit()
        for s in sounds:
            sound = Sound.query.filter_by(id=s).first()
            if sound:
                new_board.sounds.append(sound)
                db.session.commit()
        flash('Board erstellt.', 'success')
    else:
        # board bearbeiten
        board = Board.query.filter_by(id=board_id).first()
        if name:
            board.name = name
            db.session.commit()
        for s in board.sounds:
            if not s.id in sounds:
                sound = Sound.query.filter_by(id=s.id).first()
                board.sounds.remove(sound)
                db.session.commit()
        for s_id in sounds:
            sound = Sound.query.filter_by(id=s_id).first()
            if not sound in board.sounds:
                board.sounds.append(sound)
                db.session.commit()
        flash('Board bearbeitet.', 'success')

    return "/admin/boards"
Exemple #27
0
    def test_suite(self, num_runs=None, do_duplicate_analysis=False):
        """
        Test suite to drill down and time individual runs of the algorithm to get a closer look at the core algorithm
        excluding overhead. Also performs some basic analysis of how run times are distributed

        :param num_runs: number of test runs to do
        :param do_duplicate_analysis:
        :return:
        """
        print("\nStarting individual test suite...")

        if not num_runs:
            num_runs = self.runs

        run_times = []
        interesting_dice = []
        for run in range(num_runs):
            start = time.time()
            board = Board()
            word_list = self.solver.generate_words(board,
                                                   do_duplicate_analysis)
            end = time.time()

            time_taken = end - start

            if time_taken < 0.00000111111111111111:
                """
                the fact that the time is so low is not due to a super efficient algo, rather it is a quirk in the 
                scheduler and is to be expected, but doesnt really matter
                """
                interesting_dice.append((board.dice, time_taken))

            run_times.append(end - start)
            del word_list, start, end, board

        print(
            f"\tAverage run time over {num_runs} random boards was: {(sum(run_times) / len(run_times)) * 1000:.{Config.PRECISION}f}ms (total:{sum(run_times):.{Config.PRECISION}f}s)"
        )
        print(
            f"\t\tMaximum run time was {max(run_times) * 1000:.{Config.PRECISION}f}ms"
        )
        print(f"\t\tMinimum run time was {min(run_times) * 1000}ms")
Exemple #28
0
    def overall_test(self, number_of_runs=None):
        """
        Run the algo `number_of_runs` times to see how the application works as a whole
        :return:
        """
        print("\nStarting overall test...")

        if not number_of_runs:
            number_of_runs = self.runs

        start = time.time()

        for run in range(number_of_runs):
            board = Board()
            word_list = self.solver.generate_words(board)
        end = time.time()

        print(
            f"\tAverage across {number_of_runs} runs: {((end - start) * 1000) / number_of_runs:.{Config.PRECISION}f}ms"
        )
Exemple #29
0
    def update(self, board_id):
        """
        게시판 이름 수정 API
        :param board_id: 게시판 objectId
        :return: message
        """
        try:
            if not g.master_role:
                return jsonify(message='권한이 없는 사용자입니다.'), 403

            data = BoardUpdateSchema().load(json.loads(request.data))
            board = Board.objects(id=board_id, is_deleted=False).get()

            if board.is_duplicate(data['name']):
                return jsonify(message='이미 등록된 게시판입니다.'), 409

            board.update(**data)
            return '', 200

        except ValidationError as err:
            return err.messages, 422
Exemple #30
0
def write():
    form = BoardForm()
    if form.validate_on_submit():
        if form.filename.data == None:
            filename = ''
        else:
            filename = secure_filename(form.filename.data.filename)
            form.filename.data.save(current_app.config['UPLOAD_FOLDER'] +
                                    filename)
        user = User.query.filter_by(
            username=current_user.username).first_or_404()
        board = Board(author=current_user,
                      title=form.title.data,
                      body=form.body.data,
                      filename=filename)
        db.session.add(board)
        db.session.commit()
        return redirect(url_for('main.board'))
    return render_template('edit_profile.html',
                           title=_('Write anything!'),
                           form=form,
                           board=True)
Exemple #31
0
def admin():
 
 
    users = User.query.all()
    if len(users) == 0:
        u = User(username='******')
        u.set_password('secret-password')
        db.session.add(u)
        db.session.commit()
        
    boards = Board.query.all()
    if len(boards) == 0:
        b = Board(ref='b', description='Random talks')
        db.session.add(b)
        db.session.commit()
    
    # try:
    #     file = open('test.txt')  # наличие флаги будет флагом
    # except IOError as e:
        # загружаем из бд картинки в систему
    #     pass
    # else:
    #     print('Not first start, okay.')
 
 
    if current_user.is_authenticated:
        return redirect(url_for('main.index'))
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.username.data).first()
        if user is None or not user.check_password(form.password.data):
            flash('Invalid username or password')
            return redirect(url_for('main.admin'))
        login_user(user, remember=form.remember_me.data)
        next_page = request.args.get('next')
        if not next_page or url_parse(next_page).netloc != '':
            next_page = url_for('main.index')
        return redirect(next_page)
    return render_template('login.html', title='Sign In', form=form)
Exemple #32
0
def refresh_boards():
    """Refresh from Trello the boards of all organizations"""
    for org in Organization.query.all():
        for board_id in trello.get_board_ids_by_organization(org.name):
            Board.get_or_create(trello.get_board_by_id(board_id))
            db.session.commit()