def force_integrity(request): """ controller to force recreate the json heirarchy and also take care of dangling meta files, and create missing meta files """ if request.method == "GET": for root, dirs, files in os.walk(DATABASE_DIR): for filename in files: if not filename.endswith('.zip'): if filename.endswith('.meta'): pathname = os.path.join(root, '.'.join(filename.split('.')[:-1])) if not (os.path.isfile(pathname)): os.remove(os.path.join(root, filename)) else: metafilename = filename + '.meta' metafile = os.path.join(root, metafilename) if not (os.path.isfile(metafile)): tags = generate_path_meta_tags(os.path.relpath(metafile, DATABASE_DIR)) with open(metafile,"w") as f: f.write('\n'.join(tags)) jsc.recreate_path(DATABASE_DIR, DATABASE_DICT_FILE_NAME) return redirect('/books/') else: return redirect('/books/')
def finalize_approvals(request): """ controller to finalize all the approvals (calls the recreate path function from jsc) admin needs to click on finalize approvals once after manually pasting new files. """ if request.method == "GET": jsc.recreate_path(DATABASE_DIR, DATABASE_DICT_FILE_NAME) return redirect('/books/approve') else: return redirect('/books/approve')
def approve_unapproved_document(request): fileName = request.GET.get('name', 'none') seperatedlist = fileName.split(SEPARATOR) try: destination = DATABASE_DIR for directory in seperatedlist: destination = destination + "/" + directory shutil.copy(UNAPPROVED_DIR + fileName, destination) jsc.recreate_path(DATABASE_DIR, DATABASE_DICT_FILE_NAME) return redirect('/books/remove_unapproved_document?name=' + fileName) except IOError as e: if e.errno != errno.ENOENT: raise os.makedirs(os.path.dirname(destination)) shutil.copy(UNAPPROVED_DIR + fileName, destination) jsc.recreate_path(DATABASE_DIR, DATABASE_DICT_FILE_NAME) return redirect('/books/remove_unapproved_document?name=' + fileName)