def upload(url, path, fields=None, headers=None, use_json=False): if modutil.exists('pycurl'): import pycurl url = stringutil.u2s(url) path = stringutil.u2s(path) if not os.path.exists(path): raise Exception('File "%s" not found.' % path) buffer = StringIO.StringIO() c = pycurl.Curl() c.setopt(c.POST, 1) c.setopt(c.HEADER, 1) c.setopt(c.WRITEFUNCTION, buffer.write) c.setopt(c.URL, url) field_list = [('file', (c.FORM_FILE, path))] if fields is not None: for k,v in fields.items(): if use_json: v = json2.dumps(v) field_list.append((k, v)) c.setopt(c.HTTPPOST, field_list) if headers is not None: header_list = [] for k, v in headers.items(): header = '%s: %s' % (k, v) header = str(header) # header may be unicode, which is un-acceptable for curl header_list.append(header) c.setopt(c.HTTPHEADER, header_list) c.perform() code = c.getinfo(pycurl.HTTP_CODE) c.close() if code != 200: raise CodedError('UPLOAD_FAILED', 'Failed to upload file %s.' % path) resp = buffer.getvalue() if use_json: json = resp.splitlines()[-1] json = unicode(json, 'utf-8') resp = json2.loads(json) return resp else: raise ModNotFoundError('pycurl')
#!/usr/bin/python # -*- coding: UTF-8 -*- ''' Created on Dec 28, 2011 @author: mengchen ''' from common.error.errors import BadArgValueError, ModNotFoundError from common.util import modutil if modutil.exists('sqlalchemy'): from sqlalchemy.engine import create_engine from sqlalchemy.orm import scoped_session from sqlalchemy.orm.session import sessionmaker class SqlAlchemyDao(object): def __init__(self, host, user, passwd, db): conn_str = 'mysql://%s:%s@%s/%s?charset=utf8' % (user, passwd, host, db) self._engine = create_engine(conn_str, pool_recycle=3600, echo=False) class _Session(sessionmaker(bind=self._engine)): def __enter__(self): return self def __exit__(self, type, value, traceback): if value is None: self.commit() else: self.rollback() self._Session = _Session self._ScopedSession = scoped_session(_Session)
def _read_headers(self): return {} def _read_headers_from_dict(self, d): headers = {} for k, v in d.items(): if k.startswith('HTTP_'): k = k[len('HTTP_'):].replace('_', '-').upper() headers[k] = v return headers return _Coor if modutil.exists('web'): import web class WebPyCoor(coor_maker()): def GET(self, path): resp = self.handle(path) return self._process_resp(resp) def POST(self, path): resp = self.handle(path) return self._process_resp(resp) def _read_fields(self): return web.input() def _read_headers(self):
def _read_fields(self): raise NotImplementedError() def _read_headers(self): return {} def _read_headers_from_dict(self, d): headers = {} for k, v in d.items(): if k.startswith('HTTP_'): k = k[len('HTTP_'):].replace('_', '-').upper() headers[k] = v return headers return _Coor if modutil.exists('web'): import web class WebPyCoor(coor_maker()): def GET(self, path): resp = self.handle(path) return self._process_resp(resp) def POST(self, path): resp = self.handle(path) return self._process_resp(resp) def _read_fields(self): return web.input() def _read_headers(self): return self._read_headers_from_dict(web.ctx.env)
for stub in stubs: setattr(stub['obj'], stub['attr'], stub['old_value']) self._stubbed = False super(StubFixture, self).tearDown() def add_stub(self, obj, attr, value): stub = dict(obj=obj, attr=attr, value=value) self._stubs.append(stub) if self._stubbed: self._stub(stub) def _stub(self, stub): stub['old_value'] = getattr(stub['obj'], stub['attr']) setattr(stub['obj'], stub['attr'], stub['value']) if modutil.exists('mox'): import mox class MoxFixture(Fixture): def __init__(self): super(MoxFixture, self).__init__() self._mox = mox.Mox() def tearDown(self): self._mox.ResetAll() self._mox.UnsetStubs() super(MoxFixture, self).tearDown() def create_mock(self, cls=None): return self._mox.CreateMockAnything() if cls is None else self._mox.CreateMock(cls) def mock(self, obj, attr):