Exemple #1
0
def list(request):
    board = Board()
    board.user.id = request.POST.get('user.id')
    board.tilte = request.POST['title']
    board.content = request.POST['content']

    return render(request, 'board/list.html')
Exemple #2
0
def insert(request):
    if 'authuser' not in request.session:
        return HttpResponseRedirect('/board')

    board = Board()

    board.title = request.POST['title']
    board.content = request.POST['content']
    board.user = User(**request.session['authuser'])

    # 그룹번호 1부터 시작
    groupno = int(request.POST['groupno'])
    if groupno == 0:
        value = Board.objects.aggregate(max_groupno=Max('groupno'))
        groupno = 1 if value[
            'max_groupno'] is None else value['max_groupno'] + 1
    board.groupno = groupno

    orderno = 0 if request.POST['groupno'] == '0' else int(
        request.POST['orderno'])
    Board.objects.filter(groupno=groupno).filter(
        orderno__gte=orderno + 1).update(orderno=F('orderno') + 1)
    board.orderno = orderno + 1

    board.depth = 0 if request.POST['groupno'] == '0' else int(
        request.POST['depth']) + 1

    board.save()

    page = request.POST['page']
    kwd = request.POST['kwd']

    return HttpResponseRedirect(f'/board/list?page={page}&kwd={kwd}')
Exemple #3
0
def create_board(request, success_url=None):
    result = {}
    if request.method == 'POST':
        data = request.POST
        
        user_id = request.user._id
        name = data.get('name')
        category = data.get('category')

        existedBoard = Board.objects(name=name).count()
        
        if existedBoard :
            print 'board is existed!'
            result['hasBoard'] = 'board is existed!'
            #return render(request,'board/create_board.html',result)
        else:
            board = Board(user_id = user_id, name = name, category = category
                          ,slug = slugfy(name))
            board.save() 
        
            success_url = success_url or get_default_redirect(request)
            return redirect(success_url)
    else:
        pass
    return render(request,'board/create_board.html',result)
Exemple #4
0
def create_board(request):

    if request.POST:
        form = BoardForm(request.POST)

        if form.is_valid():

            new_board = Board()
            new_board.save()

            welcomePostit = PostIt(text=_("Welcome! Move me! Edit me! Delete me!"),x=120,y=50, board=new_board, width=100,
                                   height=100)
            sharePostit = PostIt(text=_("Share this board and work together in realtime!")+ "\n\nhttp://www.boardino.com/"+new_board.hash,
                            x=200,
                            y=300,
                            board=new_board,
                            width=220,
                            height=100,
                            back_color='#FF69B4')
            comeBackPostit = PostIt(text=_("Come back to check new features!"),x=550,y=50, board=new_board,
                                    width=150,
                                    height=100,
                                    back_color='#ADFF2F')
            welcomePostit.save()
            sharePostit.save()
            comeBackPostit.save()

            return HttpResponseRedirect("/"+new_board.hash)

    return HttpResponseRedirect("/")
Exemple #5
0
    def test_get_posts_optional_fields(self):
        """Get posts that does have every field"""
        b = Board(title='hi', description='hello')
        b.save()

        posts = [
            Post(associated_board=b, message='hi', created_at=timezone.now()),
            Post(associated_board=b,
                 name='shari',
                 message='cool',
                 created_at=timezone.now() - timezone.timedelta(1)),
            Post(
                associated_board=b,
                name='joseph',
                photo=Image(name='i', photo=bytearray('b', 'utf-8')).save(),
                created_at=timezone.now() - timezone.timedelta(2),
            ),
        ]
        exp = []
        for p in posts:
            exp.append(get_post_dict(p))
            p.save()

        res = self.client.get(
            reverse('board:posts-get'),
            {
                'board': str(b.uuid),
                'index': '0',
                'amount': '10',
            },
            HTTP_ACCEPT='application/json',
        )
        self.assertEqual(res.json(), exp)
Exemple #6
0
def reply(request, id=0):
    # 로그인 체크
    if check_authuser(request) is None:
        return HttpResponseRedirect('/user/loginform')
    else:
        if request.method == 'GET':
            return render(request, 'board/write.html')
        elif request.method == 'POST':
            board = Board.objects.get(id=id)
            # query set 예제
            # groupno = 1이고 orderno >=1 의
            # 게시물의 order_no를 1씩 증가
            # __gt, __lt, __gte, __lte
            reply_board = Board()
            reply_board.title = request.POST['title']
            reply_board.content = request.POST['content']
            reply_board.user = User.objects.get(id=request.session['authuser']['id'])
            reply_board.groupno = board.groupno
            # value = Board.objects.filter(groupno=board.groupno).filter(depth=board.depth+1).aggregate(max_orderno=Max('orderno'))
            # max_orderno = 0 if value["max_orderno"] is None else value["max_orderno"]
            reply_board.orderno = board.orderno + 1
            reply_board.depth = board.depth + 1
            reply_board.save()
            # Board.objects.filter(groupno=board.groupno).filter(orderno=board.orderno).update(depth=F('depth') + 1)
            return HttpResponseRedirect('/board/1')
Exemple #7
0
def insert(request):
    fname = ""
    fsize = 0
    if "file" in request.FILES:
        file = request.FILES["file"]
        fname = file.name
        fsize = file.size
        fp = open("%s%s" % (UPLOAD_DIR, fname), "wb")
        for chunk in file.chunks():
            fp.write(chunk)
            fp.close()

    dto = Board(writer=request.POST["writer"], title=request.POST["title"],
                content=request.POST["content"], filename=fname, filesize=fsize,
                video_url=request.POST["video_url"],
                section_school=request.POST["section_school"],
                section_subject=request.POST["section_subject"],
                section_semester=request.POST["section_semester"],
                grade=request.POST["grade"],
                th_high=request.POST["th_high"],
                th_medium=request.POST["th_medium"],
                th_default=request.POST["th_default"]
                )
    dto.save()

    return redirect("/")
Exemple #8
0
def insert(request):
    # 파일 업로드 작업
    fname = ""
    fsize = 0
    # 업로드된 파일이 있으면
    if "file" in request.FILES:
        # <input type="file">태그의 name
        file = request.FILES["file"]
        # 첨부파일의 이름
        fname = file._name

        # wb : 이진파일 쓰기 모드
        fp = open("%s%s" % (UPLOAD_DIR, fname), "wb")
        # 파일을 몇개의 뭉치로 나눠서 저장
        for chunk in file.chunks():
            fp.write(chunk)
        fp.close()

        # 첨부파일의 크기(업로드 완료 후 계산)
        fsize = os.path.getsize(UPLOAD_DIR + fname)

    vo = Board(writer=request.POST["writer"],
               title=request.POST["title"],
               content=request.POST["content"],
               filename=fname,
               filesize=fsize)

    # insert query가 실행됨
    vo.save()
    # django의 콘솔에 출력됨
    print(vo)
    # 목록으로 이동
    return redirect("/")
Exemple #9
0
def reply(request):
    authuser = request.session.get('authuser')
    if authuser is None:
        # 유저가 아닌 접근이므로. 비정상 접근이거나 세션 해제된 상태.
        return HttpResponseRedirect('/')

    title = request.POST.get('title', '')
    contents = request.POST.get('contents', '')

    g_no = request.POST.get('g_no', 0)
    o_no = request.POST.get('o_no', 0)
    depth = request.POST.get('depth', 0)

    user = User.objects.get(id=authuser['id'])

    # 저장 처리
    board = Board()
    board.title = title
    board.contents = contents
    board.user = user
    board.g_no = int(g_no)
    board.o_no = int(o_no) + 1
    board.depth = int(depth) + 1
    board.save()

    # ret = Board.reply(data)
    # if ret != 1:
    #    return HttpResponse('오류 발생')

    return HttpResponseRedirect('/board/')
Exemple #10
0
def write_reply(request, parent_id):
    authuser = check_login_auth(request)
    if authuser is None:
        return HttpResponseRedirect('/user/loginform')

    board = Board()

    parent = Board.objects.get(id=parent_id)

    groupno = parent.groupno
    orderno = parent.orderno + 1
    depth = parent.depth + 1

    results = Board.objects.filter(groupno=groupno).filter(
        orderno__gte=orderno).update(orderno=F('orderno') + 1)

    title = request.POST['title']
    content = request.POST['content']
    userid = request.session['authuser']['id']

    board.title = title
    board.content = content
    board.user_id = userid
    board.groupno = groupno
    board.orderno = orderno
    board.depth = depth

    board.save()

    return HttpResponseRedirect('/board')
Exemple #11
0
def add(request):
    add_up = Board(pwd=request.POST['pwd'],
                   writer=request.POST['writer'],
                   subject=request.POST['subject'],
                   content=request.POST['content'])

    add_up.save()
    return redirect('/board')
Exemple #12
0
def write_board(request):
	write_data = Board (writer = request.POST.get('_writer', False),
						title = request.POST.get('_title', False),
						board_contents = request.POST.get('_board_contents', False),
						board_date = timezone.now()
						)
	write_data.save()

	url = '/board/'
	return HttpResponseRedirect(url) 
Exemple #13
0
 def create(self, request):
     try:
         board = Board(name=request.data['name'], owner=request.user)
         board.save()
         board.members.add(request.user)
         board.moderators.add(request.user)
     except Exception as e:
         if hasattr(e, 'message'):
             return Response({"success": False, "error": e.message})
         else:
             return Response({"success": False, "error": str(e)})
     return Response(BoardSerializer(board).data)
Exemple #14
0
    def test_board_post_connections(self):
        """Make sure that posts to a board are properly associated and posts can be found."""
        i1 = Image(name="1", photo=bytearray("1", "utf-8"))
        i2 = Image(name="2", photo=bytearray("2", "utf-8"))
        i3 = Image(name="3", photo=bytearray("3", "utf-8"))
        i1.save()
        i2.save()
        i3.save()

        b1 = Board(title="foo", description="bar", bg=i1)
        b2 = Board(title="foo2", description="bar", bg=i2)
        b1.save()
        b2.save()

        p1 = Post(associated_board=b1, name="a", message="b")
        p2 = Post(associated_board=b1, name="a", photo=i3)
        p3 = Post(associated_board=b2, name="a", message="b")
        p4 = Post(associated_board=b1, name="a", message="b")
        p1.save()
        p2.save()
        p3.save()
        p4.save()

        self.assertQuerysetEqual(b1.post_set.all(), [p1, p2, p4],
                                 ordered=False)
        self.assertQuerysetEqual(b2.post_set.all(), [p3], ordered=False)
Exemple #15
0
def insert(request):
    fname=''
    fsize =0
    if 'file' in request.FILES:
        file = request.FILES['file']
        fname = file._name
        with open('%s%s' % (UPLOAD_DIR,fname),'wb') as fp:
            for chunck in file.chuncks():
                fp.write(chunck)
        fsize = os.path.getsize(UPLOAD_DIR + fname)
    row = Board(writer=request.POST['writer'], title=request.POST['title'], content = request.POST['content'],
                filename=fname, filesize=fsize)
    row.save()
    return redirect('/')
Exemple #16
0
def write(request):
    authuser = request.session.get('authuser')
    if authuser is None:
        # 유저가 아닌 접근이므로. 비정상 접근이거나 세션 해제된 상태.
        return HttpResponseRedirect('/')

    title = request.POST.get('title', '')
    contents = request.POST.get('contents', '')

    user = User.objects.get(id=authuser['id'])

    max_gno = Board.objects.aggregate(g_no=Max('g_no'))['g_no']
    if max_gno is None or max_gno == '':
        max_gno = 0

    # 저장 처리
    board = Board()
    board.title = title
    board.contents = contents
    board.user = user
    board.g_no = int(max_gno) + 1
    board.save()

    # board = Board(title=title, contents=contents, user=user)
    # board.save()

    # ret = Board.insert(data)
    # if ret != 1:
    #     return HttpResponse('오류 발생')

    return HttpResponseRedirect('/board/')
def board_edit(request, board_id=None):

    user = request.user.pk
    user_type = request.user.profile.type

    if board_id:
        board = get_object_or_404(Board, pk=board_id)
    else:
        board = Board()

    if request.method == "POST":
        # POST 된 request 데이터를 가지고 Form 생성
        form = BoardForm(request.POST, instance=board)
        if form.is_valid():
            board = form.save(commit=False)
            board.board_id = Board(board_id)
            board.writer = User(user)
            if not board_id:
                board.category = user_type
            board.save()
            # request 없이 페이지 이동만 한다.
        return redirect('board:list')
    else:
        # book instance에서 Form 생성
        form = BoardForm(instance=board)
        # 사용자의 request를 가지고 이동한다.
        return render(request, 'board/board_edit.html',
                      dict(form=form, board=board))
Exemple #18
0
    def test_post_creation_combinations(self):
        """Make sure that creating posts in different combinations doesn't break anything."""
        i1 = Image(name="1", photo=bytearray("1", "utf-8"), uuid=uuid.uuid4())
        i2 = Image(name="2", photo=bytearray("2", "utf-8"))
        i3 = Image(name="3", photo=bytearray("3", "utf-8"))
        i4 = Image(name="2", photo=bytearray("2", "utf-8"))
        i5 = Image(name="3", photo=bytearray("3", "utf-8"))
        i1.save()
        i2.save()
        i3.save()
        i4.save()
        i5.save()

        b1 = Board(title="foo", description="bar", bg=i1)
        b2 = Board(title="green eggs", description="and ham")
        b1.save()
        b2.save()

        # just make sure that none of these throw an exception when creating
        p1 = Post(associated_board=b1, message="post1")
        p2 = Post(associated_board=b1, name="author2", photo=i2)
        p3 = Post(associated_board=b1, photo=i3)
        p4 = Post(associated_board=b1,
                  name="author4",
                  message="post4",
                  photo=i4)
        p5 = Post(associated_board=b1, message="post5", photo=i5)

        p1.save()
        p2.save()
        p3.save()
        p4.save()
        p5.save()
Exemple #19
0
    def test_board_post_image_connections(self):
        """Make sure that boards and posts and their connections to an image does not throw errors."""
        b1 = Board(title="board1", description="bar")
        b1.save()

        i2 = Image(name="foo", photo=bytearray("bar", "utf-8"))
        i3 = Image(name="ham", photo=bytearray("sam", "utf-8"))
        i2.save()
        i3.save()

        b2 = Board(title="board2", description="foo", bg=i2)
        b2.save()

        self.assertIs(b2.bg, i2)
        self.assertIs(i2.board, b2)

        p1 = Post(associated_board=b2, name="p1", message="m1")
        p2 = Post(associated_board=b2,
                  name="p1",
                  message="m1",
                  photo=Image(name="spam", photo=bytearray("eggs",
                                                           "utf-8")).save())
        p3 = Post(associated_board=b2, name="p1", message="m1", photo=i3)
        p1.save()
        p2.save()
        p3.save()

        self.assertIs(p3.photo, i3)
        self.assertIs(i3.post, p3)
        self.assertIs(p2.photo.name, "spam")
Exemple #20
0
def add(request):
    board_txt = Board()
    board_txt.title = request.POST['title']
    board_txt.content = request.POST['content']
    board_txt.user_id = request.session['authuser']['id']
    board_txt.hit = 0
    board_txt.name = request.session['authuser']['name']

    board_txt.save()

    return HttpResponseRedirect('/board')
Exemple #21
0
def write(request):
    board = Board()
    board.title = request.POST['title']
    board.content = request.POST['content']
    board.user = User.objects.get(id=request.session['authuser']['id'])
    board.groupno = counter_max()
    board.save()
    return HttpResponseRedirect('/board')
Exemple #22
0
def new_board(request):
	form = BoardForm()
	if request.method == 'POST':
		form = BoardForm(request.POST)
		if form.is_valid():
			title = form.cleaned_data['title']
			desc = form.cleaned_data['description']
			board = Board(title=title, desc=desc)
			board.save()
			return HttpResponseRedirect('/board')

	context = {
		'form': form
	}
	return render(request, 'board_new.html', context)
Exemple #23
0
def reply(request, id=0):
    original = Board.objects.get(id=id)

    board = Board()
    board.title = request.POST['title']
    board.content = request.POST['content']
    board.groupno = original.groupno
    board.orderno = original.orderno
    board.depth = original.depth + 1
    board.user_id = request.session['authuser']['id']

    Board.objects.filter(groupno=original.groupno).filter(
        orderno__gte=original.orderno).update(orderno=F('orderno') + 1)
    board.save()

    return HttpResponseRedirect('/board')
Exemple #24
0
def settings(request):
    if request.method == 'POST':
        form = PlayersChoiceForm(request.POST)

        if form.is_valid():
            p1 = form.cleaned_data.get('p1')
            p2 = form.cleaned_data.get('p2')
            if p1 == p2:
                messages.error(request,
                               'You cannot play with both the same player')
                return redirect('/board/game/settings')
            else:
                if (p1.isAI):
                    p1.init_ai(1)

                if (p2.isAI):
                    p2.init_ai(2)

            board_set = Board.objects.filter(name="game")
            if len(board_set) < 1:
                board = Board.create_and_init_board("game", 4)
                board.save()
            else:
                board = board_set[0]

            board.p1 = p1
            board.p2 = p2
            board.save()
            return redirect('game')
    else:
        form = PlayersChoiceForm()
        return render(request, 'board/settings.html', {'form': form})
Exemple #25
0
def update(request):
    id = request.POST['idx']
    row_src= Board.objects.get(idx=id)
    fname = row_src.filename
    fsize = row_src.filesize
    if 'file' in request.FILES:
        file = request.FILES['file']
        fname = file._name
        with open('%s%s' %(UPLOAD_DIR, fname),'wb')as fp:
            for chunck in file.chuncks():
                fp.write(chunck)
        fsize = os.path.getsize(UPLOAD_DIR+fname)
    row_new= Board(idx=id, writer=request.POST['writer'], title=request.POST['title'], content=request.POST['content'],
                   filename=fname, filesize=fsize)
    row_new.save()
    return redirect('/')
Exemple #26
0
def write_create(request):
    if request.method == 'POST' and request.session.get('user', False):
        title = request.POST['title']
        author = get_object_or_404(CustomUser, username=request.session['user'])
        content = request.POST['content']

        write = Board(
            title = title,
            author = author,
            content = content,
        )
        write.save()

        return redirect('write_read')
    else:
        return render(request, 'write/create.html')
Exemple #27
0
def game(request):
    board_set = Board.objects.filter(name="game")
    if len(board_set) < 1:
        last_board = Board.objects.latest('date')
        board = Board.create_and_init_board("game", 4)
        board.save()
        messages.success(request, last_board.get_winner_name())
        return redirect('/board/home')
    else:
        board = board_set[0]

    if board.p1 and board.p2:
        currentPlayerId = board.nbTurns % 2 + 1
        if currentPlayerId == 1:
            currentPlayer = board.p1
            isCurrentPlayerAI = board.p1.isAI
        else:
            currentPlayer = board.p2
            isCurrentPlayerAI = board.p2.isAI

        if isCurrentPlayerAI:
            best_ai_move = currentPlayer.ai.get_move(board)
            board.move(currentPlayerId, str(best_ai_move))
            time.sleep(0.5)

        print(f"Player 1 : {board.p1} - Player 2 : {board.p2}")

    return render(request, 'board/test.html', {
        'grid': board.print_board(),
        'nbTurns': board.nbTurns,
        'board': board
    })
Exemple #28
0
def insert(request): 
    fname = "" 
    fsize = 0 
    if "file" in request.FILES: #d\request.FILES에 file이 있는가 - 파일넘어왓는가
        file=request.FILES["file"] 
        fname = file.name 
        fsize = file.size 
        fp=open("%s%s" % (UPLOAD_DIR, fname), "wb") 
        for chunk in file.chunks(): 
            fp.write(chunk) 
        fp.close() 
        
    dto = Board( writer=request.POST["writer"],title=request.POST["title"], content=request.POST["content"], filename=fname,filesize=fsize ) 
    dto.save() 
    print(dto) 
    return redirect("list/") 
Exemple #29
0
def write_comment(request):
    board_id = request.GET.get('board_id', )
    input_comment = request.GET.get('comment', )
    user = request.user.pk

    comment = Comment()

    comment.board_id = Board(board_id)
    comment.writer = User(user)
    comment.content = input_comment
    comment.status = 'y'

    try:
        comment.save()

        result = json.dumps([
            {'result': 'seccess'}
        ])

    except Exception as e:
        print(e)
        result = json.dumps([
            {'result':'fail'}
        ])

    return HttpResponse(result, content_type="application/json:charset=UTF-8")
Exemple #30
0
def clone(request, board_hash):
    board = get_object_or_404(Board, hash=board_hash)
    new_board = Board()
    new_board.save()

    for postit in board.postit_set.all():
        postit_clone = postit.clone()
        postit_clone.board = new_board
        postit_clone.save()

    for line in board.line_set.all():
        line_clone = line.clone()
        line_clone.board = new_board
        line_clone.save()

    return HttpResponseRedirect("/"+new_board.hash)
Exemple #31
0
def upload_pin(request):
    #user = get_user
    data = {}
    if request.method == 'POST':
        form = forms.PinUploadForm(request.POST,request.FILES)
        if form.is_valid():
            print 'form is valid'
            img = request.FILES['img']
            print img,type(img)
            img_url = save_img(img)
            print img_url
            pin = Pin()
            pin.user_id = request.user._id
            pin.img_url = img_url
            pin.desc = form.cleaned_data['desc']
            pin.board_id = form.cleaned_data['board_id']
            pin.sync = form.cleaned_data['sync']
            pin.save()
            return redirect('/success/url/')
        else:
            print 'form not valid'
            data['form'] = form
    else:
        form = forms.PinUploadForm()
        userBoards = Board.objects(user_id=request.user._id)
        print userBoards
        for board in userBoards:
            print board.name

        data['form'] = form
    return render(request,'pins/upload_pin.html',data)
Exemple #32
0
def AdminWritePostView(request):
    if request.user.is_superuser:
        if request.method == 'POST':
            form = AdminPostForm(request.POST)
            if form.is_valid():
                post = Board(user=request.user,
                             category=form.cleaned_data['category'],
                             title=form.cleaned_data['title'],
                             content=form.cleaned_data['content'])
                post.save()
                return HttpResponseRedirect('/admin/add-category/')
        else:
            form = AdminPostForm(initial=request.GET)
        return render(request, 'board/write_post.html', dict(form=form))
    else:
        form = PostForm(initial=request.GET)
        return render(request, 'board/write_post.html', dict(form=form))
Exemple #33
0
 def create_lecture_boards(self):
     lecture_suites = LectureSuite.objects.all()
     for lecture_suite in lecture_suites:
         if len(Board.objects.filter(
                 display_name__exact=lecture_suite.name)) > 0:
             logger.info(f'{lecture_suite.name}에 대한 게시판이 존재합니다.')
         else:
             logger.info(
                 f'{lecture_suite.name} LectureSuite에 대한 Board를 생성합니다.')
             board = Board(
                 name=lecture_suite.name,
                 display_name=lecture_suite.name,
                 description=f'{lecture_suite.name}에 대한 게시판입니다.',
                 category='lecture_suite',
                 related_lecture_suite=lecture_suite,
             )
             board.save()
Exemple #34
0
def write(request):
    board = Board()
    board.title = request.POST['title']
    board.content = request.POST['content']
    board.name = request.session['authuser']['name']
    board.user_id = request.session['authuser']['id']

    board.save()

    return HttpResponseRedirect('/board')
    def setUp(self):
        self.USER_USERNAME = "******"
        self.USER_EMAIL = "*****@*****.**"
        self.USER_PASSWORD = "******"
        self.GAME = 6667
        self.PLAYER_ID = 6677

        # Create user
        user_data = {
            "username": self.USER_USERNAME,
            "email": self.USER_EMAIL,
            "password": self.USER_PASSWORD,
        }
        user = User._default_manager.create_user(**user_data)
        user.save()

        board_data = {
            'name': 'boardcito',
            'owner': user
        }
        board = Board(**board_data)
        board.save()

        room_data = {
            'name': 'roomcito',
            'board': board,
            'game_has_started': False,
            'owner': user,
        }
        room = Room(**room_data)
        room.save()

        game = Game(room=room)
        game.save()

        self.GAME = game.id
        # Create Player
        player_data = {
            'id': self.PLAYER_ID,
            'user': user,
            'game': game,
            'colour': 'colorcito',
        }
        player = Player.objects.create(**player_data)
        player.save()
Exemple #36
0
def board_write(request):
    if not request.session.get('user'):
        return redirect('/scum/login/')

    if request.method == 'POST':
        form = BoardForm(request.POST)
        if form.is_valid():
            user_id = request.session.get('user')
            scumuser = scumUser.objects.get(pk=user_id)

            tags = form.cleaned_data['tags'].split(',')

            board = Board()
            board.title = form.cleaned_data['title']
            board.contents = form.cleaned_data['contents']
            board.writer = scumuser
            board.save()

            for tag in tags:
                if not tag:
                    continue
                _tag, _= Tag.objects.get_or_create(name=tag)
                board.tags.add(_tag)



            return redirect('/board/list/')

    else:
        form = BoardForm
    return render(request, 'board_write.html', {'form': form})
Exemple #37
0
def update(request):
    print("**")
    # 글번호
    # id = request.POST["idx"]               # 이건 에러뜨고 아래꺼는 ㄱㅊ...
    id = request.POST.get('idx', False)

    # select * from board_board where idx=id
    dto_src = Board.objects.get(idx=id)
    dto_src.save()

    # 수정시 조회수, 다운로드 수 날라가는거 방지 
    hitnum = dto_src.hit
    downnum = dto_src.down

    fname = dto_src.filename  # 기존 첨부파일 이름
    fsize = dto_src.filesize  # 기존 첨부파일 크기

    if "file" in request.FILES:  # 새로운 첨부파일이 있으면
        file = request.FILES["file"]
        fname = file.name  # 새로운 첨부파일 이름
        fsize = file.size
        fp = open("%s%s" % (UPLOAD_DIR, fname), "wb")
        for chunk in file.chunks():
            fp.write(chunk)  # 파일 저장
            fp.close()

            # 첨부파일 크기 ( 업로드 완료 후 계산
            fsize = os.path.getsize(UPLOAD_DIR + fname)

        # 수정 후 board의 내용
    dto_new = Board(idx=id, writer=request.POST["writer"], title=request.POST["title"],
                    content=request.POST["content"], filename=fname, filesize=fsize, hit=hitnum, down=downnum,
                    video_url=request.POST["video_url"],
                    section_school=request.POST["section_school"],
                    section_subject=request.POST["section_subject"],
                    section_semester=request.POST["section_semester"],
                    grade=request.POST["grade"],
                    th_high=request.POST["th_high"],
                    th_medium=request.POST["th_medium"],
                    th_default=request.POST["th_default"]
                    )
    dto_new.save()  # update query 호출

    return redirect("/")  # 시작페이지로 이ddong
Exemple #38
0
def create_board(request):
    new_board = Board()
    new_board.save()

    welcomePostit = PostIt(text="Welcome! Move me! Edit me! Delete me!",x=120,y=50, board=new_board, width=100,
                           height=100)
    sharePostit = PostIt(text="Share this board and work together in realtime!\n\nhttp://www.boardino.com/"+str(new_board.id),
                    x=200,
                    y=300,
                    board=new_board,
                    width=220,
                    height=100,
                    back_color='#FF69B4')
    comeBackPostit = PostIt(text="Come back to check new features!",x=550,y=50, board=new_board,
                            width=150,
                            height=100,
                            back_color='#ADFF2F')
    welcomePostit.save()
    sharePostit.save()
    comeBackPostit.save()

    return HttpResponseRedirect("/"+str(new_board.id))
Exemple #39
0
def write(request):
    try:
        board = Board()
        board.title = request.POST['title']
        board.content = request.POST['content']
        # 아래부분은 수정해야 할 사항으로###############################################################################
        # 현재는 이메일과 패스워드로 비교하여 쿼리셋의 첫번째 user를 선택하도록 정하고 테스트 하였지만.
        # 실제로는 email을 primary 키로, 혹은 같은 이메일은 등록이 불가하도록 정의하는 로직이 필요하며,
        # 이는 user 객체의 VO 를 재정의 하던지, 유저 등록 시 action 을 재정의 하던지 하여 해결하도록 할 것!

        board.user = (User.objects.filter(email=request.session.get('authuser')['email']).filter(
            password=request.session.get('authuser')['password']))[0]
        ################################################################################################################
        board.save()
        return HttpResponseRedirect('/board')
    except DataError:
        return render(request, 'board/write.html', {'posts': board, 'data_error':True })
Exemple #40
0
    def test_board_list_with_staff_user(self):
        # create a private board for user2
        self.privateBoard2 = Board(
            title='private board2',
            description='user2 private board for tests',
            policy=0,
            user = self.user2)
        self.privateBoard2.save()

        # add a staff user
        self.user2.is_staff = True
        self.user2.save()
        # login with user
        login(self, self.user)

        response = self.client.get('/toto/')
        self.assertEqual(response.status_code, 200)
        # assert we have public boards
        self.assertEqual(len(response.context['boards']), 1)
        self.assertEqual(response.context['boards'][0].title, 'user2 board')
        # assert we have private boards
        self.assertEqual(len(response.context['private_boards']), 1)
        self.assertEqual(response.context['private_boards'][0].title,
                'private board2')
Exemple #41
0
class BoardListTest(TestCase):
    """Board app tests."""

    def setUp(self):
        # create users
        create_test_users(self)
        # create boards
        create_test_boards(self)
        # create private boards
        create_test_private_boards(self)
        # start client
        self.client = Client()


    def test_urls(self):
        urls = [
            {
                'url': '/flr/',
                'status': 200,
                'template': 'board/board_list.html',
            },
            # unknown user should return 404
            {
                'url': '/tom/',
                'status': 404,
                'template': '404.html',
            },
        ]
        test_urls(self, urls)


    def test_board_list_with_standard_user(self):
        # login with user2
        login(self, self.user2)

        response = self.client.get('/flr/')
        self.assertEqual(response.status_code, 200)
        # assert we have public boards
        self.assertEqual(len(response.context['boards']), 1)
        self.assertEqual(response.context['boards'][0].title, 'user board')
        # assert we don't have private boards
        self.assertEqual(hasattr(response.context, 'private_boards'), False)


    def test_board_list_with_owner_user(self):
        # login with user
        login(self, self.user)

        response = self.client.get('/flr/')
        self.assertEqual(response.status_code, 200)
        # assert we have public boards
        self.assertEqual(len(response.context['boards']), 1)
        self.assertEqual(response.context['boards'][0].title, 'user board')
        # assert we have private boards
        self.assertEqual(len(response.context['private_boards']), 1)
        self.assertEqual(response.context['private_boards'][0].title,
                'private board')

    def test_board_list_with_staff_user(self):
        # create a private board for user2
        self.privateBoard2 = Board(
            title='private board2',
            description='user2 private board for tests',
            policy=0,
            user = self.user2)
        self.privateBoard2.save()

        # add a staff user
        self.user2.is_staff = True
        self.user2.save()
        # login with user
        login(self, self.user)

        response = self.client.get('/toto/')
        self.assertEqual(response.status_code, 200)
        # assert we have public boards
        self.assertEqual(len(response.context['boards']), 1)
        self.assertEqual(response.context['boards'][0].title, 'user2 board')
        # assert we have private boards
        self.assertEqual(len(response.context['private_boards']), 1)
        self.assertEqual(response.context['private_boards'][0].title,
                'private board2')


    def test_board_search(self):
        response = self.client.get('/board/search/?q=user')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.templates[0].name, 'board/board_search.html')
        self.assertEqual(len(response.context['page'].object_list), 1)
        
        # quick test of pagination 
        response = self.client.get('/board/search/?q=user&page=1')
        self.assertEqual(response.status_code, 200)