adview知識整理

一、python發送郵件 (mail模塊)html

#導入smtplib和MIMEText
import smtplib
from email.mime.text import MIMEText

#set mail service account
mail_host="smtp.qq.com"        smtp服務器
mail_user="en.liu@kuaiyou.com"
mail_pass="kuaiyou610611612"


def send_mail(to_list,sub,content,mailer = mailer):
    '''
    to_list:發給誰
    sub:主題
    content:內容
    send_mail("yijie.liu@kuaiyou.com","sub","content")
    '''
    to_list = "liuen6@gmail.com"      
    tilte = "This is a good day!"
    content = "Yes"
    msg = MIMEText(content,_subtype,_charset)   content郵件內容,_subtype郵件類型,_charset編碼
    msg['Subject'] = title
    msg['From'] = mail_user
    msg['To'] = ";".join(to_list)
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(mail_user, to_list, msg.as_string())
        s.close()
        return True
    except Exception, e:
        print str(e)
        return False

二、superpython

class A(object):
        def __init__(self):
            print "this is A  __init__"
        def who(self):
            print "this is who"

    class B(A):
        def __init__(self):
            print "this is B  __init__"
            super (B, self).who()
    b = B()
    
    結果:this is B  __init__
        this is who

三、web

import  bcrypt
    bcrypt.hashpw 加密

四、
mongodb自帶數據庫mongodb

def __init__ (self, db):
     self.db = db
     self.fs = gridfs.GridFS (db)

五、上傳zip包數據庫

mime_type_map_sdk = {
        '.zip' : 'application/zip',
        '.pdf' : 'application/pdf',
    }
class MongoFS (object):
    def __init__ (self, db):
        self.db = db
        self.fs = gridfs.GridFS (db)
    def  put(self):
           self.fs.put (data, _id = filename, filename = filename, content_type = ctype, catalog = catalog, **kw)
class MongoSDKFS (MongoFS):
    def __init__ (self, db, catalog = 'sdkpackage'):
        super (MongoSDKFS, self).__init__ (db)
        self.catalog = catalog
    def put (self, f, filename, changelog='', system=''):
        import os
        _, ext = os.path.splitext (filename)
        if not mime_type_map_sdk.has_key (ext):
            raise ValueError ('filename is not zip')
        else:
            super (MongoSDKFS, self).put (f, mime_type_map_sdk[ext], filename, self.catalog, changelog = changelog, system = system)   調用MongoFS裏面的put方法

下載包:
html:
   <td>
        <a                              href="${request.route_url('web.sdk.package',filename=appUpdateZip.get('filename', ''))}"><strong>Android SDK 下載</strong></a>
    </td>
py:
class Storage (object):
    def __init__ (self, request):
        self.request = request
        self.db = request.db

    @view_config (route_name = 'web.sdk.package', renderer = None)
    def sdkPackage (self):
        filename = self.request.matchdict.get ('filename')
        sdkfs = MongoSDKFS (self.db)
        content, content_type, basename = sdkfs.get (filename)
        response = Response (content_type = str(content_type))
        response.app_iter = content
        return response

6.上傳圖片到本地指定路徑且不存入數據庫服務器

development.ini:
    ;當前項目路徑
    rote = %(here)s
py文件:
    import os
    msg = {"msg":"no success"}
    if self.request.method == "POST":
        im = self.request.POST.get("image", "")
        settings = self.request.registry.settings
        directory = '%s/adview/static/images/'%(settings['rote'])
        filepath = '%s%s'%(directory, im.filename)
        input_file = im.file
        msg.update({"msg":"file exists"})
        if not os.path.isfile(filepath):   #判斷圖片是否存在,若不存在執行如下代碼
            output_file = open(filepath, 'wb')
            input_file.seek(0)
            while 1:
                data = input_file.read(2<<16)
                if not data:
                    break
                output_file.write(data)
            output_file.close()
            msg.update({"msg":"success"})
    return  msg

7.上傳圖片存入數據庫app

html:
<tr>
        <td>名稱</td>
        <td style="color: red;"><input type="text" name="name" id="name"></td>
    </tr>
    <tr>
        <td>圖片信息</td>
        <td><input type="file" name="imageInfo" id="imageInfo"></td>
     </tr>
py文件:
if self.request.method == 'POST':
        addSchema = ResAddSchema()
        try:
            appstruct = addSchema.deserialize(self.request.POST) #驗證數據
            imageName = appstruct["name"]
            image = self.request.POST.get("imageInfo", "")       
            Idimage = self.uploader._upload_icon_(image,imageName + '_' + 'image')
_upload_icon_方法:
class FileUploader(object):

    def __init__(self,db):
        self.db = db

    def _upload_icon_(self, _FILE_, new_name, onlyGetName = False):
        '''
        上傳圖片
        @param _FILE_:
        @param new_name:
        @return:
        '''
        #upload_dir = 'd:\\'
        if type(_FILE_) != unicode:
            filename = _FILE_.filename      #split by '.', won't get the correct ext.
            name, ext = os.path.splitext(filename)
            filename = '%s%s' % (new_name.lower(), ext.lower())
            if onlyGetName:
                return filename
            input_file = _FILE_.file
            imageFs = MongoImageFS(self.db)
            imageFs.put(input_file, filename)
            s = imageFs.get(filename)[1]
            return filename
        filename = ""
        return filename


    def getImage(self,fileName):
        imageFs = MongoImageFS(self.db)
        ret = imageFs.get(fileName)
MongoImageFS:
class MongoImageFS (MongoFS):
def __init__ (self, db, catalog = 'appimage'):
    super (MongoImageFS, self).__init__ (db)
    self.catalog = catalog

def put (self, f, filename):
    import os
    _, ext = os.path.splitext (filename)
    if ext:
        ext = ext.lower()
    if not mime_type_map_image.has_key (ext):
        raise ValueError ('filename is not image')
    else:
        super (MongoImageFS, self).put (f, mime_type_map_image[ext], filename, self.catalog)

def get (self, filename):
    return super (MongoImageFS, self).get (filename)
MongoFS :
class MongoFS (object):
    def __init__ (self, db):
        self.db = db
        self.fs = gridfs.GridFS (db)

    def put (self, f, ctype, filename, catalog, **kw):
        if not hasattr (f, 'read'):
            raise TypeError ('Invalid file-like object')
        if not ctype:
            raise ValueError ('Invalid content-type')
        data = f.read ()
        try:
            self.fs.put (data, _id = filename, filename = filename, content_type = ctype, catalog = catalog, **kw)
        except FileExists, e:
            self.fs.delete (filename)
            self.fs.put (data, _id = filename, filename = filename, content_type = ctype, catalog = catalog, **kw)

        return pages
    def get (self, filename):
        if self.fs.exists (filename):
            f = self.fs.get (filename)
            return (f, f.content_type, filename)
        else:
            return (None, None, None)
相關文章
相關標籤/搜索