From cfb366c6ca6d7c70d992e8fcadaff6632040ae68 Mon Sep 17 00:00:00 2001 From: Steve Nyemba Date: Thu, 5 Jun 2025 09:24:53 -0500 Subject: [PATCH] bug fix with robots and others --- cms/index.py | 142 +++++++++++++-------------------------- cms/sites/__init__.py | 4 +- cms/templates/index.html | 1 - 3 files changed, 48 insertions(+), 99 deletions(-) diff --git a/cms/index.py b/cms/index.py index bfe2ceb..d5234f4 100644 --- a/cms/index.py +++ b/cms/index.py @@ -30,24 +30,12 @@ import cms.sites _app = Flask(__name__) cli = typer.Typer() -@_app.route('/favicon.ico') -@_app.route('//favicon.ico') -def favicon(id): - global _route - # _system = _route.get ().system() - # _handler = _route.get() - _handler = _getHandler(id) - _system = _handler.system() - _logo =_system['icon'] #if 'icon' in _system else 'static/img/logo.svg' - _stream = requests.get(''.join([request.host_url,_logo])) - - return "_stream",200,{"Content-Type":"image/png"} #_handler.get(_logo),200,{"content-type":"image/png"} - + def _getHandler (app_id,resource=None) : - global _route + global _qcms _id = _getId(app_id,resource) - return _route._apps[_id] + return _qcms._apps[_id] def _getId(app_id,app_x): if app_x not in [None,''] : _uri = '/'.join([app_id,app_x]) @@ -56,23 +44,25 @@ def _getId(app_id,app_x): def _setHandler (app_id,resource) : session['app_id'] = _getId(app_id,resource) -@_app.route("/robots.txt") -def robots_txt(): +@_app.route("/<_id>/robots.txt") +@_app.route("/robots.txt",defaults={'_id':None}) +def robots_txt(_id): """ This function will generate a robots expression for a variety of crawlers, the paths will be provided by menu options """ - global _route - _system = _route.get ().system() - - _info = [''' + global _qcms + _site = _qcms.get (_id) + _routes = _site.get('system.routes') + _context = _site.get('system.context') + _info = [f''' User-agent: * - Allow: / + Allow: /{_context} '''] - if 'routes' in _system : - for _key in _system['routes'] : - _uri = '/'.join(['',_key]) + if _routes : + for _key in _routes: + _uri = '/'.join(["",_context,_key]) _info.append(f''' User-agent: * Allow: {_uri} @@ -84,14 +74,14 @@ def _getIndex (app_id ,resource=None): _handler = _getHandler(app_id,resource) _layout = _handler.layout() _status_code = 200 - global _route + global _qcms _index_page = 'index.html' _args = {} try : _uri = os.sep.join([_layout['root'],_layout['index']]) _id = _getId(app_id,resource) - _args = _route.render(_uri,'index',_id) + _args = _qcms.render(_uri,'index',_id) except Exception as e: _status_code = 404 @@ -101,96 +91,63 @@ def _getIndex (app_id ,resource=None): @_app.route("/") def _index (): # return _getIndex('main') - global _route - _app = _route.get(None) + global _qcms + _app = _qcms.get(None) _uri = os.sep.join([_app.get('layout.root'),_app.get('layout.index')]) - _html = _route.render(_uri,'index') - return render_template('index.html',**_route.render(_uri,'index')),200 + _html = _qcms.render(_uri,'index') + return render_template('index.html',**_qcms.render(_uri,'index')),200 @_app.route("//") @_app.route("/",defaults={'resource':None}) def _altIndex(app,resource): - global _route + global _qcms _id = _getId(app,resource) - - _site = _route.get(_id) - + _site = _qcms.get(_id) _uri = os.sep.join([_site.get('layout.root'),_site.get('layout.index')]) - return render_template('index.html',**_route.render(_uri,'index',_id)),200 - + return render_template('index.html',**_qcms.render(_uri,'index',_id)),200 -# def _aindex (app,resource=None): - -# _handler = _getHandler(app,resource) - -# _setHandler(app,resource) -# _html,_code = _getIndex(app,resource) -# return _html,_code -# @_app.route('/id/') -# def people(uid): -# """ -# This function will implement hardened links that can directly "do something" -# """ -# global _config -# return "0",200 @_app.route('//dialog') @_app.route('/dialog',defaults={'app':None}) def _getdialog(app): - global _route - _site = _route.get(app) + global _qcms + _site = _qcms.get(app) _uri = request.headers['uri'] _id = request.headers['dom'] # _html = ''.join(["
",str( e.render(**_args)),'
']) - _args = _route.render(_uri,'html',app) #session.get('app_id','main')) + _args = _qcms.render(_uri,'html',app) #session.get('app_id','main')) _args['title'] = _id return render_template('dialog.html',**_args) #title=_id,html=_html) @_app.route("/api//",defaults={'app':None,'key':None},methods=['GET','POST','DELETE','PUT']) @_app.route("//api//",defaults={'key':None},methods=['GET','POST','DELETE','PUT']) @_app.route("///api//",methods=['GET','POST','DELETE','PUT']) - -def _delegate_call(app,key,module,name): - # _handler = _getHandler(app,key) - # uri = f'api/{module}/{name}' - # _delegate = cms.delegate() - # return _delegate(uri=uri,handler=_handler,request=request) - global _route +def _proxyCall(app,key,module,name): + global _qcms _id = _getId(app,key) - _site = _route.get(_id) + _site = _qcms.get(_id) _uri = f'api/{module}/{name}' _delegate = cms.delegate() return _delegate(uri=_uri, handler=_site, request=request) @_app.route('/version') def _version (): - global _route - _handler = _route.get() + global _qcms + _site = _qcms.get() global _config - return _handler.system()['version'] + return _site.get('system.version') @_app.route("/reload/") def _reload(key) : - global _route + global _qcms - _site = _route.get(None) + _site = _qcms.get(None) _systemKey = _site.get('system.source.key') if _systemKey == key and _systemKey: _site.reload() return "",200 else: return "",403 - # _system = _handler.system() - # if not 'source' in _system : - # _systemKey = None - # elif 'key' in _system['source'] and _system['source']['key']: - # _systemKey = _system['source']['key'] - # # print ([key,_systemKey,_systemKey == key]) - # if key and _systemKey and _systemKey == key : - # _handler.reload() - # return "",200 - # pass - # return "",403 @_app.route('/reload',methods=['POST']) def reload(): @@ -202,9 +159,12 @@ def reload(): @_app.route('//page',methods=['POST'],defaults={'key':None}) @_app.route('///page',methods=['POST']) def getPostedPage(app_id,key): - global _route + """ + This function will return a page given a location parameter + """ + global _qcms _id = _getId(app_id,key) - _site = _route.get(_id) + _site = _qcms.get(_id) _uri = request.headers['uri'] if 'dom' not in request.headers : _id = _uri.split('/')[-1].split('.')[0] @@ -213,20 +173,17 @@ def getPostedPage(app_id,key): if 'read?uri=' in _uri or 'download?doc=' in _uri : _uri = _uri.split('=')[1] - _args = _route.render(_uri,_id,_getId(app_id,key)) #session.get(app_id,'main')) + _args = _qcms.render(_uri,_id,_getId(app_id,key)) #session.get(app_id,'main')) return _args[_id],200 @_app.route('/page',defaults={'app_id':None,'resource':None}) @_app.route('//page',defaults={'resource':None},methods=['GET']) @_app.route('///page',methods=['GET']) def _cms_page (app_id,resource): - # global _config - global _route - # _handler = _route.get() - # _config = _handler.config() + global _qcms _uri = request.args['uri'] _title = request.args['title'] if 'title' in request.args else '' - _args = _route.render(_uri,_title,app_id) + _args = _qcms.render(_uri,_title,app_id) return _args[_title],200 @@ -241,22 +198,15 @@ def start ( :path path to the the manifest :shared run in shared mode i.e """ - global _route + global _qcms if os.path.exists(path) and os.path.isfile(path): _args = {'path':path} - # if shared : - # _args['location'] = path - # _args['shared'] = shared _args['location'] = path _args['shared'] = True - # _route = cms.engine.Router(**_args) #path=path,shared=shared) - - # _route = cms.engine.basic.CMS(**_args) - # _args = _route.get().app() - _route = cms.sites.QCMS(**_args) - _args = _route.get().get('system.app') + _qcms = cms.sites.QCMS(**_args) + _args = _qcms.get().get('system.app') if port : _args['port'] = port diff --git a/cms/sites/__init__.py b/cms/sites/__init__.py index a122f9f..d0d8ca2 100644 --- a/cms/sites/__init__.py +++ b/cms/sites/__init__.py @@ -76,8 +76,8 @@ class Initialization (IOConfig): if not self.get('layout.menu') : self._config['layout']['menu'] = {} - # self.context(**_args) - self.locations(**_args) + self.context(**_args) + self.menu() self.plugins() def read_config(self,**_args) : diff --git a/cms/templates/index.html b/cms/templates/index.html index 8bbe33b..c08f957 100644 --- a/cms/templates/index.html +++ b/cms/templates/index.html @@ -87,7 +87,6 @@ Vanderbilt University Medical Center -