示例#1
0
def checktest(tt):
    def gpng(txt):
        url = 'https://api.handwriting.io/render/png'
        params = {
            'handwriting_id': '2D5S18M00002',
            'handwriting_size': 'auto',
            'width': '500px',
            'height': '320px',
            'line_spacing': '1.5',
            'line_spacing_variance': 0.1,
            'text': 'Though bladed corn be lodged and trees blown down'
        }

        params['text'] = txt
        r = requests.get(url, auth=TOKEN_PAIR, params=params)
        return r

    correct_time = time.strftime('%m_%d_%H_%M_%S', time.localtime(time.time()))
    bucket = Bucket('tempic')  #修改成你自己的storage名
    bucket.put()
    bucket.post(acl='.r:*', metadata={'expires': '1d'})
    f = gpng(tt)
    data = f.content
    bucket.put_object(correct_time + ".png", data)
    file_url = bucket.generate_url(correct_time + ".png")
    return file_url
def WriteZipFile(filename):
    """
    保存所有kvdb数据,压缩成zip然后aes cbc加密
    """
    FileBuffer = io.BytesIO()
    datalist = FindKVDBKeys()
    if datalist:
        zfile = zipfile.ZipFile(FileBuffer,mode='w')
        for data in datalist:
            # bytedata = (data + "tttttttt").encode(encoding="utf-8")
            bytedata = kv.get(str(data))
            if bytedata:
                # print(bytedata)
                zfile.writestr(str(data),bytedata)
        zfile.close() 
        key = config.keyDataBackUp
        iv = Random.new().read(AES.block_size)
        cipher = AES.new(key, AES.MODE_ECB)
        CryptIV = cipher.encrypt(iv)
        cipher = AES.new(key, AES.MODE_CBC, iv)
        bytebuffer = FileBuffer.getvalue()
        lendata = 16 - len(bytebuffer)%16
        bytebuffer = bytebuffer + chr(lendata)*lendata
        #print(bytebuffer)
        CryptData = CryptIV + cipher.encrypt(bytebuffer)
        bucket = Bucket('backup')
        # print(FileBuffer.getvalue())
        bucket.put_object(filename,CryptData)
        FileBuffer.close()
示例#3
0
def put_obj2storage(file_name = '', data = '', expires='365', type=None, encoding= None, domain_name = setting.STORAGE_DOMAIN_NAME):
    import sae.const  
    access_key = sae.const.ACCESS_KEY  
    secret_key = sae.const.SECRET_KEY  
    appname = sae.const.APP_NAME  
    domain_name = "attachment" 
    bucket = Bucket(domain_name)
    bucket.put()
    bucket.post(metadata={'expires': '2d'})
    attrs = bucket.stat()
    bucket.put_object(file_name, data)
    file_url = bucket.generate_url(file_name)
    #begin to created
    im = Image.open("/s/attachment/" + file_name)
    #im = Image.open(bucket.get_object_contents(file_name))
    im.thumbnail((320,200))
    #im.save("/s/attachment/" + file_name+"_thumbnail.jpg")
    imgext = re.search("(\.\w*)$", file_name)
    if imgext:
        thumbnail_name = file_name + "_thumbnail"+ imgext.group(1)
    else:                
        thumbnail_name = file_name + "_thumbnail.jpg"
    pureext = imgext.group(1)[1:]
    if pureext == "jpg":
        pureext = "jpeg"
    #bucket.put_object(thumbnail_name, im.tostring('jpeg', 'RGB'))
    bucket.put_object(thumbnail_name, im.tostring("jpeg", 'RGB'))
    thumbnail_url = bucket.generate_url(thumbnail_name)
    #s = sae.storage.Client()
    #ob = sae.storage.Object(data = data, cache_control='access plus %s day' % expires, content_type= type, content_encoding= encoding)
    return file_url, thumbnail_url
示例#4
0
def imgupload(req):
    username = req.session.get("username", '')
    if username == '':
        return HttpResponseRedirect('/admin')
    else:
        if req.POST:
            post = req.POST
            if req.FILES:
                img = req.FILES['img']
                # s = Client()
                bucket = Bucket('img')
                # st = bucket.conn.__dict__
                # if bucket.stat()['bytes'] == '0':
                bucket.put()
                bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn')
                tut = img._name.split('.')[-1]
                dt_str = datetime.strftime(datetime.now(), '%Y%m%d%H%M%S')
                filename = dt_str + str(randint(100, 999)) + '.' + tut
                bucket.put_object(filename, img)
                # s.put('hitmstcweb',filename,img)
                image = Img(
                   name = post.get('name','dt_str'), \
                   descripe = post.get('descripe',''), \
                   img = bucket.generate_url(filename), \
                   author = User.objects.get(username = username), \
                   )
                image.save()
    content = {'last_event': get_last_event()}
    return render_to_response('imgupload.html',
                              content,
                              context_instance=RequestContext(req))
示例#5
0
    def store_image(self):
        """
        download image from WeChat url and store in storage. update stored_url
        """
        try:
            response = urllib2.urlopen(self.input_url)

            if self.is_local_storage:
                # just use the current url
                self.stored_url = self.input_url

            else:
                # save to remote storage
                from sae.storage import Bucket
                # print ("in else "+self.storage_domain_name)
                bucket = Bucket('wechatimgsave')
                filename = self.definefilename(self.input_url, '.jpeg')
                bucket.put_object(obj=filename,
                                  contents=response.read(),
                                  content_type='image/jpeg',
                                  content_encoding=None,
                                  metadata=None)
                self.stored_url = bucket.generate_url(filename)

        except urllib2.HTTPError as e:
            logging.error("Error in opening " + self.input_url +
                          "with error code: " + e.code)
示例#6
0
文件: admin.py 项目: yobin/saepy-log
def put_obj2storage(file_name="", data="", expires="365", type=None, encoding=None, domain_name=STORAGE_DOMAIN_NAME):
    whichStorage = int(getAttr("DEFAULT_STORAGE"))
    if whichStorage == 0:
        bucket = Bucket(domain_name)
        bucket.put_object(file_name, data, content_type=type, content_encoding=encoding)
        return bucket.generate_url(file_name)
    elif whichStorage == 1:
        import qiniu.conf, qiniu.rs, qiniu.io

        qiniu.conf.ACCESS_KEY = getAttr("QNKEY")
        qiniu.conf.SECRET_KEY = getAttr("QNSECRET")
        policy = qiniu.rs.PutPolicy(getAttr("QNSTORAGE"))
        uptoken = policy.token()
        key = file_name
        if key[0] == "/":
            key = key[1:]
        ret, err = qiniu.io.put(uptoken, key, data)
        if err is not None:
            print "err = ", err
            return ""
        ###下面返回的网址有可能不同,有的是 xxxx.u.qiniudn.com 请改为自己的
        return "http://%s/%s" % (getAttr("QNDOMAIN"), key)
    else:
        # 可后续扩展其他云存储
        pass
    return ""
示例#7
0
    def POST(self):
        context = web.input().context.encode('utf-8')
        taskid = web.input().taskid
        file_name = web.input().file_name

        # Only segement the title and keyword
        seg_content = []
        lines = context.split('\r')
        for line in lines:
            tmp = line.split('\t')
            seg_content.append(tmp[1])
            seg_content.append(tmp[2])

        results = get_seg_result('\t'.join(seg_content), keep_return=True)
        newcontent = assemble_result(context, results['filtered_result'], taskid=taskid, file_name=file_name)

        # log_message('Task ' + taskid + ' is excecuted (post), result: ' + '<br /> '.join(newcontent))

        # submit to server
        try:
            # payload = urllib.urlencode([('seg_result', ''.join(newcontent).encode('utf-8')), ('taskid', taskid), ])
            # req = urllib2.urlopen(SUBMIT_RESULT_URL, payload)
            # log_message('submit task ' + str(taskid) + ' to server' + req.read())
            from sae.storage import Bucket
            bucket = Bucket('mozillaup')
            bucket.put_object(file_name + '/' + str(taskid), ''.join(newcontent).encode('utf-8'))
            # log_message('submit task ' + str(taskid) + ' to bucket')
        except Exception, ex:
            print ex
            result = 'Encounter an error when submit task' + type(ex).__name__ + ' ' + str(ex.args)
            log_message(result)
示例#8
0
文件: admin.py 项目: yobin/saepy-log
def put_obj2storage(file_name='',
                    data='',
                    expires='365',
                    type=None,
                    encoding=None,
                    domain_name=STORAGE_DOMAIN_NAME):
    whichStorage = int(getAttr('DEFAULT_STORAGE'))
    if whichStorage == 0:
        bucket = Bucket(domain_name)
        bucket.put_object(file_name,
                          data,
                          content_type=type,
                          content_encoding=encoding)
        return bucket.generate_url(file_name)
    elif whichStorage == 1:
        import qiniu.conf, qiniu.rs, qiniu.io
        qiniu.conf.ACCESS_KEY = getAttr('QNKEY')
        qiniu.conf.SECRET_KEY = getAttr('QNSECRET')
        policy = qiniu.rs.PutPolicy(getAttr('QNSTORAGE'))
        uptoken = policy.token()
        key = file_name
        if key[0] == "/":
            key = key[1:]
        ret, err = qiniu.io.put(uptoken, key, data)
        if err is not None:
            print 'err = ', err
            return ''
        ###下面返回的网址有可能不同,有的是 xxxx.u.qiniudn.com 请改为自己的
        return "http://%s/%s" % (getAttr('QNDOMAIN'), key)
    else:
        #可后续扩展其他云存储
        pass
    return ''
示例#9
0
    def delThenSetToSAEStorage(filename, data):
        monkey.patch_all()
        bucket = Bucket('media')
        bucket.put()
        bucket.post(
            acl=
            '.r:.sinaapp.com,.r:sae.sina.com.cn,.r:.vipsinaapp.com,.r:.qq.com,.r:.wx.qq.com',
            metadata={'expires': '7d'})
        tmp = __method_get_namelist(filename)
        if tmp == None:
            return None
        filetype = tmp[1]

        if filetype.lower() in ('jpg', 'jpeg', 'bmp', 'gif', 'png'):
            filepath = 'image/' + filename
        elif filetype.lower() in ("swf", "wmv"):
            filepath = 'video/' + filename
        elif filetype.lower() in ("wma", "mp3"):
            filepath = 'music/' + filename
        else:
            filepath = filename

        try:
            bucket.delete_object(filepath)
        except Exception:
            pass

        bucket.put_object(filepath, data)
        return bucket.generate_url(filepath)
def add_object(bucket_name, folder_path, object_name, object_data):
    """add object

    Args:
        bucket_name: name of bucket
        folder_path: folder path
        object_name: name of object
        object_data: object data

    Returns:
        True if add successfully
        False if object existed
    """
    bucket = Bucket(bucket_name)
    folder_path = complete_folder(folder_path)
    object_path = "%s%s" % (folder_path, object_name)

    virtual_object_path = "/s/%s/%s" % (bucket_name, object_path)
    print 'class StorageInterface add_object() virtual_object_path: %s' % virtual_object_path
    if is_file_existed(virtual_object_path):
        print 'class StorageInterface add_object() file existed! object_path: %s' % object_path
        return False
    
    print 'class StorageInterface add_object() start put_object() object_path: %s' % object_path
    # print 'class StorageInterface add_object() start put_object() object_data[0]: %s' % str(object_data)[0]
    bucket.put_object(object_path, object_data)
    print 'end'
    return True
示例#11
0
文件: views.py 项目: firsthym/rebang
def put_obj2storage(file_name = '', data = '', expires='365', type=None, encoding= None, domain_name = setting.STORAGE_DOMAIN_NAME):
    import sae.const  
    access_key = sae.const.ACCESS_KEY  
    secret_key = sae.const.SECRET_KEY  
    appname = sae.const.APP_NAME  
    domain_name = "attachment" 
    bucket = Bucket(domain_name)
    bucket.put()
    bucket.post(metadata={'expires': '2d'})
    attrs = bucket.stat()
    bucket.put_object(file_name, data)
    file_url = bucket.generate_url(file_name)
    #begin to created
    im = Image.open("/s/attachment/" + file_name)
    #im = Image.open(bucket.get_object_contents(file_name))
    im.thumbnail((320,200))
    #im.save("/s/attachment/" + file_name+"_thumbnail.jpg")
    imgext = re.search("(\.\w*)$", file_name)
    if imgext:
        thumbnail_name = file_name + "_thumbnail"+ imgext.group(1)
    else:                
        thumbnail_name = file_name + "_thumbnail.jpg"
    pureext = imgext.group(1)[1:]
    if pureext == "jpg":
        pureext = "jpeg"
    #bucket.put_object(thumbnail_name, im.tostring('jpeg', 'RGB'))
    bucket.put_object(thumbnail_name, im.tostring("jpeg", 'RGB'))
    thumbnail_url = bucket.generate_url(thumbnail_name)
    #s = sae.storage.Client()
    #ob = sae.storage.Object(data = data, cache_control='access plus %s day' % expires, content_type= type, content_encoding= encoding)
    return file_url, thumbnail_url
示例#12
0
def imgupload(req):
	username = req.session.get("username",'')
	if username == '':
		return HttpResponseRedirect('/admin')
	else:
		if req.POST:
			post = req.POST
			if req.FILES:
				img = req.FILES['img']
				# s = Client()
				bucket = Bucket('img')
				# st = bucket.conn.__dict__
				# if bucket.stat()['bytes'] == '0':
				bucket.put()
				bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn')
				tut = img._name.split('.')[-1]
				dt_str = datetime.strftime(datetime.now(),'%Y%m%d%H%M%S')
				filename = dt_str + str(randint(100,999)) + '.' + tut
				bucket.put_object(filename,img)
				# s.put('hitmstcweb',filename,img)
				image = Img(
							name = post.get('name','dt_str'), \
							descripe = post.get('descripe',''), \
							img = bucket.generate_url(filename), \
							author = User.objects.get(username = username), \
							)
				image.save()
	content = {'last_event':get_last_event()}
	return render_to_response('imgupload.html',content,context_instance = RequestContext(req));
示例#13
0
def initialize(*args):
    global trie, FREQ, total, min_freq, initialized
    if len(args)==0:
        dictionary = DICTIONARY
    else:
        dictionary = args[0]
    with DICT_LOCK:
        if initialized:
            return
        if trie:
            del trie
            trie = None

        t1 = time.time()

        cache_file = 'jieba.cache'
        default_dict = dictionary
        default_bucket = getattr(settings, 'STORAGE_BUCKET_NAME')
        bucket = Bucket(default_bucket)

        cache_file_content = bucket.get_object_contents(dictionary)
        dict_stamp = bucket.stat_object(default_dict)['timestamp']

        load_from_cache_fail = True
        try:
            cache_stamp = bucket.stat_object(cache_file)['timestamp']
        except:
            cache_exists = False
        else:
            if cache_stamp > dict_stamp:
                logger.debug("loading model from cache %s" % cache_file)
                try:
                    cache_content = bucket.get_object_contents(cache_file)
                    trie,FREQ,total,min_freq = marshal.loads(cache_content)
                    load_from_cache_fail = False
                except:
                    load_from_cache_fail = True

        if load_from_cache_fail:
            trie,FREQ,total = gen_trie(cache_file_content)
            FREQ = dict([(k,log(float(v)/total)) for k,v in FREQ.iteritems()]) #normalize
            min_freq = min(FREQ.itervalues())
            logger.debug("dumping model to file cache %s" % cache_file)
            try:
                tmp_suffix = "."+str(random.random())
                cache_file = 'dict' + tmp_suffix + '.cache'
                cache_file = os.path.join(tempfile.gettempdir(), cache_file)
                with open(cache_file,'wb') as temp_cache_file:
                    marshal.dump((trie,FREQ,total,min_freq),temp_cache_file)
                if cache_exists:
                    bucket.delete_object('jieba.cache')
                bucket.put_object('jieba.cache', open(cache_file, 'rb'))
            except:
                logger.error("dump cache file failed.")
                logger.exception("")

        initialized = True

        logger.debug("loading model cost %s seconds." % (time.time() - t1))
        logger.debug("Trie has been built succesfully.")
示例#14
0
    def post(self, id):
        id = int(id)
        from sae.storage import Bucket

        bucket = Bucket('audio')
        fid = str(self.current_user) + datetime.now().strftime('/%Y-%m-%dT%H-%M-%S')
        name = fid + '.wav'
        #length = int(request.get_header('content-length',0))

        bucket.put_object(name, self.request.body)

        name = bucket.generate_url(name)

        sss = Session()
        model = RoomChat()
        model.room_id = id
        model.content_type = 'audio'
        model.content = name
        model.user_name = self.user.name
        model.user_id = self.current_user
        model.create_at = datetime.now()

        sss.add(model)
        sss.commit()

        ls = GetTop.ajax(id)
        self.render_list(*ls)
示例#15
0
def UploadFile(file_name, file_content):
    global domain_name, maxSize
    #Log("UploadFile")

    #import sae.const
    #access_key = sae.const.ACCESS_KEY
    #secret_key = sae.const.SECRET_KEY
    #appname = sae.const.APP_NAME

    try:
        from sae.storage import Bucket
        bucket = Bucket(domain_name)

        file_content.seek(0, 2)
        length = file_content.tell()
        if (length > maxSize):
            Log("UploadFile oversize")
            return "oversize"
        else:
            file_name = file_name.replace(' ', '')
            file_content.seek(0)
            bucket.put_object(file_name, file_content.read())
            #url = bucket.generate_url(file_name)
            url = "http://applinzi.ddianke.com/%s" % file_name
            Log("UploadFile url %s" % url)
            return url
    except Exception, e:
        Log("Error when UploadFile: %s" % e)
        return None
示例#16
0
def upload_file_handle(f, user_id):
    from sae.storage import Bucket
    bucket = Bucket('image')
    bucket.put()
    file_postfix = f.name.split('.')[-1]
    file_name = str(user_id) + '.' + file_postfix
    bucket.put_object(file_name, f.read())
    return 'http://sumioo-image.stor.sinaapp.com/' + file_name
示例#17
0
文件: utils.py 项目: sumioo/demo
def upload_file_handle(f,user_id):
    from sae.storage import Bucket
    bucket=Bucket('image')
    bucket.put()
    file_postfix=f.name.split('.')[-1]
    file_name=str(user_id)+'.'+file_postfix
    bucket.put_object(file_name, f.read())
    return 'http://sumioo-image.stor.sinaapp.com/'+file_name
示例#18
0
 def savePageAmazon(self, params):
     url = self.amazonUrlBase + self.amazonUrlMap.get(params['category']) + self.amazonUrlTail + params['id']
     page = self.getPage(url)
     try:
         conn = Connection(accesskey='ym51nzx10z', secretkey='h0kxmzj2ly13jjj1m0jjly41li1wimizzz2w2m32', retries=3)
         spider = Bucket('amazon', conn)
         spider.put_object(params['category'] + '/' + params['id'], page)
     except Exception, e:
         print e
示例#19
0
文件: views.py 项目: yumendy/shsj
def submit_report(req):
	username = req.session.get('username','')
	content = {'active_menu':'submitReport','num_need_check':num_need_check()}
	status = ''
	if username != '':
		user = MyUser.objects.get(user__username = username)
		content['user'] = user
	else:
		return HttpResponseRedirect('/login/')
	if req.POST:
		post = req.POST
		if req.FILES:
			img1 = req.FILES['img1']
			img2 = req.FILES['img2']
			bucket = Bucket('img')
			bucket.put()
			bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn')
			tut1 = img1._name.split('.')[-1]
			tut2 = img2._name.split('.')[-1]
			if tut1.lower() not in ['jpg','jpeg','bmp','gif','png']:
				tut1 = 'jpg'
			if tut2.lower() not in ['jpg','jpeg','bmp','gif','png']:
				tut2 = 'jpg'
			dt_str = datetime.datetime.strftime(datetime.datetime.now(),'%Y%m%d%H%M%S')
			filename1 = dt_str + str(randint(100,999)) + '.' + tut1
			filename2 = dt_str + str(randint(100,999)) + '.' + tut2
			bucket.put_object(filename1,img1)
			bucket.put_object(filename2,img2)
		info = post.get('info','')
		if len(info) < 500:
			status = 'info_short'
		else:
			report = Report(
							name = post.get('name',''),
							start_time = post.get('start_time',''),
							end_time = post.get('end_time',''),
							address = post.get('address',''),
							status = 1,
							apply_time = 0,
							apply_score = 0,
							report_type = post.get('report_type',''),
							author_type = post.get('author_type',''),
							info_type = post.get('info_type',''),
							author = user,
							img1 = bucket.generate_url(filename1), \
							img2 = bucket.generate_url(filename2), \
							)
			if post.get('info_type','') == '2':
				a = re.compile(r'(<script)(.*)(>)',re.I)
				res = r'&lt;script\2&gt;'
				report.info = a.sub(res,info)
			else:
				report.info = info
			report.save()
			status = 'success'
		content['status'] = status
	return render_to_response('submitreport.html', content, context_instance = RequestContext(req))
示例#20
0
 def save_with_bucket(self, _bucket, fname, fcontent):
     '''
     _bucket is customer bucket name
     '''
     bk = Bucket(_bucket)
     import StringIO
     b = StringIO.StringIO(fcontent)
     bk.put_object(fname, b.read())
     return bk.generate_url(fname)
示例#21
0
def save_img(uid,device_name,file1):
    filename = file1.name
    timestamp=filename.split(".")[0]
    url="www.baidu.com"
    if 'SERVER_SOFTWARE' in os.environ:
        bucket = Bucket('domain2')
        bucket.put_object(filename, file1)
        url = bucket.generate_url(filename)
    image=Img.create(uid=uid,timestamp=timestamp,device_name=device_name,url=url)
    image.save()
示例#22
0
def edit0(request):
    pname = pcomment = pmood = newname = 0
    from sae.storage import Bucket
    bucket = Bucket('abc')
    if request.POST:
        if request.POST.has_key('correct'):
            if request.GET.has_key('atitle'):
                pname = request.GET['atitle']
                pn = t.objects.all()
                if (len(pn)!= 0):
                    pname = pn[0].title
                    for i in pn:
                        i.delete()
                we = imagess.objects.filter(title = pname)
                if (len(we)!= 0):
                    img = bucket.get_object_contents('stati/'+pname)
                    im = Image.open(StringIO.StringIO(img))
                    imgout = StringIO.StringIO()
                    im.save(imgout,"jpeg")
                    img_data = imgout.getvalue()
                    we[0].title = request.POST['cname']+'.jpg'
                    newname = we[0].title
                    if (newname != pname):
                        ne = t(title = newname)
                        ne.save()
                        bucket.put_object('stati/'+newname, img_data)
                        im = Image.open(StringIO.StringIO(img))
                        out = im.resize((128, 128))
                        imgout = StringIO.StringIO()
                        out.save(imgout,"jpeg")
                        img_data = imgout.getvalue()
                        bucket.put_object('manage/'+newname, img_data)
                        bucket.delete_object('manage/'+pname)
                        bucket.delete_object('stati/'+pname)
                    pname = newname
                    we[0].comment = request.POST['ccomment']
                    we[0].mood = request.POST['cmood']
                    we[0].save()
            pname = request.POST['cname']+'.jpg'
            pcomment = request.POST['ccomment']
            pmood = request.POST['cmood']
    elif request.GET.has_key('atitle'):
        if (pname == 0):
            pname = request.GET['atitle']
            p = t(title = pname)
            p.save()
            we = imagess.objects.filter(title = pname)
            if (len(we)!= 0):
                pcomment = we[0].comment
                pmood = we[0].mood
    if (pname!=0):
        pname = pname[:-4]
        
    return render_to_response('editt.html',{'pname':pname,'newname':newname, \
    'pmood': pmood, 'pcomment':pcomment},context_instance=RequestContext(request))   
示例#23
0
def put_obj2storage(file_name='',
                    data='',
                    expires='365',
                    type=None,
                    encoding=None,
                    domain_name=STORAGE_DOMAIN_NAME):
    bucket = Bucket(domain_name)
    bucket.put_object(file_name,
                      data,
                      content_type=type,
                      content_encoding=encoding)
    return bucket.generate_url(file_name)
示例#24
0
def upload_storage(bucketname=BUCKET, savename="test.txt", filedata=None):
    if bucketname and savename and filedata:
        if DEBUG:
            return None
        from sae.storage import Bucket
        bucket = Bucket(bucketname)
        if savename[0] == "/":
            savename = savename[1:]
        bucket.put_object(savename, filedata)
        return bucket.generate_url(savename)
    else:
        return False
示例#25
0
def upload_storage(bucketname=BUCKET, savename="test.txt", filedata=None):
    if bucketname and savename and filedata:
        if DEBUG:
            return None
        from sae.storage import Bucket
        bucket = Bucket(bucketname)
        if savename[0]=="/":
            savename = savename[1:]
        bucket.put_object(savename, filedata)
        return bucket.generate_url(savename)
    else:
        return False
示例#26
0
def thumbnail(request,filename):
    bucket = Bucket('upload')
    bucket.put()
    bucket.put_object("image/"+filename, request.FILES['file'])

    obj = bucket.get_object_contents("image/"+filename)
    image = Image.open(StringIO(obj))
    image.thumbnail((160,120),Image.ANTIALIAS)
    imgOut = StringIO()
    image.save(imgOut, 'jpeg')
    img_data = imgOut.getvalue()
    bucket.put_object('thumbnail/'+filename, img_data)
    imgOut.close()
示例#27
0
文件: views.py 项目: wangjun/Everyday
def thumbnail(request, filename):
    bucket = Bucket('upload')
    bucket.put()
    bucket.put_object("image/" + filename, request.FILES['file'])

    obj = bucket.get_object_contents("image/" + filename)
    image = Image.open(StringIO(obj))
    image.thumbnail((160, 120), Image.ANTIALIAS)
    imgOut = StringIO()
    image.save(imgOut, 'jpeg')
    img_data = imgOut.getvalue()
    bucket.put_object('thumbnail/' + filename, img_data)
    imgOut.close()
示例#28
0
 def savePageExceptAmazon(self, site, id):
     url = getattr(self, site + 'Url')
     if site == 'douban':
         url += str( (int(id) - 1) * 10 )
     else:
         url += str(id)
     page = self.getPage(url)
     try:
         conn = Connection(accesskey='ym51nzx10z', secretkey='h0kxmzj2ly13jjj1m0jjly41li1wimizzz2w2m32', retries=3)
         spider = Bucket(site, conn)
         spider.put_object(str(id), page)
     except Exception, e:
         print e
示例#29
0
 def store_image(self):
     match = re.search(r'p[\d]+.jpg', self.douban.images)
     if match:
         image = urllib2.urlopen('http://img4.douban.com/view/photo/raw/public/' + match.group()).read()
     else:
         image = urllib2.urlopen(self.douban.images).read()
     from sae.storage import Bucket
     bucket = Bucket('infopic')
     bucket.put()
     filename = '%s.jpg' % self.id
     bucket.put_object(filename, image)
     url = bucket.generate_url(filename)
     self.images = url
     self.save()
示例#30
0
def initialize(dictionary=None):
    global pfdict, FREQ, total, min_freq, initialized, DICTIONARY, DICT_LOCK
    if not dictionary:
        dictionary = DICTIONARY
    with DICT_LOCK:
        if initialized:
            return

        logger.debug("Building prefix dict from %s ..." % X_CACHE_FILE)
        t1 = time.time()
        cache_file = X_CACHE_FILE
        if settings.DEBUG:
            bucket = Bucket('xkong1946')
        else:
            bucket = Bucket()

        dict_stamp = bucket.stat_object(dictionary)['timestamp']
        cache_stamp = bucket.stat_object(cache_file)['timestamp']

        load_from_cache_fail = True
        if cache_stamp > dict_stamp:
            logger.debug("Loading model from cache %s" % cache_file)
            try:
                cf = bucket.get_object_contents(cache_file)
                pfdict, FREQ, total = marshal.loads(cf)
                # prevent conflict with old version
                load_from_cache_fail = not isinstance(pfdict, set)
            except Exception, e:
                print e
                load_from_cache_fail = True

        if load_from_cache_fail:
            dict_file_content = bucket.get_object_contents(dictionary)
            pfdict, FREQ, total = gen_pfdict(dict_file_content)
            logger.debug("Dumping model to file cache %s" % cache_file)
            try:
                import StringIO
                fd = StringIO.StringIO()
                fd.write(marshal.dumps((pfdict, FREQ, total)))
                if bucket.stat_object(X_CACHE_FILE):
                    bucket.delete_object(X_CACHE_FILE)
                bucket.put_object(X_CACHE_FILE, fd.getvalue())

            except Exception:
                logger.exception("Dump cache file failed.")

        initialized = True

        logger.debug("Loading model cost %s seconds." % (time.time() - t1))
        logger.debug("Prefix dict has been built succesfully.")
示例#31
0
def data_backup():
    """backup all data into sae storage

    """
    date = time.strftime("%Y_%m_%d")
    filename = 'mydata_' + date + '.json'
    kv = sae.kvdb.Client()
    myData = dict(kv.get_by_prefix(''))
    kv.disconnect_all()

    bucket = Bucket('t')
    bucket.put()
    myDataJson = json.dumps(myData)
    bucket.put_object(filename, myDataJson)
    return None
示例#32
0
 def save_file(self, filename, imagebinary):
      if 'sae' in modules:
             from sae.storage import Bucket
             fpath = r'http://oerp-oerp.stor.sinaapp.com/'+filename  # 完整的路径
             session = getSession()
             img = Images(filename, fpath)
             session.add(img)
             session.commit()
             bucket = Bucket('oerp')                   # 从云平台拿到一个Bucket容器
             bucket.put_object(filename, imagebinary)   # 存取一个文件到SAE 云平台   bucket.put_object(path,imagebinary)
             self.set_header('Content-Type', 'text/xml; charset=utf-8')
             self.write('<image src="%s"/>' % fpath)
      else:
             import io        # 引入IO包
             with io.open('e:\upload\/'+filename, 'wb') as file:
                 file.write(imagebinary)
示例#33
0
def retrieve(url, bucket, filename, retry = 5):
    """保存url的图片到storage"""
    from sae.storage import Bucket
    for x in xrange(1,6):
        try:
            img = urllib2.urlopen(url)
            b = Bucket(bucket)
            mime = RE_MIME.search(str(img.info()))
            if mime:
                mime = mime.groups()[0]
            b.put_object(filename,img.read(),mime)
            print 'Save "%s" to "%s/%s", MimeType:"%s"' % (url,bucket,filename,mime)
            return "http://akbquiz-%s.stor.sinaapp.com/" % (bucket,quote(filename.encode('utf-8')))
        except Exception, e:
            print 'Save image file "%s" failed, retrying: %d. (%s)' %(url, x, e)
        pass
示例#34
0
def sae_save_file( f , storage_name , file_name = None ):
    from sae.storage import Bucket
    bucket = Bucket(storage_name)
    print bucket
    if file_name is None: 
        file_name = f._get_name()
    return bucket.put_object(file_name, f)
示例#35
0
def save_image(con, file1, pid, is_front):
    if file1.filename == '':
        return
    # filename = str(pid) + '_' + get_random_number_str() + '_' + file1.filename
    ext = file1.filename.split('.')[-1]
    filename = str(pid) + get_random_number_str() + '.' + ext
    if 'SERVER_SOFTWARE' in os.environ:
        bucket = Bucket('domain1')
        bucket.put_object(filename, file1)
        url = bucket.generate_url(filename)
    else:
        url = filename
        file_full_path = os.path.join(UPLOAD_FOLDER, filename)
        if os.environ.get('USER') == 'Lily':
            file_full_path = "/Users/Lily/PycharmProjects/EIA/static/upload/" + filename
        file1.save(file_full_path)
    save_img_url(con, url, pid, 1 if is_front else 0)
示例#36
0
	def action(self,num,count):
		if num not in self.his:
			self.visit('http://tieba.baidu.com/p/'+num)
			myMatch = re.search(r'<title>(.*?)</title>', self.content, re.S)
			title = u'暂无标题' +str(count)
			if myMatch:
				title=myMatch.group(1)
			else:
				print u'爬虫报告:无法加载文章标题!'
			bucket = Bucket('spider')
			bucket.put_object(num+'.html', self.content,metadata={'title':title})
                        time.sleep(0.2)

			del(self.number[0])
		else:
			del(self.number[0])
                print "exit thread"
示例#37
0
文件: views.py 项目: merrycode/red
def _upload_image(request, field="cover"):
    if 'file' in request.FILES:
        fobj = request.FILES['file']
        content = fobj.read()
        suffix = fobj.name.rsplit('.', 1)[1].lower()
        if suffix not in ('jpg', 'png', 'jpeg'):
            return _error(u'请上传jpg或者png格式的照片')
        md5 = hashlib.md5(content).hexdigest()
        filename = '%s.%s' % (md5, suffix)

        from sae.storage import Bucket
        bucket = Bucket('adam')
        bucket.put()
        bucket.post(acl='.r:.sinaapp.com,.r:sae.sina.com.cn', metadata={'expires': '1y'})
        bucket.put_object(filename, content)
        return bucket.generate_url(filename)
    return request.POST.get(field, '').strip()[0:255]
示例#38
0
def check_message(message):
    kv = sae.kvdb.Client()
    if message == 'backup':
        bucket = Bucket('backup')
        bucket.put()
        data_dict = dict(kv.get_by_prefix(''))
        data_dict = json.dumps(data_dict)
        bucket.put_object('database.json', data_dict)
        return "备份成功!"
    elif message == 'ca':
        keys = kv.getkeys_by_prefix('')
        for key in keys:
            kv.delete(key)
        return "Database is empty!"
    elif '.' in message:
        funs, values = message.split('.',1)
        if funs == 'd':
            key = str(values)
            content = kv.get(key)
            kv.delete(key)
            return  "%s\n This item has beem deleted." %content
        elif funs == 'dp':
            prefix = values
            keys = kv.getkeys_by_prefix(prefix)
            for key in keys:
                kv.delete(key)
            return "%s\n All the keys' item have been deleted." %keys
        elif funs == 'get':
            prefix = str(values)
            content = dict(kv.get_by_prefix(prefix))
            return '''They are:
               %s
               '''% content
        elif funs == 'du':
            user_email = str(values)
            kv.delete(user_email)
            emails = kv.get('emailset')
            emails = [x for x in emails if not x == user_email]
            kv.set ('emailset',emails)
            number = kv.get('usersnumber') - 1
            kv.replace('usersnumber', number)
            return """用户%s已经删除"""%user_email
    else:
        return "Sorry, Please check your input..."
    kv.disconnect_all()
示例#39
0
def retrieve(url, bucket, filename, retry=5):
    """保存url的图片到storage"""
    from sae.storage import Bucket
    for x in xrange(1, 6):
        try:
            img = urllib2.urlopen(url)
            b = Bucket(bucket)
            mime = RE_MIME.search(str(img.info()))
            if mime:
                mime = mime.groups()[0]
            b.put_object(filename, img.read(), mime)
            print 'Save "%s" to "%s/%s", MimeType:"%s"' % (url, bucket,
                                                           filename, mime)
            return "http://akbquiz-%s.stor.sinaapp.com/" % (
                bucket, quote(filename.encode('utf-8')))
        except Exception, e:
            print 'Save image file "%s" failed, retrying: %d. (%s)' % (url, x,
                                                                       e)
        pass
def add_objects(bucket_name, folder_path, objects):
    """add objects

    Args:
        bucket: name of bucket
        folder_path: folder path
        objects: dictionary of filename and its data, for example:

            objects['sample.txt']="hello world"
    """
    bucket = Bucket(bucket_name)
    folder_path = complete_folder(folder_path)

    for key in objects.keys():
        object_path = "%s%s" % (folder_path, key)
        virtual_object_path = "/s/%s/%s" % (bucket_name, object_path)
        if is_file_existed(virtual_object_path):
            print 'class StorageInterface add_objects() file existed! object_path: %s' % object_path
            continue
        bucket.put_object(object_path, objects[key])
示例#41
0
def img_upload(request):
    try:
        reqfile = request.FILES['upload_file']
        if reqfile is None:
            result = {'status': '1', 'info': '图片为空!'}
            return HttpResponse(json.dumps(result),
                                content_type='application/json')
        else:
            from os import environ
            online = environ.get("APP_NAME", "")
            if online:
                import sae.const
                access_key = sae.const.ACCESS_KEY
                secret_key = sae.const.SECRET_KEY
                appname = sae.const.APP_NAME
                domain_name = "img"  # 刚申请的domain
                str_time = str(time.mktime(
                    datetime.datetime.now().timetuple()))
                str_time = str_time[:-2]
                reqfile.name = str_time + ".png"
                import sae.storage
                from sae.storage import Bucket
                bucket = Bucket('img')
                bucket.put()
                # http://www.sinacloud.com/doc/sae/python/storage.html
                bucket.put_object(
                    reqfile.name,
                    reqfile,
                    content_type='application/x-www-form-urlencoded ')
                url = bucket.generate_url(reqfile.name)
                result = {'status': '1', 'info': '图片上传成功!', 'url': url}
                return HttpResponse(json.dumps(result),
                                    content_type='application/json')
            else:
                result = {'status': '0', 'info': '图片上传出现错误!'}
                return HttpResponse(json.dumps(result),
                                    content_type='application/json')
    except Exception, e:
        result = {'status': '0', 'info': '图片上传出现错误:%s' % e}
        return HttpResponse(json.dumps(result),
                            content_type='application/json')
示例#42
0
class SaeStorageSaver:
    def __init__(self, key):
        self.bucket = Bucket(key)

    def StoreTxtFile(self, path, content):
        self.bucket.put_object(path, content)

    def StoreBinFile(self, path, content):
        self.bucket.put_object(path, content)

    def GetObjectByPath(self, path):
        return self.bucket.get_object_contents(path)

    def GetItemUnder(self, path):
        return [x for x in self.bucket.list(path)]

    def GetBackupList(self):
        return self.GetItemUnder(g_backup_path)

    def DeleteObject(self, obj):
        self.bucket.delete_object(obj)
示例#43
0
def start(request):
    url = 0
    from sae.storage import Bucket
    bucket = Bucket('abc')
    if request.POST:
        if request.POST.has_key('save'):
            post = request.POST
            if request.FILES:
                f = request.FILES['file']
                new_img = imagess(picture = f, comment = post['writecomment'], mood = post['writemood'],\
                    title = str(f),lat = 0,lon = 0)
                new_img.save()
                img = bucket.get_object_contents('stati/'+f.name)
                im = Image.open(StringIO.StringIO(img))
                out = im.resize((128, 128))
                imgout = StringIO.StringIO()
                out.save(imgout,"jpeg")
                img_data = imgout.getvalue()
                bucket.put_object('manage/'+f.name, img_data)

                exif = get_exif_data(img)
                if exif.has_key('GPSInfo'):
                    w1 = exif['GPSInfo'][2][0][0]
                    w2 = exif['GPSInfo'][2][1][0]
                    w3 = exif['GPSInfo'][2][2][0]*1.0/100
                    lat = w1+w2*1.0/60 + w3*1.0/60*1.0/60
                    j1 = exif['GPSInfo'][4][0][0]
                    j2 = exif['GPSInfo'][4][1][0]
                    j3 = exif['GPSInfo'][4][2][0]*1.0/100
                    lon = j1+j2*1.0/60 + j3*1.0/60*1.0/60
                    new = imagess.objects.filter(title = f.name)
                    if (len(new) != 0):
                        new[0].lat = lat
                        new[0].lon = lon
                        new[0].save()


                
    return render_to_response('start.html',\
            context_instance=RequestContext(request))
示例#44
0
def image_upload():
    if request.method == 'POST':
        image = request.files['fileList']
        if image:
            bucket = Bucket("avatar")
            numObejcts = int(bucket.stat()["objects"])
            imageId = str(numObejcts + 1) + ".jpg"

            # resize image
            outbuf = cStringIO.StringIO()
            size = (800, 900)
            process = Image.open(image.stream)
            process.resize(size, Image.BILINEAR)
            process.save(outbuf, "JPEG")

            # save image
            bucket.put_object(imageId, outbuf)
            # bucket.put_object(imageId, image.stream)
            url = bucket.generate_url(imageId)

            return url
    return jsonify(error="fail to upload image")
示例#45
0
def UploadFileFromUrl(file_name, url, values=None):
    #url=url+'//'
    global domain_name
    Log("Upload File From Url")
    try:
        if values is not None:
            data = json.dumps(values, ensure_ascii=False).encode('utf-8')
            req = urllib2.Request(url, data)
            sock = urllib2.urlopen(req)
        else:
            sock = urllib.urlopen(url)

        f = sock.read()
        stream = cStringIO.StringIO(f)
        sock.close()
        bucket = Bucket(domain_name)
        file_name = file_name.replace(' ', '')
        bucket.put_object(file_name, stream)
        return_url = bucket.generate_url(file_name)
        Log("Upload File From Url url %s" % return_url)
        return return_url
    except Exception, e:
        Log("Error when Upload File From Url: %s" % e)
示例#46
0
def saveChange(request, ID):
    userid = request.session.get('userid', '')
    if userid == '':
        return HttpResponseRedirect('/index')
    title = request.POST['title']
    text = request.POST['text']
    textNoHtml = re.sub('<[^>]*?>', '', text)

    if len(textNoHtml) < 120:
        shortContent = textNoHtml + '......'
    else:
        shortContent = textNoHtml[0:120] + '......'
    #保存更新之后的文章标题,内容和概述。
    passageObj = Passage.objects.get(id=int(ID))
    passageObj.Title = title
    passageObj.ShortContent = shortContent
    passageObj.LongContent = text
    passageObj.save()

    #picSrcLs获取文中所有图片的路径
    picSrcLs = re.findall('<img src="(.*?)">', text)
    #picNameLs获取文中所有图片的文件名
    picNameLs = []
    for pss in picSrcLs:
        if 'pictures' in pss:
            picNameLs.append(pss[49:])
        else:
            continue
    #picSavedObjLs存储所有已保存的图片数据。
    picSavedObjLs = Picture.objects.filter(PassageID=passageObj)
    #picStayLs用于保存仍然存在的图片名称。
    picStayLs = []
    #以下循环用于判断:图片表中有没有图片在编辑中被删除。
    for picObj in picSavedObjLs:
        if picObj.OriginalImageName in picNameLs:
            picStayLs.append(picObj.OriginalImageName)
            continue
        else:
            bucket = Bucket('media')
            bucket.delete_object(picObj.OriginalImagePath.name)
            bucket.delete_object(picObj.CompressedImagePath.name)
            #os.remove(os.path.join(settings.MEDIA_ROOT, picObj.OriginalImagePath.name))
            #os.remove(os.path.join(settings.MEDIA_ROOT, picObj.CompressedImagePath.name))
            picObj.delete()
    #删除picNameLs已存在Picture表中的图片名称,剩下的图片都在PictureCache图片缓存表中。
    for pic in picStayLs:
        picNameLs.remove(pic)

    for pn in picNameLs:
        cpobj = CachePicture.objects.get(ImageName=pn)
        #print 'sss',cpobj.ImagePath.name
        bucket = Bucket('media')
        im = Image.open(
            cStringIO.StringIO(bucket.get_object_contents(
                cpobj.ImagePath.name)))
        #im = Image.open(os.path.join(settings.MEDIA_ROOT, cpobj.ImagePath.name))
        w, h = im.size
        if w > h:
            im.thumbnail((66, (66 * h) // w))
        else:
            im.thumbnail(((w * 74) // h, 74))
        #savepath = os.path.join(settings.MEDIA_ROOT, 'compressedpictures' ,'thumnail'+cpobj.ImageName)
        savepath = os.path.join('compressedpictures',
                                'thumnail' + cpobj.ImageName)
        fm = cpobj.ImageName.split('.')[1]
        if fm.lower() == 'jpg':
            fm = 'jpeg'
        buf = cStringIO.StringIO()
        im.save(buf, fm)
        img_data = buf.getvalue()
        bucket.put_object(savepath, img_data)
        #im.save(savepath, fm)
        picObj = Picture()
        picObj.PassageID = passageObj
        picObj.OriginalImageName = pn
        picObj.OriginalImagePath = cpobj.ImagePath
        picObj.CompressedImageName = 'thumnail' + cpobj.ImageName
        picObj.CompressedImagePath.name = os.path.join(
            'compressedpictures', 'thumnail' + cpobj.ImageName)
        picObj.save()
        cpobj.delete()
        buf.close()
    #删除缓存表中的数据以及对应的图片。
    username = User.objects.get(id=userid).UserName
    deleteCachePicLs = CachePicture.objects.filter(UserName=username)
    if len(deleteCachePicLs) > 0:
        bucket = Bucket('media')
        for pic in deleteCachePicLs:
            #os.remove(os.path.join(settings.MEDIA_ROOT, pic.ImagePath.name))
            bucket.delete_object(pic.ImagePath.name)
            pic.delete()
    return HttpResponseRedirect('/passage/' + ID)
示例#47
0
class SAEStorageKVDB(object):
    '''
    A bridge for pyutils kvdb wrapper to access sae storage like a kvdb.

    e.g.
    from pyutils import KVDBWrapper
    from sae_storage import SAEStorageKVDB
    kvclient = KVDBWrapper(SAEStorageKVDB, bucket='mybucket', accesskey='xxx', secretkey='yyy', account='myapp', prefix='PRE:', ...)
    kvclient.set(key,value)
    kvclient.get(key)
    '''
    def __init__(self, **kwargs):
        bucket = kwargs['bucket'] if 'bucket' in kwargs else ''
        accesskey = kwargs['accesskey'] if 'accesskey' in kwargs else ''
        secretkey = kwargs['secretkey'] if 'secretkey' in kwargs else ''
        account = kwargs['account'] if 'account' in kwargs else ''  # app name
        retries = long(
            kwargs['retries']) if 'retries' in kwargs else 3  # app name

        self.prefix = kwargs['prefix'] if 'prefix' in kwargs else ''

        if accesskey and secretkey and account:
            conn = Connection(accesskey, secretkey, account, retries)
            self.kv = conn.get_bucket(bucket)
        else:
            self.kv = Bucket(bucket)

    def info(self):
        return self.kv.stat()

    def get(self, key, **kwargs):
        k = self.prefix + key
        return self.kv.get_object(k, **kwargs)

    def set(self, key, value, **kwargs):
        k = self.prefix + key
        return self.kv.put_object(k, value, **kwargs)

    def delete(self, key, **kwargs):
        k = self.prefix + key
        return self.kv.delete_object(k, **kwargs)

    def exist(self, key, **kwargs):
        k = self.prefix + key
        rc = False
        st = self.kv.stat_object(k)
        if st: rc = True
        return rc

    def scan(self, cursor=None, count=100, **kwargs):
        '''
        Retrieve keys by given arguments
        :param kwargs:
            'count' for retrieve count;
            'cursor' is the key for next time retrieve
        :return:
        '''
        return self.kv.c(prefix=self.prefix,
                         marker=cursor,
                         limit=count,
                         **kwargs)

    def scanv(self, cursor=None, count=100, **kwargs):
        '''
        Retrieve key-values by given arguments
        :param kwargs:
            'count' for retrieve count;
            'cursor' is the key for next time retrieve
        :return:
        '''
        return self.kv.list(prefix=self.prefix,
                            marker=cursor,
                            limit=count,
                            **kwargs)

    def mget(self, keys, **kwargs):
        for key in keys:
            k = self.prefix + key
            val = self.get(k, **kwargs)
            yield val
示例#48
0
class SaeStorage(Storage):
    """实现存储在SAE上的Storage
    """
    def __init__(self, bucket_name, path):
        self.bucket_name = bucket_name
        self.folder = path
        self._bucket = Bucket(bucket_name)
        self.locks = {}

    def __repr__(self):
        return "%s(%r)(%r)" % (self.__class__.__name__, self.bucket_name,
                               self.folder)

    def create(self):
        return self

    def destroy(self):
        # Remove all files
        self.clean()
        # REMOVE locks
        del self.locks

    def create_file(self, name, **kwargs):
        def onclose_fn(sfile):
            self._bucket.put_object(self._fpath(name), sfile.file.getvalue())

        f = StructFile(BytesIO(), name=name, onclose=onclose_fn)
        return f

    def open_file(self, name, **kwargs):
        if self._bucket.stat_object(self._fpath(name)) is None:
            raise NameError(name)
        content = self._bucket.get_object_contents(self._fpath(name))

        def onclose_fn(sfile):
            self._bucket.put_object(self._fpath(name), sfile.file.getvalue())

        return StructFile(BytesIO(content), name=name, onclose=onclose_fn)

    def _fpath(self, fname):
        return os.path.join(self.folder, fname)

    def clean(self):
        files = self.list()
        for fname in files:
            self._bucket.delete_object(self._fpath(fname))

    def list(self):
        file_generate = self._bucket.list(path=self._fpath(""))
        file_names = []
        for f in file_generate:
            file_names.append(f['name'][len(self.folder) + 1:])
        return file_names

    def file_exists(self, name):
        return name in self.list()

    def file_modified(self, name):
        return self._bucket.stat_object(self._fpath(name))\
            .get('last_modified', '')

    def file_length(self, name):
        return int(self._bucket.stat_object(self._fpath(name))['bytes'])

    def delete_file(self, name):
        self._bucket.delete_object(self._fpath(name))

    def rename_file(self, name, newname, safe=False):
        if name not in self.list():
            raise NameError(name)
        if safe and newname in self.list():
            raise NameError("File %r exists" % newname)

        content = self._bucket.get_object_contents(self._fpath(name))
        self._bucket.delete_object(self._fpath(name))
        self._bucket.put_object(self._fpath(newname), content)

    def lock(self, name):
        if name not in self.locks:
            self.locks[name] = Lock()
        return self.locks[name]

    def temp_storage(self, name=None):
        name = name or "%s.tmp" % random_name()
        path = os.path.join(self.folder, name)
        tempstore = SaeStorage(self.bucket_name, path)
        return tempstore.create()
示例#49
0
文件: views.py 项目: NKMSC/member2.0
def lottery_confirmed(request):
    try:
        micro_id64 = request.POST['micro_id']
        micro_id = int(base64.b64decode(micro_id64))
        hash_id = hashlib.sha1(str(micro_id)).hexdigest()
        try:
            winner = Lottery.objects.get(hash_id=hash_id)
            if request.POST['phone_number']:
                #check phone number format
                phone_number = request.POST['phone_number']
                if check_input(str(phone_number), 'phoneNumber'):
                    if winner.phone_number != None:
                        return HttpResponse("该奖品已经有申奖号码了")
                    winner.phone_number = phone_number
                    winner.save()
                    ##update lottery_remain_information
                    debug = not environ.get("APP_NAME", "")
                    # #read present file
                    if debug:
                        jsonfile = open(JSON_FILE_PATH)
                        data = json.load(jsonfile)
                    else:
                        bucket = Bucket("nkumstc")
                        data = json.loads(
                            bucket.get_object_contents(
                                JSON_SERVER_OBJECT_NAME))

                    special_read = data["special"]
                    first_read = data["first"]
                    second_read = data["second"]
                    third_read = data["third"]
                    fourth_read = data["fourth"]
                    fifth_read = data["fifth"]
                    rate = data["rate"]
                    #update
                    if winner.present_level == "special":
                        special_read = special_read - 1
                    elif winner.present_level == "first":
                        first_read = first_read - 1
                    elif winner.present_level == "second":
                        second_read = second_read - 1
                    elif winner.present_level == "third":
                        third_read = third_read - 1
                    elif winner.present_level == "fourth":
                        fourth_read = fourth_read - 1
                    elif winner.present_level == "fifth":
                        fifth_read = fifth_read - 1
                    else:
                        return HttpResponse("bug!")

                    if debug:  # write to present file
                        jsonfile = open(JSON_FILE_PATH, "w")
                        jsonfile.write(
                            json.dumps({
                                "special": special_read,
                                "first": first_read,
                                "second": second_read,
                                "third": third_read,
                                "rate": rate,
                                "fourth": fourth_read,
                                "fifth": fifth_read
                            }))
                    else:
                        bucket = Bucket("nkumstc")
                        content = {
                            "special": special_read,
                            "first": first_read,
                            "second": second_read,
                            "third": third_read,
                            "rate": rate,
                            "fourth": fourth_read,
                            "fifth": fifth_read
                        }
                        bucket.put_object(JSON_SERVER_OBJECT_NAME,
                                          json.dumps(content))
                else:
                    award_notice = get_template(
                        'lottery_beautyOfCoding/award_confirm.html')
                    information = {
                        'level': winner.present_level,
                        'micro_id': micro_id64,
                        'no_phoneNumber': True
                    }
                    award_noticeHtml = award_notice.render(
                        Context(information))
                    return HttpResponse(award_noticeHtml)
            else:
                award_notice = get_template(
                    'lottery_beautyOfCoding/award_confirm.html')
                information = {
                    'level': winner.present_level,
                    'micro_id': micro_id64,
                    'no_phoneNumber': True
                }
                award_noticeHtml = award_notice.render(Context(information))
                return HttpResponse(award_noticeHtml)
        except:
            return HttpResponse("同学别刷票了 (╯▔皿▔)╯")
    except:
        return HttpResponse("您可能使用的是windows手机,请换成其他手机或使用电脑浏览器抽奖,如有问题请于俱乐部联系")

    #final result return
    award_confirmed = get_template(
        'lottery_beautyOfCoding/award_confirmed.html')
    award_confirmedHtml = award_confirmed.render(Context())
    return HttpResponse(award_confirmedHtml)
示例#50
0
文件: Pay.py 项目: April-HJY/WaiTan
def EnterprisePay(appid,amount, openid,mchid, productCode, productType):
    try:
        price = int(amount)
        nonce_str = int(time.time())
        partner_trade_no = nonce_str
        values = {
            "amount": price,
            "check_name": "NO_CHECK",
            "desc": "withdraw",
            "mch_appid":appid,
            "mchid":mchid,
            "nonce_str":nonce_str,
            "openid": openid,
            "partner_trade_no":partner_trade_no,
            "re_user_name": "boss",
            "spbill_create_ip": "167.220.232.147"
        }
        sign =GetSign(values)
        #sign = 'CDATA[DB25A1458276B434E07CB58D00F6DADF'
        url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers"
        #url = "https://api.mch.weixin.qq.com/pay/unifiedorder"
        
        
        xml = """<xml>
	<mch_appid>%s</mch_appid>
	<mchid>%s</mchid>
	<nonce_str>%s</nonce_str>
    <partner_trade_no>%s</partner_trade_no>
    <openid>%s</openid>
	<check_name>NO_CHECK</check_name>
	<re_user_name>boss</re_user_name>
	<amount>%s</amount>
    <desc>withdraw</desc>
	<spbill_create_ip>167.220.232.147</spbill_create_ip>
	<sign><![CDATA[%s]]></sign>
</xml>"""%(appid, mchid, nonce_str, partner_trade_no, openid,price, sign)
        #%(price, appid, mchid, nonce_str,  openid, partner_trade_no,sign)
        Log("EnterprisePay 1 %s" % xml,"local", "0.0.0.0", "DEBUG")
        
        encodeXML = xml.encode('UTF-8').strip()
  #      encodeXML = """<?xml version="1.0" encoding="utf-8"?><xml>
#	<amount>330</amount>
#	<check_name>FORCE_CHECK</check_name>
#	<desc>withdraw</desc>
#	<mch_appid>wx0c0e0edd8eaad932</mch_appid>
#	<mchid>1415334402</mchid>
#	<nonce_str>1505378461</nonce_str>
#	<openid>oNvgX0WFITP4WESUCPbpUepqOeh0</openid>
#	<partner_trade_no>1505378461</partner_trade_no>
#	<re_user_name>boss</re_user_name>
#	<spbill_create_ip>167.220.232.147</spbill_create_ip>
#	<sign>D23586F08C1BC965099FFDE7BC45C762</sign>
#</xml>""".encode('utf-8').strip()
        certfile = '%s/%s' % (os.path.dirname(__file__),CERTFILE)
        keyfile =  '%s/%s' % (os.path.dirname(__file__),KEYFILE)
        context = ssl.create_default_context(cafile=certfile)
        #context.load_cert_chain(certfile,keyfile)
        #opener = urllib2.build_opener(urllib2.HTTPSHandler(context=context))
                
        Log("EnterprisePay 2 %s" % certfile,"local", "0.0.0.0", "DEBUG")
        #filepath = '%s/%s' % (os.path.dirname(__file__),CERTFILE)
        
        #opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
        http_header = {
                "Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With" : "XMLHttpRequest",
"Referer" : "http://applinzi.ddianke.com/",
"Accept-Language" : "en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3",
"Accept-Encoding" :	"gzip, deflate",
"User-Agent" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; Touch; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; InfoPath.3)",
"Host" : "applinzi.ddianke.com",
"DNT" : "1",
"Connection" : "Keep-Alive",
"Cache-Control" : "no-cache"
}       
        #sock = opener.open(url, encodeXML)
        #urllib2.install_opener(opener)
        #req = urllib2.Request(url, encodeXML )
        #response = urllib2.urlopen(req)
        
        #res = response.read()
        #Log("EnterprisePay 2 %s" % res,"local", "0.0.0.0", "DEBUG")
        
        #resURL = UploadFileFromUrl('xxx%s.xml'%nonce_str,url, encodeXML)
        
        #req = urllib2.Request(url, encodeXML)
        sock=urllib2.urlopen(url,encodeXML, cafile=certfile)
        f=sock.read()
        stream = cStringIO.StringIO(f)
        sock.close()
        bucket = Bucket("image")
        bucket.put_object('xxxaaa.xml', stream)
        return_url = bucket.generate_url('xxxaaa.xml')
        
        #Log(return_url,"local", "0.0.0.0", "DEBUG")

        xml = ET.fromstring(res)
        Log(xml,"local", "0.0.0.0", "DEBUG")
        result_code = xml.find("result_code").text
        return_msg = 'SUCCESS'
        Log("EnterprisePay 3","local", "0.0.0.0", "DEBUG")
        if result_code != 'SUCCESS':
            return_msg = xml.find("return_msg").text
            err_code = xml.find("err_code").text
            Log("EnterprisePay err_code:%s" % err_code,"local", "0.0.0.0", "DEBUG")
        else:
            b = BusinessSpending(TradeNo = partner_trade_no, Amount=amount, ProductCode = productCode, ProductType = productType, TargetOpenID = openid)
            b.save()
        Log("EnterprisePay 4","local", "0.0.0.0", "DEBUG")
        return return_msg
    except Exception, e:
        Log("EnterprisePay error:%s" % e,"local", "0.0.0.0", "DEBUG")
        return e
示例#51
0
def saveWritting(request):
    #blog 应用中最重要的试图函数。
    #包括以下主要功能:1,保存博文;2,生成缩略图;3,把缓存表的图片信息移到源图表,然后清空缓存表。
    userid = request.session.get('userid', '')
    if userid == '':
        return HttpResponseRedirect('/index')
    title = request.POST['title']
    text = request.POST['text']
    textNoHtml = re.sub('<[^>]*?>', '', text)
    #print len(textNoHtml)
    #print text
    #print textNoHtml
    if len(textNoHtml) < 120:
        shortContent = textNoHtml + '......'
    else:
        shortContent = textNoHtml[0:120] + '......'
    nt = datetime.now()
    #以下是保存博文数据到数据表中。
    passageObj = Passage()
    writerObj = User.objects.get(id=userid)
    passageObj.UserID = writerObj
    passageObj.Title = title
    passageObj.Time = nt
    passageObj.ShortContent = shortContent
    passageObj.LongContent = text
    passageObj.save()
    #以下是把所有缓存表的图片去处移到源图表,并生成压缩图。
    picSrcLs = re.findall('<img src="(.*?)">', text)
    picNameLs = []
    for pss in picSrcLs:
        if 'pictures' in pss:
            picNameLs.append(pss[49:])
        else:
            continue
    #此变量用于保存文章的ID
    ID = 0
    passageObj = Passage.objects.get(UserID=writerObj, Time=nt)
    ID = passageObj.id
    for pn in picNameLs:
        cpobj = CachePicture.objects.get(ImageName=pn)
        #print 'sss',cpobj.ImagePath.name
        bucket = Bucket('media')
        im = Image.open(
            cStringIO.StringIO(bucket.get_object_contents(
                cpobj.ImagePath.name)))
        #im = Image.open(os.path.join(settings.MEDIA_ROOT, cpobj.ImagePath.name))
        w, h = im.size
        if w > h:
            im.thumbnail((66, (66 * h) // w))
        else:
            im.thumbnail(((w * 74) // h, 74))
        #savepath = os.path.join(settings.MEDIA_ROOT, 'compressedpictures' ,'thumnail'+cpobj.ImageName)
        savepath = os.path.join('compressedpictures',
                                'thumnail' + cpobj.ImageName)
        fm = cpobj.ImageName.split('.')[1]
        if fm.lower() == 'jpg':
            fm = 'jpeg'
        buf = cStringIO.StringIO()
        im.save(buf, fm)
        img_data = buf.getvalue()
        bucket.put_object(savepath, img_data)
        #im.save(savepath, fm)
        picObj = Picture()
        picObj.PassageID = passageObj
        picObj.OriginalImageName = pn
        picObj.OriginalImagePath = cpobj.ImagePath
        picObj.CompressedImageName = 'thumnail' + cpobj.ImageName
        picObj.CompressedImagePath.name = os.path.join(
            'compressedpictures', 'thumnail' + cpobj.ImageName)
        picObj.save()
        cpobj.delete()
        buf.close()
    #删除缓存表中的数据以及对应的图片。
    deleteCachePicLs = CachePicture.objects.filter(UserName=writerObj.UserName)
    if len(deleteCachePicLs) > 0:
        bucket = Bucket('media')
        for pic in deleteCachePicLs:
            #os.remove(os.path.join(settings.MEDIA_ROOT, pic.ImagePath.name))
            bucket.delete_object(pic.ImagePath.name)
            pic.delete()
    #以下到return代码前的代码用于文章数量增加1
    dataCountObjLs = DataCount.objects.all()
    if len(dataCountObjLs) == 0:
        dataCountObj = DataCount()
        dataCountObj.PassageCount = 1
        dataCountObj.save()
    else:
        dataCountObj = dataCountObjLs[0]
        dataCountObj.PassageCount += 1
        print dataCountObj.PassageCount
        dataCountObj.save()
    #return HttpResponseRedirect('/index')
    return HttpResponseRedirect('/passage/' + str(ID))
示例#52
0
def write_storage(content):
    bucket = Bucket(BUCKET_NAME)
    bucket.delete_object(TARGET_FILE)
    bucket.put_object(TARGET_FILE, content)