def albummanage(request): if request.method == "POST": PageCacheStat.CleanPageCache() new = request.POST.get("createalbum") if new: #create album new_name = ccEscape(request.POST.get("new_name").strip()) new_public = request.POST.get("new_public") if new_public == "true": new_public = True else: new_public = False if not new_name: return returnerror(translate("Pls input album name")) new_description = ccEscape(request.POST.get("new_description")) if Album.CheckAlbumExist(new_name): return returnerror(translate("Album exist with this name")) album = Album() album.name = new_name album.public = new_public album.description = new_description album.save() return HttpResponseRedirect("/admin/album/") albums = Album.GetAllAlbumsQuery(False) content = {"albums": albums, "allalbums": albums, } return render_to_response_with_users_and_settings('admin/album_manage.html',content)
def saveAlbumInfo(request, resp): id = long(request.GET.get('albumid',0)) album = id and Album.GetAlbumByID(id) if album: albumname = ccEscape(request.GET.get('albumname',None)) description = ccEscape(request.GET.get('description',None)) try: coverphotoid = long(request.GET.get('coverphotoid',0)) except: coverphotoid = 0 public = request.GET.get("public") if public == "true": public = True else: public = False album.name = albumname album.description = description album.public = public album.save() if coverphotoid: album.SetCoverPhoto(coverphotoid) return returnjson({"result":"ok", "album":Album2Dict(album), }, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Album does not exist"))}, resp)
def saveAlbumInfo(request, resp): id = long(request.GET.get('albumid', 0)) album = id and Album.GetAlbumByID(id) if album: albumname = ccEscape(request.GET.get('albumname', None)) description = ccEscape(request.GET.get('description', None)) try: coverphotoid = long(request.GET.get('coverphotoid', 0)) except: coverphotoid = 0 public = request.GET.get("public") if public == "true": public = True else: public = False album.name = albumname album.description = description album.public = public album.save() if coverphotoid: album.SetCoverPhoto(coverphotoid) return returnjson({ "result": "ok", "album": Album2Dict(album), }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Album does not exist")) }, resp)
def saveCoverPhoto(request, resp): albumid = long(request.GET.get('albumid',0)) album = albumid and Album.GetAlbumByID(albumid) if album: id = long(request.GET.get('photoid',0)) photo = id and Photo.GetPhotoByID(id) if photo: album.SetCoverPhoto(photo.id) return returnjson({"result":"ok", }, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Photo does not exist")), }, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Album does not exist"))}, resp)
def uploadv2(request): try: resp = HttpResponse() if request.method == "POST": fileinfo = request.META.get('HTTP_CONTENT_DISPOSITION','') if not fileinfo: return returnjson({"result":ccEscape(translate("no upload file"))}, resp) fileinfo = simplejson.loads(fileinfo) img_binary = request.raw_post_data if not img_binary: return returnjson({"result":ccEscape(translate("no image data"))}, resp) if len(img_binary) > 1024*1024*8: return returnjson({"result":ccEscape(translate("file size exceed 8M"))}, resp) filename = fileinfo["filename"] filename = filename.replace(" ","_") if filename.find(" ") != -1: return returnjson({"result":ccEscape(translate("filename can not contain space"))}, resp) filename = ccEscape(filename) albumid = long(fileinfo["albumid"]) album = Album.GetAlbumByID(albumid) if not album: return returnjson({"result":ccEscape("%s"%(translate("Album does not exist")))}, resp) owner = users.get_current_user().nickname() description = "" contenttype = getImageType(img_binary) if contenttype.find('image')==-1: return returnjson({"result":ccEscape(translate("unsupported file type"))}, resp) photo = savephoto2DB(img_binary,album,filename, description, contenttype, owner) if not photo: return returnjson({"result":ccEscape(translate("Database error"))}, resp) logging.info('%s saved to DB'%filename) res = {} res["result"]="ok" res["photoid"] = photo.id res["albumid"] = albumid PageCacheStat.CleanPageCache() return returnjson(res, resp) else: return returnjson({"result":ccEscape(translate("no upload file"))}, resp) except Exception,e: logging.exception("uploadv2 error:") return returnjson({"result":"Exception:"+str(e)}, resp)
def getAlbumInfo(request, resp): albumname = ccEscape(request.GET.get('albumname',None)) album = albumname and Album.GetAlbumByName(albumname) if album: return returnjson({"result":"ok", "album":Album2Dict(album), }, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Album does not exist"))}, resp)
def addComment(request, resp): photoid = long(request.GET.get('photoid',None)) author = ccEscape(request.GET.get('author',None)) comment_content = ccEscape(request.GET.get('comment_content',None)) if photoid and author and comment_content: photo = Photo.GetPhotoByID(photoid) if not photo: return returnjson({"result":"error", "msg":ccEscape(translate("Photo does not exist"))}, resp) if not photo.isPublic and not checkAuthorization(): return returnjson({"result":"error", "msg":ccEscape(translate("You are not authorized to access this photo"))}, resp) photo.AddComment(author, comment_content) return returnjson({"result":"ok", "comments": buildComments(photo.GetComments())}, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Pls input name and content"))}, resp)
def deleteComment(request, resp): id = long(request.GET.get('commentid',0)) comment = id and Comment.GetCommentByID(id) photoid = comment.photo.id if comment: comment.Delete() photo = Photo.GetPhotoByID(photoid) return returnjson({"result":"ok", "comments": buildComments(photo.GetComments())}, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Comment does not exist"))}, resp)
def ajaxAction(request): try: resp = HttpResponse() action = request.GET.get('action', None) logging.info(action) PageCacheStat.CleanPageCache() if action == "addcomment": return addComment(request, resp) if not checkAuthorization(): return returnjson( { "result": "error", "msg": ccEscape(translate("You are not authorized")) }, resp) if action == "setcoverphoto": return saveCoverPhoto(request, resp) elif action == "getalbum": return getAlbumInfo(request, resp) elif action == "savealbum": return saveAlbumInfo(request, resp) elif action == "clearalbum": return clearAlbumPhotos(request, resp) elif action == "deletealbum": return deleteAlbum(request, resp) elif action == "savephotodesp": return savePhotoDescription(request, resp) elif action == "deletecomment": return deleteComment(request, resp) elif action == "deletephoto": return deletePhoto(request, resp) elif action == "movephoto": return movePhoto(request, resp) return returnjson({ "result": "error", "msg": ccEscape("no action") }, resp) except Exception, e: return returnjson({"result": "error", "msg": str(e)}, resp)
def savePhotoDescription(request, resp): id = long(request.GET.get('photoid',0)) photo = id and Photo.GetPhotoByID(id) if photo: description = ccEscape(request.GET.get('description',None)) photo.description = description photo.Save() return returnjson({"result":"ok", "description":photo.description, }, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Photo does not exist"))}, resp)
def getAlbumInfo(request, resp): albumname = ccEscape(request.GET.get('albumname', None)) album = albumname and Album.GetAlbumByName(albumname) if album: return returnjson({ "result": "ok", "album": Album2Dict(album), }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Album does not exist")) }, resp)
def saveCoverPhoto(request, resp): albumid = long(request.GET.get('albumid', 0)) album = albumid and Album.GetAlbumByID(albumid) if album: id = long(request.GET.get('photoid', 0)) photo = id and Photo.GetPhotoByID(id) if photo: album.SetCoverPhoto(photo.id) return returnjson({ "result": "ok", }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Photo does not exist")), }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Album does not exist")) }, resp)
def delphoto(request, photoid): photo = Photo.GetPhotoByID(long(photoid)) if photo: photoslist = photo.album.photoslist index = (photoslist.index(photo.id)+1) % len(photoslist) photo2 = Photo.GetPhotoByID(photoslist[index]) photo.Delete() PageCacheStat.CleanPageCache() if photo2: return HttpResponseRedirect((u"/%s/%s"%(photo.album.name, photo2.name)).encode("utf-8")) else: return HttpResponseRedirect((u"/%s"%(photo.album.name)).encode("utf-8")) return returnerror(translate("Photo does not exist"))
def deletePhoto(request, resp): try: idlist = (request.GET.get('idlist','')) idlist = idlist.strip().split(',') idlist = [id for id in idlist if id] for photoid in idlist: photo = Photo.GetPhotoByID(long(photoid)) if photo: photo.Delete() return returnjson({"result":"ok", "photouid": photoid}, resp) except: return returnjson({"result":"error", "msg":ccEscape(translate("Photo does not exist"))}, resp)
def albummanage(request): if request.method == "POST": PageCacheStat.CleanPageCache() new = request.POST.get("createalbum") if new: #create album new_name = ccEscape(request.POST.get("new_name").strip()) new_public = request.POST.get("new_public") if new_public == "true": new_public = True else: new_public = False if not new_name: return returnerror(translate("Pls input album name")) new_description = ccEscape(request.POST.get("new_description")) if Album.CheckAlbumExist(new_name): return returnerror(translate("Album exist with this name")) album = Album() album.name = new_name album.public = new_public album.description = new_description album.save() return HttpResponseRedirect("/admin/album/") albums = Album.GetAllAlbumsQuery(False) content = { "albums": albums, "allalbums": albums, } return render_to_response_with_users_and_settings( 'admin/album_manage.html', content)
def clearAlbumPhotos(request, resp): id = long(request.GET.get('albumid',0)) album = id and Album.GetAlbumByID(id) if album: for photo in album.GetPhotosQuery(): photo.Delete() album.photoslist = [] album.save() album = Album.GetAlbumByID(id) return returnjson({"result":"ok", "album":Album2Dict(album), }, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Album does not exist"))}, resp)
def addComment(request, resp): photoid = long(request.GET.get('photoid', None)) author = ccEscape(request.GET.get('author', None)) comment_content = ccEscape(request.GET.get('comment_content', None)) if photoid and author and comment_content: photo = Photo.GetPhotoByID(photoid) if not photo: return returnjson( { "result": "error", "msg": ccEscape(translate("Photo does not exist")) }, resp) if not photo.isPublic and not checkAuthorization(): return returnjson( { "result": "error", "msg": ccEscape( translate( "You are not authorized to access this photo")) }, resp) photo.AddComment(author, comment_content) return returnjson( { "result": "ok", "comments": buildComments(photo.GetComments()) }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Pls input name and content")) }, resp)
def ajaxAction(request): try: resp = HttpResponse() action = request.GET.get('action',None) logging.info(action) PageCacheStat.CleanPageCache() if action == "addcomment": return addComment(request,resp) if not checkAuthorization(): return returnjson({"result":"error", "msg":ccEscape(translate("You are not authorized"))}, resp) if action == "setcoverphoto": return saveCoverPhoto(request,resp) elif action == "getalbum": return getAlbumInfo(request,resp) elif action == "savealbum": return saveAlbumInfo(request,resp) elif action == "clearalbum": return clearAlbumPhotos(request,resp) elif action == "deletealbum": return deleteAlbum(request,resp) elif action == "savephotodesp": return savePhotoDescription(request,resp) elif action == "deletecomment": return deleteComment(request,resp) elif action == "deletephoto": return deletePhoto(request,resp) elif action == "movephoto": return movePhoto(request,resp) return returnjson({"result":"error", "msg":ccEscape("no action")}, resp) except Exception,e: return returnjson({"result":"error", "msg":str(e)}, resp)
def deletePhoto(request, resp): try: idlist = (request.GET.get('idlist', '')) idlist = idlist.strip().split(',') idlist = [id for id in idlist if id] for photoid in idlist: photo = Photo.GetPhotoByID(long(photoid)) if photo: photo.Delete() return returnjson({"result": "ok", "photouid": photoid}, resp) except: return returnjson( { "result": "error", "msg": ccEscape(translate("Photo does not exist")) }, resp)
def delphoto(request, photoid): photo = Photo.GetPhotoByID(long(photoid)) if photo: photoslist = photo.album.photoslist index = (photoslist.index(photo.id) + 1) % len(photoslist) photo2 = Photo.GetPhotoByID(photoslist[index]) photo.Delete() PageCacheStat.CleanPageCache() if photo2: return HttpResponseRedirect( (u"/%s/%s" % (photo.album.name, photo2.name)).encode("utf-8")) else: return HttpResponseRedirect( (u"/%s" % (photo.album.name)).encode("utf-8")) return returnerror(translate("Photo does not exist"))
def deleteAlbum(request, resp): id = long(request.GET.get('albumid',0)) album = id and Album.GetAlbumByID(id) if album: for photo in album.GetPhotosQuery(): photo.Delete() album = Album.GetAlbumByID(id) album.delete() album = Album.GetAllAlbumsQuery().fetch(1) album = album and album[0] return returnjson({"result":"ok", "album":Album2Dict(album), }, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Album does not exist"))}, resp)
def savePhotoDescription(request, resp): id = long(request.GET.get('photoid', 0)) photo = id and Photo.GetPhotoByID(id) if photo: description = ccEscape(request.GET.get('description', None)) photo.description = description photo.Save() return returnjson({ "result": "ok", "description": photo.description, }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Photo does not exist")) }, resp)
def deleteComment(request, resp): id = long(request.GET.get('commentid', 0)) comment = id and Comment.GetCommentByID(id) photoid = comment.photo.id if comment: comment.Delete() photo = Photo.GetPhotoByID(photoid) return returnjson( { "result": "ok", "comments": buildComments(photo.GetComments()) }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Comment does not exist")) }, resp)
def clearAlbumPhotos(request, resp): id = long(request.GET.get('albumid', 0)) album = id and Album.GetAlbumByID(id) if album: for photo in album.GetPhotosQuery(): photo.Delete() album.photoslist = [] album.save() album = Album.GetAlbumByID(id) return returnjson({ "result": "ok", "album": Album2Dict(album), }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Album does not exist")) }, resp)
def deleteAlbum(request, resp): id = long(request.GET.get('albumid', 0)) album = id and Album.GetAlbumByID(id) if album: for photo in album.GetPhotosQuery(): photo.Delete() album = Album.GetAlbumByID(id) album.delete() album = Album.GetAllAlbumsQuery().fetch(1) album = album and album[0] return returnjson({ "result": "ok", "album": Album2Dict(album), }, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Album does not exist")) }, resp)
def movePhoto(request, resp): idlist = (request.GET.get('idlist','')) idlist = idlist.strip().split(',') idlist = [id for id in idlist if id] albumid = long(request.GET.get('albumid',0)) newalbumid = long(request.GET.get('newalbumid',0)) logging.info("move photos %s from album %s to %s"%(idlist,albumid,newalbumid)) newalbum = newalbumid and Album.GetAlbumByID(newalbumid) if newalbum: for photoid in idlist: photo = Photo.GetPhotoByID(long(photoid)) if photo: photo.Move2Album(newalbum) return returnjson({"result":"ok", "albumid": albumid}, resp) else: return returnjson({"result":"error", "msg":ccEscape(translate("Album does not exist"))}, resp)
def movePhoto(request, resp): idlist = (request.GET.get('idlist', '')) idlist = idlist.strip().split(',') idlist = [id for id in idlist if id] albumid = long(request.GET.get('albumid', 0)) newalbumid = long(request.GET.get('newalbumid', 0)) logging.info("move photos %s from album %s to %s" % (idlist, albumid, newalbumid)) newalbum = newalbumid and Album.GetAlbumByID(newalbumid) if newalbum: for photoid in idlist: photo = Photo.GetPhotoByID(long(photoid)) if photo: photo.Move2Album(newalbum) return returnjson({"result": "ok", "albumid": albumid}, resp) else: return returnjson( { "result": "error", "msg": ccEscape(translate("Album does not exist")) }, resp)
def swfuploadphoto(request): try: if request.method == "POST": if request.FILES: resp = HttpResponse() #resp.headers['Content-Type'] = "application/json" filedata = request.FILES.get("Filedata", None) if not filedata: return returnjson( {"result": ccEscape(translate("no upload file"))}, resp) img_binary = filedata["content"] if not img_binary: return returnjson( {"result": ccEscape(translate("no image data"))}, resp) #logging.info("filelength: %s"%(len(img_binary))) if len(img_binary) > 1024 * 1024 * 8: return returnjson( {"result": ccEscape(translate("file size exceed 8M"))}, resp) filename = request.POST.get("Filename") if filename != filedata['filename']: return returnjson( { "result": ccEscape("POST filename %s != FILES filename %s" % (filename, filedata['filename'])) }, resp) filename = filename.replace(" ", "_") if filename.find(" ") != -1: return returnjson( { "result": ccEscape( translate("filename can not contain space")) }, resp) filename = ccEscape(filename) albumname = ccEscape(request.POST.get("albumname")) description = ccEscape(request.POST.get("description", "")) try: owner = users.get_current_user().nickname() except: owner = request.POST.get("owner", "unknown") contenttype = getImageType(img_binary) if contenttype.find('image') == -1: return returnjson( { "result": ccEscape( translate("unsupported file type")) }, resp) album = Album.GetAlbumByName(albumname) if not album: return returnjson( { "result": ccEscape( "%s %s" % (translate("Album does not exist"), albumname)) }, resp) photo = savephoto2DB(img_binary, album, filename, description, contenttype, owner) if not photo: return returnjson( {"result": ccEscape(translate("Database error"))}, resp) logging.info('%s saved to DB' % filename) res = {} res["result"] = "ok" res["id"] = photo.id PageCacheStat.CleanPageCache() return returnjson(res, resp) if checkAuthorization(): albums = Album.all() else: return returnerror(translate("You are not authorized to upload")) content = { "albums": albums, "allalbums": albums, } return render_to_response_with_users_and_settings( 'admin/swfupload.html', content) except Exception, e: logging.exception("upload error:") return returnerror(str(e))
def adminerror(request): return returnerror(translate("Room 404, nobody living here"))
def render(self, context): value = resolve_variable(self.value, context) if self.noop: return value else: return translate(value)
def uploadv2(request): try: resp = HttpResponse() if request.method == "POST": fileinfo = request.META.get('HTTP_CONTENT_DISPOSITION', '') if not fileinfo: return returnjson( {"result": ccEscape(translate("no upload file"))}, resp) fileinfo = simplejson.loads(fileinfo) img_binary = request.raw_post_data if not img_binary: return returnjson( {"result": ccEscape(translate("no image data"))}, resp) if len(img_binary) > 1024 * 1024 * 8: return returnjson( {"result": ccEscape(translate("file size exceed 8M"))}, resp) filename = fileinfo["filename"] filename = filename.replace(" ", "_") if filename.find(" ") != -1: return returnjson( { "result": ccEscape(translate("filename can not contain space")) }, resp) filename = ccEscape(filename) albumid = long(fileinfo["albumid"]) album = Album.GetAlbumByID(albumid) if not album: return returnjson( { "result": ccEscape("%s" % (translate("Album does not exist"))) }, resp) owner = users.get_current_user().nickname() description = "" contenttype = getImageType(img_binary) if contenttype.find('image') == -1: return returnjson( {"result": ccEscape(translate("unsupported file type"))}, resp) photo = savephoto2DB(img_binary, album, filename, description, contenttype, owner) if not photo: return returnjson( {"result": ccEscape(translate("Database error"))}, resp) logging.info('%s saved to DB' % filename) res = {} res["result"] = "ok" res["photoid"] = photo.id res["albumid"] = albumid PageCacheStat.CleanPageCache() return returnjson(res, resp) else: return returnjson( {"result": ccEscape(translate("no upload file"))}, resp) except Exception, e: logging.exception("uploadv2 error:") return returnjson({"result": "Exception:" + str(e)}, resp)
def wrapper(self, *args, **kwargs): if not checkAuthorization(): return returnerror(translate("You are not authorized")) else: return method(self, *args, **kwargs)
def swfuploadphoto(request): try: if request.method == "POST": if request.FILES: resp = HttpResponse() #resp.headers['Content-Type'] = "application/json" filedata = request.FILES.get("Filedata",None) if not filedata: return returnjson({"result":ccEscape(translate("no upload file"))}, resp) img_binary = filedata["content"] if not img_binary: return returnjson({"result":ccEscape(translate("no image data"))}, resp) #logging.info("filelength: %s"%(len(img_binary))) if len(img_binary) > 1024*1024*8: return returnjson({"result":ccEscape(translate("file size exceed 8M"))}, resp) filename = request.POST.get("Filename") if filename != filedata['filename']: return returnjson({"result":ccEscape("POST filename %s != FILES filename %s" %(filename, filedata['filename'])) }, resp) filename = filename.replace(" ","_") if filename.find(" ") != -1: return returnjson({"result":ccEscape(translate("filename can not contain space"))}, resp) filename = ccEscape(filename) albumname = ccEscape(request.POST.get("albumname")) description = ccEscape(request.POST.get("description","")) try: owner = users.get_current_user().nickname() except: owner = request.POST.get("owner","unknown") contenttype = getImageType(img_binary) if contenttype.find('image')==-1: return returnjson({"result":ccEscape(translate("unsupported file type"))}, resp) album = Album.GetAlbumByName(albumname) if not album: return returnjson({"result":ccEscape("%s %s"%(translate("Album does not exist"),albumname))}, resp) photo = savephoto2DB(img_binary,album,filename, description, contenttype, owner) if not photo: return returnjson({"result":ccEscape(translate("Database error"))}, resp) logging.info('%s saved to DB'%filename) res = {} res["result"]="ok" res["id"] = photo.id PageCacheStat.CleanPageCache() return returnjson(res, resp) if checkAuthorization(): albums = Album.all() else: return returnerror(translate("You are not authorized to upload")) content = { "albums": albums, "allalbums": albums, } return render_to_response_with_users_and_settings('admin/swfupload.html',content) except Exception,e: logging.exception("upload error:") return returnerror(str(e))