コード例 #1
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)   
コード例 #2
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #3
0
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)
コード例 #4
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #5
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #6
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #7
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #8
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #9
0
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)
コード例 #10
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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"))
コード例 #14
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #15
0
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)
コード例 #16
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #17
0
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)
コード例 #18
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #19
0
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)
コード例 #20
0
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"))
コード例 #21
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #22
0
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)
コード例 #23
0
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)
コード例 #24
0
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)
コード例 #25
0
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)
コード例 #26
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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)
コード例 #27
0
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)
コード例 #28
0
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))
コード例 #29
0
def adminerror(request):
    return returnerror(translate("Room 404, nobody living here"))
コード例 #30
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
def adminerror(request):
    return returnerror(translate("Room 404, nobody living here"))
コード例 #31
0
ファイル: translate.py プロジェクト: oyoyoyoy/gaephotos
 def render(self, context):
     value = resolve_variable(self.value, context)
     if self.noop:
         return value
     else:
         return translate(value)
コード例 #32
0
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)
コード例 #33
0
ファイル: utils.py プロジェクト: wenshan1/gaephotos
 def wrapper(self, *args, **kwargs):
     if not checkAuthorization():
         return returnerror(translate("You are not authorized"))
     else:
         return method(self, *args, **kwargs)
コード例 #34
0
ファイル: utils.py プロジェクト: oyoyoyoy/gaephotos
 def wrapper(self, *args, **kwargs):
     if not checkAuthorization():
         return returnerror(translate("You are not authorized"))
     else:
         return method(self, *args, **kwargs)
コード例 #35
0
ファイル: admin.py プロジェクト: oyoyoyoy/gaephotos
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))
コード例 #36
0
ファイル: translate.py プロジェクト: wenshan1/gaephotos
 def render(self, context):
     value = resolve_variable(self.value, context)
     if self.noop:
         return value
     else:
         return translate(value)