Changeset 49:a7c61836007c in livinglogic.python.nightshade

Show
Ignore:
Timestamp:
06/26/07 11:33:48 (12 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Tags:
rel-0-8-1
Message:

Call.call() didn't retry the procedure after the connection got lost.

Files:
3 modified

Legend:

Unmodified
Added
Removed
  • NEWS.xml

    r48 r49  
     1<section><title>Changes in 0.8.1 (released 06/26/2007)</title> 
     2<ulist> 
     3<item>Fixed a bug in <method>Call.__call__</method> (calling the procedure 
     4wasn't retried after the connection got lost).</item> 
     5</ulist> 
     6</section> 
     7 
     8 
    19<section><title>Changes in 0.8 (released 06/21/2007)</title> 
    210<ulist> 
  • setup.py

    r47 r49  
    4848args = dict( 
    4949    name="ll-nightshade", 
    50     version="0.8", 
     50    version="0.8.1", 
    5151    description="Serve the output of Oracle functions/procedures with CherryPy", 
    5252    long_description=DESCRIPTION, 
  • src/ll/nightshade.py

    r47 r49  
    293293        "Not Found" response. 
    294294        """ 
    295          
     295 
     296        @self.connection 
     297        def call(db, *args, **kwargs): 
     298            cursor = db.cursor() 
     299            try: 
     300                if isinstance(self.callable, orasql.Procedure): 
     301                    return (None, self.callable(cursor, *args, **kwargs)) 
     302                else: 
     303                    return self.callable(cursor, *args, **kwargs) 
     304                return (body, result) 
     305            except cx_Oracle.DatabaseError, exc: 
     306                if exc.args: 
     307                    code = getattr(exc[0], "code", 0) 
     308                    if 20200 <= code <= 20599: 
     309                        raise cherrypy.HTTPError(code-20000) 
     310                    else: 
     311                        raise 
     312 
    296313        now = getnow() 
    297         try: 
    298             cursor = self.connection._getconnection().cursor() 
    299             if isinstance(self.callable, orasql.Procedure): 
    300                 body = None 
    301                 result = self.callable(cursor, *args, **kwargs) 
    302             else: 
    303                 (body, result) = self.callable(cursor, *args, **kwargs) 
    304         except cx_Oracle.DatabaseError, exc: 
    305             if exc.args: 
    306                 code = getattr(exc[0], "code", 0) 
    307                 if 20200 <= code <= 20599: 
    308                     raise cherrypy.HTTPError(code-20000) 
    309                 else: 
    310                     raise 
     314        (body, result) = call(*args, **kwargs) 
    311315 
    312316        # Set HTTP headers from parameters