コード例 #1
0
ファイル: app.py プロジェクト: hoangcuong9x/abcccccc
def profile(artist):
    artist_infor = User.objects(username=artist).first()
    working_arts = User.objects(username=artist).first().working_arts
    finished_arts = User.objects(username=artist).first().finished_arts
    # Các bức tranh đã hoàn thành sắp xếp theo số lượng like:
    finished_list = Savepicture.objects(
        picartist=artist, picstatus='finished').order_by('-piclikes')
    working_list = []
    if 'token' in session:
        if session['token'] == artist:
            working_list = Savepicture.objects(picartist=artist,
                                               picstatus='working')
    if request.method == 'POST':
        form = request.form
        picid = form['picid']
        # Update database:
        Savepicture.objects(id=picid).first().update(set__picstatus="finished")
        User.objects(username=artist).first().update(
            set__finished_arts=finished_arts + 1)
        User.objects(username=artist).first().update(
            set__working_arts=working_arts - 1)
    return render_template('profile.html',
                           artist_infor=artist_infor,
                           finished_arts=finished_arts,
                           working_arts=working_arts,
                           finished_list=finished_list,
                           working_list=working_list)
コード例 #2
0
ファイル: app.py プロジェクト: hoangcuong9x/test
def func_top100pics():
    # Tìm tất cả những bức tranh đã hoàn thành:
    finished_list = Savepicture.objects(picstatus='finished', piclikes__ne=0)
    # Tìm 100 bức có số like lớn nhất và lưu số likes đó vào 1 list:
    likes_list = []
    for pic in finished_list:
        likes_list.append(pic.piclikes)
    likes_list.sort(reverse=True)  # sắp xếp theo thứ tự giảm dần
    if len(likes_list) > 100:
        likes_list = likes_list[:101]
    likes_list = list(
        dict.fromkeys(likes_list))  # loại bỏ các giá trị trùng nhau
    # Tạo Top 100 bằng cách tìm ngược likes trong list trên ở database ảnh:
    top100pics = []
    for i, v in enumerate(likes_list):
        for pic in finished_list:
            if pic.piclikes == v:
                Savepicture.objects(id=pic.id).first().update(
                    set__picpositionintop100=i + 1)
                artist = User.objects(username=pic.picartist).first()
                toppic = {
                    'picpositionintop100': pic.picpositionintop100,
                    'picname': pic.picname,
                    'piclink': pic.piclink,
                    'piclikes': pic.piclikes,
                    'picartist': artist.fullname,
                    'username': artist.username,
                    'picid': pic.id
                }
                top100pics.append(toppic)
    return top100pics
コード例 #3
0
def new_picture(picid):
    pic = Rawpicture.objects(id=picid).first()
    piclinkb64 = base64encode(pic.piclink)
    token = ''
    if request.method == 'GET':
        if 'token' in session:
            token = session['token']
        if 'picid' in session:
            if ("'" + picid + "'") in session['picid']:
                unsavelink = session['picid'].replace("'" + picid + "'", '')
                del session['picid']
                return render_template('new_picture.html',
                                       piclinkb64=unsavelink,
                                       resetlinkb64=piclinkb64,
                                       token=token)
            else:
                return render_template('new_picture.html',
                                       piclinkb64=piclinkb64,
                                       resetlinkb64=piclinkb64,
                                       token=token)
        else:
            return render_template('new_picture.html',
                                   piclinkb64=piclinkb64,
                                   resetlinkb64=piclinkb64,
                                   token=token)
    elif request.method == 'POST':
        form = request.form
        # nếu người dùng chưa đăng nhập:
        if 'token' not in session:
            unsavelink = form['unsavelink']
            session[
                'picid'] = "'" + picid + "'" + unsavelink  # thêm dấu nháy bọc quanh picid để phòng trường hợp trong chuỗi base64 có 1 đoạn ký tự trùng với picid
            return redirect(url_for('login'))
        # nếu người dùng đã đăng nhập:
        if 'token' in session:
            token = session['token']
            picname = form['picname']
            piclink = form['piclink']
            picstatus = form['picstatus']
            picartist = token
            picartistfullname = User.objects(username=token).first().fullname
            newlink = Savepicture(piclink=piclink,
                                  picname=picname.strip(),
                                  picstatus=picstatus,
                                  picartist=picartist,
                                  picartistfullname=picartistfullname,
                                  picrawid=picid)
            newlink.save()
            newid = Savepicture.objects(piclink=piclink).first().id
            # Update database của user tương ứng:
            working_arts = User.objects(username=token).first().working_arts
            finished_arts = User.objects(username=token).first().finished_arts
            if picstatus == 'working':
                User.objects(username=token).first().update(
                    set__working_arts=working_arts + 1)
            elif picstatus == 'finished':
                User.objects(username=token).first().update(
                    set__finished_arts=finished_arts + 1)
            return redirect(url_for('saved', picid=newid))
コード例 #4
0
def saved(picid):
    warning = 'Bạn chưa đăng nhập!'
    if 'token' not in session:
        return render_template('login.html', warning=warning)
    else:
        if session['token'] != Savepicture.objects(id=picid).first().picartist:
            return render_template('not_allow.html')
        else:
            pic = Savepicture.objects(id=picid).first()
            return render_template('saved.html', pic=pic)
コード例 #5
0
ファイル: app.py プロジェクト: hoangcuong9x/test
def func_top100artists():
    # Tìm tất cả các artist:
    artist_list = User.objects(totallikes__ne=0)
    # Tìm 100 artist có likes lớn nhất và lưu số like đó vào 1 list:
    likes_list = []
    for artist in artist_list:
        likes_list.append(artist.totallikes)
    likes_list.sort(reverse=True)  # sắp xếp theo thứ tự giảm dần
    if len(likes_list) > 100:
        likes_list = likes_list[:101]
    likes_list = list(
        dict.fromkeys(likes_list))  # loại bỏ các giá trị trùng nhau
    # Tạo top 100 Artist bằng cách tìm ngược likes trong database user:
    top100artists = []
    for i, v in enumerate(likes_list):
        for artist in artist_list:
            if artist.totallikes == v:
                # Update Position trong top 100:
                User.objects(username=artist.username).first().update(
                    set__positionintop100=i + 1)
                # Số tranh đã hoàn thành:
                finished_list = Savepicture.objects(picartist=artist.username,
                                                    picstatus='finished')
                # # Số tranh trong top 100 pics:
                # picsintop100 = 0
                # top100pics = func_top100pics()
                # for pic in top100pics:
                #     if pic['picartist'] == artist.username:
                #         picsintop100 += 1
                # User.objects(username=artist.username).first().update(set__picsintop100=picsintop100)
                # Tìm bức tranh có nhiều like nhất của artist đó:
                likes = []
                for pic in finished_list:
                    likes.append(pic.piclikes)
                bestpic = Savepicture.objects(picartist=artist.username,
                                              picstatus='finished',
                                              piclikes=max(likes)).first()
                # Đưa các thông tin của artist đó vào list top 100 artist:
                topartist = {
                    'positionintop100': artist.positionintop100,
                    'fullname': artist.fullname,
                    'username': artist.username,
                    # 'picsintop100': picsintop100,
                    'totallikes': artist.totallikes,
                    # 'finishedarts': len(finished_list),
                    'bestpic': bestpic.piclink,
                    'bestpicid': bestpic.id
                }
                top100artists.append(topartist)
    return top100artists
コード例 #6
0
def top100artists():
    notice = ''
    top100artists = []
    # Tìm tất cả các artist:
    artist_list = User.objects(totallikes__ne=0).order_by('-totallikes')
    if len(artist_list) == 0:
        notice = 'Danh sách trống'
    for i, artist in enumerate(artist_list):
        if i == 100:
            break
        # Tìm bức tranh có nhiều like nhất của artist đó:
        bestpic = Savepicture.objects(
            picartist=artist.username,
            picstatus='finished').order_by('-piclikes').first()
        topartist = {
            'positionintop100': i + 1,
            'fullname': artist.fullname,
            'username': artist.username,
            'totallikes': artist.totallikes,
            'bestpiclink': bestpic.piclink,
            'bestpicid': bestpic.id
        }
        top100artists.append(topartist)
    return render_template('top100artists.html',
                           notice=notice,
                           top100artists=top100artists)
コード例 #7
0
ファイル: app.py プロジェクト: hoangcuong9x/test
def view(picid):
    pic = Savepicture.objects(id=picid).first()
    artist = User.objects(username=pic.picartist).first()
    comment_list = Comment.objects(picid=picid)
    if request.method == 'GET':
        return render_template("view.html",
                               pic=pic,
                               artist=artist,
                               comment_list=comment_list)
    else:
        form = request.form
        comment = form['comment']
        warning = ''
        if 'token' in session:
            user = User.objects(username=session['token']).first()
            new_comment = Comment(comment=comment,
                                  who_fullname=user.fullname,
                                  who_username=user.username,
                                  picid=picid)
            if comment == '':
                warning = 'Bạn chưa viết gì nên không có gì để đăng!'
            else:
                new_comment.save()
        else:
            warning = 'Vui lòng đăng nhập để like & comment!'
        return render_template('view.html',
                               pic=pic,
                               artist=artist,
                               comment_list=comment_list,
                               warning=warning)
コード例 #8
0
def top100pics():
    notice = ''
    top100pics = []
    # Tìm những bức tranh có like khác 0:
    finished_list = Savepicture.objects(picstatus='finished',
                                        piclikes__ne=0).order_by('-piclikes')
    if len(finished_list) == 0:
        notice = 'Danh sách trống'
    for i, v in enumerate(finished_list):
        if i == 100:
            break
        # Đưa các thông tin của pic đó vào list top 100 pics:
        toppic = {
            'picpositionintop100': i + 1,
            'picname': v.picname,
            'piclink': v.piclink,
            'piclikes': v.piclikes,
            'picartistfullname': v.picartistfullname,
            'picartist': v.picartist,
            'picid': v.id
        }
        top100pics.append(toppic)
    return render_template('top100pics.html',
                           notice=notice,
                           top100pics=top100pics)
コード例 #9
0
def keep_continue(picid):
    token = ''
    warning = 'Bạn chưa đăng nhập!'
    if 'token' not in session:
        return render_template('login.html', warning=warning)
    else:
        token = session['token']
        pic = Savepicture.objects(id=picid).first()
        piclinkb64 = pic.piclink
        if request.method == 'GET':
            return render_template('keep_continue.html',
                                   pic=pic,
                                   piclinkb64=piclinkb64,
                                   token=token)
        elif request.method == 'POST':
            form = request.form
            picname = form['picname']
            piclink = form['piclink']
            picstatus = form['picstatus']
            # Update:
            if picname != '':
                pic.update(set__picname=picname)
            working_arts = User.objects(username=token).first().working_arts
            finished_arts = User.objects(username=token).first().finished_arts
            if picstatus == 'working':
                pic.update(set__piclink=piclink)
            elif picstatus == 'finished':
                pic.update(set__piclink=piclink, set__picstatus=picstatus)
                User.objects(username=token).first().update(
                    set__finished_arts=finished_arts + 1)
                User.objects(username=token).first().update(
                    set__working_arts=working_arts - 1)
            return redirect(url_for('saved', picid=picid))
コード例 #10
0
ファイル: app.py プロジェクト: hoangcuong9x/test
def profile(artist):
    # Chạy hàm func_artist_infor và trả về các thông tin của artist đó
    artist_infor = func_artist_infor(artist)
    # Các bức tranh đã hoàn thành sắp xếp theo số lượng like:
    # Tạo 1 list gồm số like của các bức tranh của artist đó
    likes_list = []
    finished_list = Savepicture.objects(picartist=artist, picstatus='finished')
    for pic in finished_list:
        likes_list.append(pic.piclikes)
    likes_list.sort(reverse=True)
    likes_list = list(
        dict.fromkeys(likes_list))  # loại bỏ các giá trị trùng nhau
    # Tạo 1 list các bức tranh sắp xếp theo số lượng like để sau đó hiển thị trên trang profile của artist
    artist_finised_arts = []
    for i in likes_list:
        for pic in finished_list:
            if pic.piclikes == i:
                # # Tìm thứ hạng của pic đó trong top 100 pics nếu có:
                # top100pics = func_top100pics()
                # positionintop100 = 0
                # for toppic in top100pics:
                #     if toppic['picid'] == pic.id:
                #         positionintop100 = toppic['picpositionintop100']
                # Tìm số lượng comment trong bức tranh đó:
                comments = len(Comment.objects(picid=pic.id))
                # Đưa các thông tin của các bức vẽ vào list các bức vẽ của artist đó
                toppic = {
                    # 'positionintop100': positionintop100,
                    'picname': pic.picname,
                    'piclink': pic.piclink,
                    'piclikes': pic.piclikes,
                    'picid': pic.id,
                    'piccomments': comments
                }
                artist_finised_arts.append(toppic)
    # Danh sách những bức đang vẽ (chỉ nhìn thấy của chính mình nếu đăng nhập vào)
    working_list = []
    if 'token' in session:
        if session['token'] == artist:
            working_list = Savepicture.objects(picartist=artist,
                                               picstatus='working')

    return render_template('profile.html',
                           artist_infor=artist_infor,
                           artist_finised_arts=artist_finised_arts,
                           working_list=working_list)
コード例 #11
0
def change_infor(artist):
    if 'token' not in session:
        return redirect(url_for('login'))
    else:
        if session['token'] != artist:
            return render_template('not_allow.html')
        else:
            artist_infor = User.objects(username=artist).first()
            pic_list = Savepicture.objects(picartist=artist)
            like_list = Like.objects(who_username=artist)
            comment_list = Comment.objects(who_username=artist)
            notice = ''
            if request.method == 'GET':
                return render_template('change_infor.html',
                                       fullname=artist_infor.fullname,
                                       password=artist_infor.password,
                                       notice=notice)
            elif request.method == 'POST':
                form = request.form
                new_fullname = form['fullname']
                new_username = form['username']
                new_password = form['password']
                if new_fullname.strip() != '':
                    artist_infor.update(set__fullname=new_fullname.strip())
                    for pic in pic_list:
                        pic.update(set__picartistfullname=new_fullname.strip())
                    for like in like_list:
                        like.update(set__who_fullname=new_fullname.strip())
                    for comment in comment_list:
                        comment.update(set__who_fullname=new_fullname.strip())
                if (new_username.strip() != '') and (' ' not in new_username):
                    artist = new_username
                    artist_infor.update(set__username=new_username.strip())
                    for pic in pic_list:
                        pic.update(set__picartist=new_username.strip())
                    for like in like_list:
                        like.update(set__who_username=new_username.strip())
                    for comment in comment_list:
                        comment.update(set__who_username=new_username.strip())
                if (new_password.strip() != '') and (' ' not in new_username):
                    artist_infor.update(set__password=new_password.strip())
                artist_infor = User.objects(username=artist).first()
                if new_fullname.strip() != '' or (
                    (new_username.strip() != '') and
                    (' ' not in new_username)) or ((new_password.strip() != '')
                                                   and
                                                   (' ' not in new_username)):
                    notice = 'Bạn đã thay đổi thông tin thành công!'
                return render_template('change_infor.html',
                                       fullname=artist_infor.fullname,
                                       password=artist_infor.password,
                                       notice=notice)
コード例 #12
0
ファイル: app.py プロジェクト: hoangcuong9x/abcccccc
def new_picture(picid):
    pic = Rawpicture.objects(id=picid).first()
    piclinkb64 = base64encode(pic.piclink)
    token = ''
    aftersave = ''
    if 'token' in session:
        token = session['token']
    if request.method == 'GET':
        aftersave = 'no'
        return render_template('new_picture.html',
                               piclinkb64=piclinkb64,
                               token=token,
                               aftersave=aftersave)
    elif request.method == 'POST':
        aftersave = 'yes'
        form = request.form
        picname = form['picname']
        piclink = form['piclink']
        picstatus = form['picstatus']
        picartist = token
        picartistfullname = User.objects(username=token).first().fullname
        newlink = Savepicture(piclink=piclink,
                              picname=picname,
                              picstatus=picstatus,
                              picartist=picartist,
                              picartistfullname=picartistfullname)
        newlink.save()
        # Update database của user tương ứng:
        working_arts = User.objects(username=token).first().working_arts
        finished_arts = User.objects(username=token).first().finished_arts
        if picstatus == 'working':
            User.objects(username=token).first().update(
                set__working_arts=working_arts + 1)
        elif picstatus == 'finished':
            User.objects(username=token).first().update(
                set__finished_arts=finished_arts + 1)
        return render_template('new_picture.html',
                               piclinkb64=piclink,
                               aftersave=aftersave)
コード例 #13
0
ファイル: app.py プロジェクト: hoangcuong9x/test
def func_artist_infor(artist):
    # Fullname của artist:
    artist_fullname = User.objects(username=artist).first().fullname
    # Số bức tranh đã hoàn thành:
    finished_list = Savepicture.objects(picartist=artist, picstatus='finished')
    finished_arts = len(finished_list)
    # Số bức tranh đang làm dở:
    working_list = Savepicture.objects(picartist=artist, picstatus='working')
    working_arts = len(working_list)
    # Tính tổng like của artist:
    ##### Liệu có cách nào tự động kết nối data user vs data picture để tự tính tổng like?
    totallikes = 0
    for art in finished_list:
        totallikes += art.piclikes
    # # Tổng số bức tranh trong top 100 pics:
    # picsintop100 = 0
    # top100pics = func_top100pics()
    # for pic in top100pics:
    #     if pic['picartist'] == artist:
    #         picsintop100 += 1
    # User.objects(username=artist).first().update(set__picsintop100=picsintop100)
    # # Tìm thứ hạng trong top 100:
    # positionintop100 = 0
    # top100artists = func_top100artists()
    # for a in top100artists:
    #     if a['username'] == artist:
    #         positionintop100 = a['positionintop100']
    # Tạo 1 dictionary lưu thông tin của artist:
    artist_infor = {
        'fullname': artist_fullname,
        'username': artist,
        'finished_arts': finished_arts,
        'working_arts': working_arts,
        'totallikes': totallikes,
        # 'picsintop100': picsintop100,
        # 'positionintop100': positionintop100
    }
    return artist_infor
コード例 #14
0
def search():
    if request.method == 'GET':
        return render_template('search.html')
    elif request.method == 'POST':
        form = request.form
        searchword = form['searchword']
        field1 = form.get(
            'field1'
        )  # form checkbox dùng form.get['inputname'] thay vì form['inputname']
        field2 = form.get(
            'field2'
        )  # kết quả trả về là none hoặc value của checkbox. nếu đặt name các checkbox giống nhau thì trả về 1 list value (?)
        field3 = form.get('field3')
        raw_list = []
        finished_list = []
        artist_list = []
        warn1 = warn2 = warn3 = ''
        display = display1 = display2 = display3 = 'no'
        s_list = []
        if searchword != '':
            display = 'yes'
            s_list = searchword.replace('-', ' ').split()
            for s in s_list:
                r_list = Rawpicture.objects(
                    Q(picname__icontains=s) | Q(category__icontains=s))
                for r in r_list:
                    if r not in raw_list:
                        raw_list.append(r)
                f_list = Savepicture.objects(picstatus='finished',
                                             picname__icontains=s)
                for f in f_list:
                    if f not in finished_list:
                        finished_list.append(f)
                a_list = User.objects(
                    Q(username__icontains=s) | Q(fullname__icontains=s))
                for a in a_list:
                    if a not in artist_list:
                        artist_list.append(a)
        if len(raw_list) == 0:
            warn1 = 'No raw picture found!'
        if len(finished_list) == 0:
            warn2 = 'No finished picture found!'
        if len(artist_list) == 0:
            warn3 = 'No artist found!'
        if field1 is not None:
            display1 = 'yes'
        if field2 is not None:
            display2 = 'yes'
        if field3 is not None:
            display3 = 'yes'
        if (field1 is None) and (field2 is None) and (field3 is None):
            display1 = display2 = display3 = 'yes'
        return render_template('search.html',
                               searchword=searchword,
                               raw_list=raw_list,
                               finished_list=finished_list,
                               artist_list=artist_list,
                               warn1=warn1,
                               warn2=warn2,
                               warn3=warn3,
                               display=display,
                               display1=display1,
                               display2=display2,
                               display3=display3)
コード例 #15
0
def view(picid):
    pic = Savepicture.objects(id=picid).first()
    picname = pic.picname
    piclikes = pic.piclikes
    artist = User.objects(username=pic.picartist).first()
    comment_list = Comment.objects(picid=picid)
    warning = 'hide'
    likebutton = 'Like'
    if 'token' not in session:
        warning = 'show'
    if request.method == 'GET':
        if 'token' in session:
            like_check = Like.objects(who_username=session['token'],
                                      picid=picid).first()
            if like_check is None:
                likebutton = 'Like'
            else:
                likebutton = 'Dislike'
        return render_template("view.html",
                               pic=pic,
                               picname=picname,
                               piclikes=piclikes,
                               artist=artist,
                               comment_list=comment_list,
                               likebutton=likebutton,
                               warning=warning)
    elif request.method == 'POST':
        form = request.form
        like_check = Like.objects(who_username=session['token'],
                                  picid=picid).first()
        # Xử lý đổi tên:
        if 'picname' in form:
            newname = form['picname']
            if newname != '':
                picname = newname
                pic.update(set__picname=newname)
        # Xử lý form comment:
        if 'comment' in form:
            if like_check is None:
                likebutton = 'Like'
            else:
                likebutton = 'Dislike'
            comment = form['comment']
            user = User.objects(username=session['token']).first()
            new_comment = Comment(comment=comment,
                                  who_fullname=user.fullname,
                                  who_username=user.username,
                                  picid=picid)
            pic.update(set__piccomments=pic.piccomments + 1)
            new_comment.save()
        # Xử lý form like:
        if 'like' in form:
            if like_check is None:
                piclikes = pic.piclikes + 1
                # Update like vào số like của bức tranh và của user vẽ bức tranh đó:
                pic.update(set__piclikes=pic.piclikes + 1)
                artist.update(set__totallikes=artist.totallikes + 1)
                # Lưu like vào data:
                new_like = Like(who_username=session['token'], picid=picid)
                new_like.save()
                likebutton = 'Dislike'  # chuyển thành nút dislike
            else:
                piclikes = pic.piclikes - 1
                # Update like vào số like của bức tranh và của user vẽ bức tranh đó:
                pic.update(set__piclikes=pic.piclikes - 1)
                artist.update(set__totallikes=artist.totallikes - 1)
                # Xóa like khỏi database
                like_check.delete()
                likebutton == 'Like'  # chuyển thành nút like
        return render_template('view.html',
                               pic=pic,
                               picname=picname,
                               piclikes=piclikes,
                               artist=artist,
                               comment_list=comment_list,
                               warning=warning,
                               likebutton=likebutton)
コード例 #16
0
ファイル: app.py プロジェクト: hoangcuong9x/abcccccc
def view(picid):
    pic = Savepicture.objects(id=picid).first()
    piclikes = pic.piclikes
    artist = User.objects(username=pic.picartist).first()
    comment_list = Comment.objects(picid=picid)
    warning = ''
    likebutton = 'Like'
    if request.method == 'GET':
        # Kiểm tra user có đăng nhập hay không để hiển thị nút like tương ứng:
        if 'token' in session:
            like_check = Like.objects(who_username=session['token'],
                                      picid=picid).first()
            if like_check is None:
                likebutton = 'Like'
            else:
                likebutton = 'Dislike'
        else:
            likebutton = 'Like'
        return render_template("view.html",
                               pic=pic,
                               piclikes=piclikes,
                               artist=artist,
                               comment_list=comment_list,
                               likebutton=likebutton)
    else:
        if 'token' not in session:
            warning = 'Vui lòng đăng nhập để like & comment!'
        else:
            form = request.form
            # Xử lý form comment:
            if 'comment' in form:
                comment = form['comment']
                user = User.objects(username=session['token']).first()
                new_comment = Comment(comment=comment,
                                      who_fullname=user.fullname,
                                      who_username=user.username,
                                      picid=picid)
                if comment == '':
                    warning = 'Bạn chưa viết gì nên không có gì để đăng!'
                else:
                    # Update số comment vào số comment của bức tranh trên database:
                    pic.update(set__piccomments=pic.piccomments + 1)
                    new_comment.save()
            # Xử lý form like:
            if 'like' in form:
                like_check = Like.objects(who_username=session['token'],
                                          picid=picid).first()
                if like_check is None:
                    piclikes = pic.piclikes + 1
                    # Update like vào số like của bức tranh và của user vẽ bức tranh đó:
                    pic.update(set__piclikes=pic.piclikes + 1)
                    artist.update(set__totallikes=artist.totallikes + 1)
                    # Lưu like vào data:
                    new_like = Like(who_username=session['token'], picid=picid)
                    new_like.save()
                    likebutton = 'Dislike'
                else:
                    piclikes = pic.piclikes - 1
                    # Update like vào số like của bức tranh và của user vẽ bức tranh đó:
                    pic.update(set__piclikes=pic.piclikes - 1)
                    artist.update(set__totallikes=artist.totallikes - 1)
                    # Xóa like khỏi database
                    like_check.delete()
                    likebutton == 'Like'
        return render_template('view.html',
                               pic=pic,
                               piclikes=piclikes,
                               artist=artist,
                               comment_list=comment_list,
                               warning=warning,
                               likebutton=likebutton)
コード例 #17
0
def profile(artist):
    artist_infor = User.objects(username=artist).first()
    working_arts = artist_infor.working_arts
    finished_arts = artist_infor.finished_arts
    totallikes = artist_infor.totallikes
    finished_list = Savepicture.objects(
        picartist=artist, picstatus='finished')  # .order_by('-piclikes')
    working_list = Savepicture.objects(picartist=artist, picstatus='working')
    display = 'no'
    if 'token' in session:
        if session['token'] == artist:
            display = 'yes'
    if request.method == 'GET':
        return render_template('profile.html',
                               display=display,
                               artist_infor=artist_infor,
                               working_arts=working_arts,
                               finished_arts=finished_arts,
                               totallikes=totallikes,
                               finished_list=finished_list,
                               working_list=working_list)
    elif request.method == 'POST':
        form = request.form
        for fpic in finished_list:
            df = 'df' + str(fpic.id)
            if df in form:
                f_picid = form[df]
                pic = Savepicture.objects(id=f_picid).first()
                pic.delete()
                finished_arts = artist_infor.finished_arts - 1
                totallikes = artist_infor.totallikes - pic.piclikes
                artist_infor.update(
                    set__finished_arts=artist_infor.finished_arts - 1,
                    set__totallikes=artist_infor.totallikes - pic.piclikes)
        for wpic in working_list:
            up = 'up' + str(wpic.id)
            dw = 'dw' + str(wpic.id)
            if up in form:
                u_picid = form[up]
                Savepicture.objects(id=u_picid).first().update(
                    set__picstatus="finished")
                working_arts = artist_infor.working_arts - 1
                artist_infor.update(
                    set__working_arts=artist_infor.working_arts - 1)
                finished_arts = artist_infor.finished_arts + 1
                artist_infor.update(
                    set__finished_arts=artist_infor.finished_arts + 1)
            if dw in form:
                w_picid = form[dw]
                Savepicture.objects(id=w_picid).first().delete()
                working_arts = artist_infor.working_arts - 1
                artist_infor.update(
                    set__working_arts=artist_infor.working_arts - 1)

        finished_list = Savepicture.objects(
            picartist=artist, picstatus='finished')  # .order_by('-piclikes')
        working_list = Savepicture.objects(picartist=artist,
                                           picstatus='working')
        return render_template('profile.html',
                               display=display,
                               artist_infor=artist_infor,
                               working_arts=working_arts,
                               finished_arts=finished_arts,
                               totallikes=totallikes,
                               finished_list=finished_list,
                               working_list=working_list)
コード例 #18
0
def profile(artist):
    artist_infor = User.objects(username=artist).first()
    working_arts = artist_infor.working_arts
    finished_arts = artist_infor.finished_arts
    totallikes = artist_infor.totallikes
    finished_list = Savepicture.objects(
        picartist=artist, picstatus='finished')  # .order_by('-piclikes')
    working_list = Savepicture.objects(picartist=artist, picstatus='working')
    colorlaters = Mylistpicture.objects(user=artist, art_type='colorlater')
    colorlater_list = []
    for c in colorlaters:
        pic = Rawpicture.objects(id=c.art_id).first()
        colorlater_list.append(pic)
    c_length = len(colorlater_list)
    favorites = Mylistpicture.objects(user=artist, art_type='favorite')
    favorite_list = []
    for m in favorites:
        pic = Savepicture.objects(id=m.art_id).first()
        favorite_list.append(pic)
    m_length = len(favorite_list)
    display = 'no'
    if 'token' in session:
        if session['token'] == artist:
            display = 'yes'
    if request.method == 'GET':
        return render_template('profile.html',
                               m_length=m_length,
                               c_length=c_length,
                               display=display,
                               artist_infor=artist_infor,
                               working_arts=working_arts,
                               finished_arts=finished_arts,
                               totallikes=totallikes,
                               finished_list=finished_list,
                               working_list=working_list,
                               colorlater_list=colorlater_list,
                               favorite_list=favorite_list)
    elif request.method == 'POST':
        form = request.form
        for fpic in finished_list:
            df = 'df' + str(fpic.id)
            if df in form:
                f_picid = form[df]
                pic = Savepicture.objects(id=f_picid).first()
                pic.delete()
                finished_arts = artist_infor.finished_arts - 1
                totallikes = artist_infor.totallikes - pic.piclikes
                artist_infor.update(
                    set__finished_arts=artist_infor.finished_arts - 1,
                    set__totallikes=artist_infor.totallikes - pic.piclikes)
        for wpic in working_list:
            up = 'up' + str(wpic.id)
            dw = 'dw' + str(wpic.id)
            if up in form:
                u_picid = form[up]
                Savepicture.objects(id=u_picid).first().update(
                    set__picstatus="finished")
                working_arts = artist_infor.working_arts - 1
                artist_infor.update(
                    set__working_arts=artist_infor.working_arts - 1)
                finished_arts = artist_infor.finished_arts + 1
                artist_infor.update(
                    set__finished_arts=artist_infor.finished_arts + 1)
            if dw in form:
                w_picid = form[dw]
                Savepicture.objects(id=w_picid).first().delete()
                working_arts = artist_infor.working_arts - 1
                artist_infor.update(
                    set__working_arts=artist_infor.working_arts - 1)
        for pic in colorlater_list:
            c = 'c' + str(pic.id)
            if c in form:
                c_id = form[c]
                art = Mylistpicture.objects(art_id=c_id).first()
                art.delete()
        for pic in favorite_list:
            m = 'm' + str(pic.id)
            if m in form:
                m_id = form[m]
                art = Mylistpicture.objects(art_id=m_id).first()
                art.delete()
        finished_list = Savepicture.objects(
            picartist=artist, picstatus='finished')  # .order_by('-piclikes')
        working_list = Savepicture.objects(picartist=artist,
                                           picstatus='working')
        colorlaters = Mylistpicture.objects(user=artist, art_type='colorlater')
        colorlater_list = []
        for c in colorlaters:
            pic = Rawpicture.objects(id=c.art_id).first()
            colorlater_list.append(pic)
        c_length = len(colorlater_list)
        favorites = Mylistpicture.objects(user=artist, art_type='favorite')
        favorite_list = []
        for m in favorites:
            pic = Savepicture.objects(id=m.art_id).first()
            favorite_list.append(pic)
        m_length = len(favorite_list)
        return render_template('profile.html',
                               m_length=m_length,
                               c_length=c_length,
                               display=display,
                               artist_infor=artist_infor,
                               working_arts=working_arts,
                               finished_arts=finished_arts,
                               totallikes=totallikes,
                               finished_list=finished_list,
                               working_list=working_list,
                               colorlater_list=colorlater_list,
                               favorite_list=favorite_list)
コード例 #19
0
def view(picid):
    pic = Savepicture.objects(id=picid).first()
    picname = pic.picname
    piclikes = pic.piclikes
    artist = User.objects(username=pic.picartist).first()
    comment_list = Comment.objects(picid=picid)
    warning = 'hide'
    likebutton = 'Like'
    display = 'no'
    token = ''
    changename_warning = ''
    addbutton = 'Add to My Favorite'
    if 'token' not in session:
        warning = 'show'
        token = ''
        display = 'no'
    else:
        warning = 'hide'
        token = session['token']
        if session['token'] == artist.username:
            display = 'yes'
        else:
            display = 'no'
    if request.method == 'GET':
        if 'token' in session:
            like_check = Like.objects(who_username=session['token'],
                                      picid=picid).first()
            f_check = Mylistpicture.objects(user=session['token'],
                                            art_id=picid,
                                            art_type='favorite').first()
            if like_check is None:
                likebutton = 'Like'
            else:
                likebutton = 'Dislike'
            if f_check is None:
                addbutton = 'Add to My favorite'
            else:
                addbutton = 'Remove from My Favorite'
        return render_template("view.html",
                               changename_warning=changename_warning,
                               display=display,
                               token=token,
                               pic=pic,
                               picname=picname,
                               piclikes=piclikes,
                               artist=artist,
                               comment_list=comment_list,
                               likebutton=likebutton,
                               warning=warning,
                               addbutton=addbutton)
    elif request.method == 'POST':
        form = request.form
        user = User.objects(username=session['token']).first()
        like_check = Like.objects(who_username=session['token'],
                                  picid=picid).first()
        # Xử lý đổi tên:
        if 'picname' in form:
            newname = form['picname']
            if newname.strip() != '':
                picname = newname.strip()
                pic.update(set__picname=newname.strip())
                changename_warning = 'Thay đổi tên thành công!'
        # Xử lý form comment:
        if 'comment' in form:
            if like_check is None:
                likebutton = 'Like'
            else:
                likebutton = 'Dislike'
            comment = form['comment']
            new_comment = Comment(comment=comment,
                                  who_fullname=user.fullname,
                                  who_username=user.username,
                                  picid=picid)
            pic.update(set__piccomments=pic.piccomments + 1)
            new_comment.save()
        # Xóa comment:
        for comment in comment_list:
            c = 'c' + str(comment.id)
            if c in form:
                c_id = form[c]
                comt = Comment.objects(id=c_id).first()
                pic = Savepicture.objects(id=comt.picid).first()
                number_of_comt = pic.piccomments
                comt.delete()
                pic.update(set__piccomments=number_of_comt - 1)
        # Xử lý form like:
        if 'like' in form:
            if like_check is None:
                piclikes = pic.piclikes + 1
                # Update like vào số like của bức tranh và của user vẽ bức tranh đó:
                pic.update(set__piclikes=pic.piclikes + 1)
                artist.update(set__totallikes=artist.totallikes + 1)
                # Lưu like vào data:
                new_like = Like(who_fullname=user.fullname,
                                who_username=session['token'],
                                picid=picid)
                new_like.save()
                likebutton = 'Dislike'  # chuyển thành nút dislike
            else:
                piclikes = pic.piclikes - 1
                # Update like vào số like của bức tranh và của user vẽ bức tranh đó:
                pic.update(set__piclikes=pic.piclikes - 1)
                artist.update(set__totallikes=artist.totallikes - 1)
                # Xóa like khỏi database
                like_check.delete()
                likebutton == 'Like'  # chuyển thành nút like
        # Lưu ảnh vào album yêu thích:
        f_check = Mylistpicture.objects(user=session['token'],
                                        art_id=picid,
                                        art_type='favorite').first()
        if 'favorite' in form:
            if f_check is None:
                new_favorite = Mylistpicture(user=session['token'],
                                             art_id=picid,
                                             art_type='favorite')
                new_favorite.save()
                addbutton = 'Delete from My favorite'
            else:
                f_check.delete()
                addbutton = 'Add to My favorite'
        comment_list = Comment.objects(picid=picid)
        return render_template('view.html',
                               changename_warning=changename_warning,
                               display=display,
                               token=token,
                               pic=pic,
                               picname=picname,
                               piclikes=piclikes,
                               artist=artist,
                               comment_list=comment_list,
                               warning=warning,
                               likebutton=likebutton,
                               addbutton=addbutton)
コード例 #20
0
def room_of_fame():
    notice = ''
    piclist = Savepicture.objects(picstatus='finished').order_by('piclikes')
    if len(piclist) == 0:
        notice = 'Danh sách trống'
    return render_template('room_of_fame.html', notice=notice, piclist=piclist)
コード例 #21
0
def saved(picid):
    pic = Savepicture.objects(id=picid).first()
    return render_template('saved.html', pic=pic)