예제 #1
0
 def __init__ (self, db_url, dbs) :
     engine = dbs.create_engine \
         ( TFL.Url (db_url.scheme_auth + "/postgres")
         , isolation_level = dbs.ISOLATION_AUTO_COMMIT
         )
     self.engine = engine
     self.conn   = engine.connect ()
예제 #2
0
파일: _DBS_.py 프로젝트: xiaochang91/tapyr
 def Url(cls, value, ANS, default_path=None):
     result = TFL.Url(value, fs_path=True)
     if not result.path and default_path is not None:
         result = TFL.Url.new(result, path=default_path, fs_path=True)
     result.scheme_auth = "://".join((result.scheme, result.authority))
     if result.query:
         result.scheme_auth = "?".join((result.scheme_auth, result.query))
     result.create = False
     return result
예제 #3
0
 def create_database (cls, db_url, manager, encoding  = "utf8") :
     try :
         engine = cls.create_engine (TFL.Url (db_url.scheme_auth))
         engine.execute \
             ( """CREATE DATABASE IF NOT EXISTS "%s" """
                 "DEFAULT CHARACTER SET %s "
                 "DEFAULT COLLATE %s_bin"
             % (str (db_url.path), encoding, encoding)
             )
     except SA.Exception.OperationalError as exc :
         pass
예제 #4
0
 def origin (self) :
     result   = self.environ.get ("HTTP_ORIGIN")
     if result is None :
         referrer = self.referrer
         if referrer :
             url   = TFL.Url (referrer)
             parts = []
             if url.scheme :
                 parts.extend ((url.scheme, "://"))
             parts.append (url.authority)
             result = "".join (parts)
     return result
예제 #5
0
 def _response_body (self, resource, request, response) :
     req_data = request.req_data
     cmd      = req_data.get ("cmd")
     complete = req_data.get ("complete")
     console  = resource.console
     if cmd or complete :
         response.renderer = GTW.RST.Mime_Type.JSON (self, resource)
     if complete :
         input, cands = TFL.complete_command \
             (complete, console.globals, console.locals)
         cands        = cands.strip ().split (",")
         completed    = False
         if len (cands) == 1 :
             if len (input) >= len (complete) :
                 completed = True
             else :
                 input     = complete
         elif (   (resource.completion_cutoff is not None)
              and (len (cands) > resource.completion_cutoff)
              ) :
             cands        = \
                 [ TFL.I18N._T
                    ("There are %s possible completions" % (len (cands)))
                 ]
         return dict \
             ( input     = input
             , cands     = ", ".join (cands)
             , completed = completed
             )
     elif cmd :
         console.update_locals \
             ( request  = request
             , response = response
             )
         return dict \
             ( html = console (cmd)
             , more = console.more
             )
     else :
         top     = resource.top
         referer = request.referrer
         if top and referer :
             url = TFL.Url (referer)
             lp  = top.resource_from_href (url.path)
             console.update_locals \
                 ( last_page      = lp._effective if lp else lp
                 , last_request   = request
                 , last_response  = response
                 , referrer       = url
                 , request        = request
                 , response       = response
                 )
         return self.__super._response_body (resource, request, response)
예제 #6
0
 def _drop_database(cls, db_url, manager):
     engine = cls.create_engine(TFL.Url(db_url.scheme_auth))
     ### This is necessary to avoid a nasty Warning that the database does
     ### not exist (even using the IF EXISTS clause)
     try:
         engine.execute("use %s" % (str(db_url.path), ))
     except SA.Exception.OperationalError as exc:
         if ('(1049, "Unknown database \'%s\'")' % (db_url.path, )
                 not in exc.message):
             raise
     else:
         engine.execute \
             ("DROP DATABASE IF EXISTS %s" % (str (db_url.path), ))