95 lines
2.4 KiB
Python
95 lines
2.4 KiB
Python
class generateTimestamp:
|
|
ts_filename = 'timestamp.js'
|
|
@staticmethod
|
|
def list_js_files(jsdir,ext='js'):
|
|
import os
|
|
all_files= []
|
|
nono = ['./tiny_mce','./jquery']
|
|
oldcwd = os.getcwd()
|
|
os.chdir(jsdir)
|
|
# TODO Sanitize the loop below
|
|
for root, subfolders, files in os.walk('.'):
|
|
if generateTimestamp.is_allowed(nono,root):
|
|
for filename in files:
|
|
if filename.endswith(ext):
|
|
all_files.append(os.path.join(root,filename))
|
|
|
|
os.chdir(oldcwd)
|
|
for i in nono:
|
|
for j in all_files:
|
|
if j.startswith(i):
|
|
all_files.remove(j)
|
|
return all_files
|
|
|
|
@staticmethod
|
|
def is_allowed(disallowed,item):
|
|
for i in disallowed:
|
|
if item.startswith(i):
|
|
return False
|
|
return True
|
|
|
|
|
|
@staticmethod
|
|
def get_timestamp_dict(jsdir,filelist):
|
|
tsdict={}
|
|
import os
|
|
from webnotes.utils import get_file_timestamp
|
|
oldcwd = os.getcwd()
|
|
os.chdir(jsdir)
|
|
for filename in generateTimestamp.list_js_files('.'):
|
|
ts = get_file_timestamp(filename)
|
|
filename = filename.lstrip('./')
|
|
filename = filename.rstrip('.js')
|
|
filename = filename.replace('/','.')
|
|
if generateTimestamp.is_package(filename):
|
|
# Whoa its a package
|
|
# Remove _packagename from the end if file is a package
|
|
filename = generateTimestamp.convert_to_packagename(filename)
|
|
tsdict[filename] = ts
|
|
os.chdir(oldcwd)
|
|
return tsdict
|
|
@staticmethod
|
|
def is_package(filename):
|
|
from webnotes.utils import jsnamespace
|
|
p = jsnamespace.jsNamespace.package_prefix
|
|
return filename.split('.')[-1].startswith()
|
|
|
|
@staticmethod
|
|
def convert_to_packagename(filename):
|
|
t = []
|
|
for i in filename.split('.')[:-1]:
|
|
t.append(i)
|
|
t.append('.')
|
|
del t[-1]
|
|
filename = ''.join(t)
|
|
return filename
|
|
|
|
@staticmethod
|
|
def read_ts_from_file(jsdir):
|
|
import json
|
|
filename=generateTimestamp.ts_filename
|
|
f = open(generateTimestamp.ts_filename)
|
|
tsjson = eval(f.read())
|
|
f.close()
|
|
ret = json.loads(tsjson)
|
|
return ret
|
|
|
|
@staticmethod
|
|
def gents(jsdir):
|
|
fl=generateTimestamp.list_js_files(jsdir)
|
|
return generateTimestamp.get_timestamp_dict(jsdir,fl)
|
|
|
|
@staticmethod
|
|
def gentsfile(jsdir):
|
|
"""
|
|
function to generate timestamps of all files in spath
|
|
dpath is the file in which the timestamps JSON is stored
|
|
"""
|
|
import json
|
|
import os
|
|
tsdict = generateTimestamp.gents(jsdir)
|
|
f = open(os.path.join(jsdir,'wn',generateTimestamp.ts_filename),'w') #FIXME Hard coded!
|
|
f.write('wn={}\n')
|
|
f.write('wn.timestamp=')
|
|
f.write(json.dumps(tsdict))
|
|
f.close()
|