@@ -79,16 +79,13 @@ def get_json(self, force=False, silent=False, cache=True):
7979
8080class FrestqApp (Flask ):
8181 def __init__ (self , * args , ** kwargs ):
82- if 'parse_args' in kwargs :
83- del kwargs ['parse_args' ]
84- self .parse_args ()
8582 super (FrestqApp , self ).__init__ (* args , ** kwargs )
8683
8784 request_class = FrestqRequest
8885
8986 pargs = None
9087
91- def configure_app (self , config_object = None ):
88+ def configure_app (self , scheduler = True , config_object = None ):
9289 '''
9390 Configures the application. It's intended to do everything to be able to
9491 run the application except calling app.run, so that it can be reused when
@@ -117,16 +114,13 @@ def configure_app(self, config_object=None):
117114 self .config ['SSL_CERT_STRING' ] = ''
118115 logging .warning ("You are NOT using SSL in this instance" )
119116
120- if self .pargs .createdb or self .pargs .messages or self .pargs .tasks or \
121- self .pargs .tree or self .pargs .show_task or \
122- self .pargs .show_message or self .pargs .show_external or \
123- self .pargs .finish or self .pargs .show_activity :
117+ if not scheduler :
124118 return
125119
126120 logging .info ("Launching with ROOT_URL = %s" , self .config ['ROOT_URL' ])
127121 FScheduler .start_all_schedulers ()
128-
129- def parse_args (self ):
122+
123+ def parse_args (self , extra_parse_func ):
130124 parser = argparse .ArgumentParser ()
131125 parser .add_argument ("--createdb" , help = "create the database" ,
132126 action = "store_true" )
@@ -155,6 +149,7 @@ def parse_args(self):
155149 parser .add_argument ("-ll" , "--log-level" , default = None ,
156150 help = "show verbose output. set to ERROR by default" ,
157151 choices = ["debug" ,"info" , "error" ])
152+ extra_parse_func (self , parser )
158153 self .pargs = parser .parse_args ()
159154
160155 if self .pargs .limit < 1 :
@@ -173,6 +168,10 @@ def run(self, *args, **kwargs):
173168 '''
174169 Reimplemented the run function.
175170 '''
171+ if 'parse_args' in kwargs and kwargs ['parse_args' ] == True :
172+ del kwargs ['parse_args' ]
173+ self .parse_args (kwargs .get ('extra_parse_func' , lambda a ,b : None ))
174+
176175 if self .pargs is not None :
177176 if self .pargs .createdb :
178177 print "creating the database: " , self .config .get ('SQLALCHEMY_DATABASE_URI' , '' )
@@ -204,6 +203,11 @@ def run(self, *args, **kwargs):
204203 elif self .pargs .console :
205204 import ipdb ; ipdb .set_trace ()
206205 return
206+ else :
207+ extra_run = kwargs .get ('extra_run' , lambda a : False )
208+ ret = extra_run (self )
209+ if ret :
210+ return
207211
208212 # ignore these threaded or use_reloader, we force those two
209213 if 'threaded' in kwargs :
@@ -219,7 +223,7 @@ def run(self, *args, **kwargs):
219223 return super (FrestqApp , self ).run (threaded = True , use_reloader = False ,
220224 * args , ** kwargs )
221225
222- app = FrestqApp (__name__ , parse_args = True )
226+ app = FrestqApp (__name__ )
223227
224228### configuration
225229
0 commit comments