# any local dbfile
*.sqlite3
-# here is a mode to 'record' the backend answers and replay them offline
-offline-*
# the usual useless crap
TAGS
*.pyc
LOCAL_RSYNC_EXCLUDES := --exclude '*.pyc'
LOCAL_RSYNC_EXCLUDES += --exclude '*.sqlite3' --exclude myslice.ini
LOCAL_RSYNC_EXCLUDES += --exclude static --exclude templates --exclude build
-LOCAL_RSYNC_EXCLUDES += --exclude to-be-integrated --exclude third-party --exclude 'offline*'
+LOCAL_RSYNC_EXCLUDES += --exclude to-be-integrated --exclude third-party
# usual excludes
RSYNC_EXCLUDES := --exclude .git --exclude '*~' --exclude TAGS --exclude .DS_Store $(LOCAL_RSYNC_EXCLUDES)
# make -n will propagate as rsync -n
@exit 1
else
+$(RSYNC) ./apache/myslice.conf $(SSHURL)/$(INSTALLED_APACHE)/
- +$(RSYNC) ./apache/unfold-init-ssl.py $(SSHURL)/$(bindir)/
+ +$(RSYNC) ./apache/unfold-init-ssl.sh $(SSHURL)/$(bindir)/
endif
restart:
debug_empty=False
#debug_empty=True
-# Historically we had a feature for developing without an Internet connection
-# However this won't work anymore as the python layer itself does manifold calls
-# before javascript has a chance to do so.
-# Might still come in handy if you want the fastest possible (locally cached) feedback
-# beware that this is very rough though...
-work_offline=False
-#work_offline=True
-
# this view is what the javascript talks to when it sends a query
# see also
# myslice/urls.py
manifold_query = Query()
#manifold_query = ManifoldQuery()
manifold_query.fill_from_POST(request.POST)
- offline_filename="%s/../offline-%s-%s.json"%(os.path.dirname(__file__),manifold_query.action,manifold_query.object)
# retrieve session for request
# We allow some requests to use the ADMIN user account
json_answer=json.dumps({'code':0,'value':[]})
print "By-passing : debug_empty & 'get' request : returning a fake empty list"
return HttpResponse (json_answer, mimetype="application/json")
- ### patch : return the latest one..
- if work_offline:
- # if that won't work then we'll try to update anyways
- try:
- with (file(offline_filename,"r")) as f:
- json_answer=f.read()
- print "By-passing : using contents from %s"%offline_filename
- return HttpResponse (json_answer, mimetype="application/json")
- except:
- import traceback
- traceback.print_exc()
- print "Could not run in offline mode, PROCEEDING"
- pass
# actually forward
manifold_api= ManifoldAPI(auth=manifold_api_session_auth)
result [ 'description' ] = [ ResultValue.to_html (x) for x in result['description'] ]
json_answer=json.dumps(result)
- # if in debug mode we save this so we can use offline mode later
- if debug:
- with (file(offline_filename,"w")) as f:
- f.write(json_answer)
# this is an artificial delay added for debugging purposes only
if debug_spin>0:
debug=False
debug=True
-# turn this on if you want to work offline
-work_offline=False
-#work_offline=True
-
class MetaData:
def __init__ (self, auth):
self.hash_by_object={}
def fetch (self, request):
- offline_filename="%s/../offline-metadata.json"%os.path.dirname(__file__)
- if work_offline:
- try:
- with file(offline_metadata) as f:
- self.hash_by_object=json.loads(f.read())
- return
- except:
- print "metadata.work_offline: failed to decode %s"%offline_filename
manifold_api = ManifoldAPI(self.auth)
fields = ['table', 'column.name', 'column.qualifier', 'column.type',
'column.is_array', 'column.description', 'column.default', 'key', 'capability']
# print "Failed to retrieve metadata",rows_result.error()
# rows=[]
self.hash_by_object = dict ( [ (row['table'], row) for row in rows ] )
- # save for next time we use offline mode
- if debug and rows:
- with file(offline_filename,'w') as f:
- f.write(json.dumps(self.hash_by_object))
def to_json(self):
return json.dumps(self.hash_by_object)