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)
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
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)
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
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)
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)
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)
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))
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))
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)
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)
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
def new_picture(picid): pic = Rawpicture.objects(id=picid).first() piclinkb64 = base64encode(pic.piclink) token = '' if 'token' in session: token = session['token'] if request.method == 'GET': return render_template('new_picture.html', piclinkb64=piclinkb64, token=token) elif request.method == 'POST': 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, 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))
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)
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)
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)
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)
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)
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)
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)
def saved(picid): pic = Savepicture.objects(id=picid).first() return render_template('saved.html', pic=pic)