def promote(confObj, newProjName, parProj, taskObj): check = confObj.projCheck(newProjName) if isinstance(check, str) and not check == confObj.projValid[3]: return check check = confObj.projStoreCheck(parProj) if isinstance(check, list): storeType = check[0] storeLoc = check[1] projFile = check[2] else: return check newProj = makeProj(confObj, projName, storeType, storeLoc, None, None) if isinstance(newProj, str): return newProj taskDat = taskObj.dumpDat() for key, value in taskDat.items(): if (key in newProj.projDat\ and not key == 'parent'\ and not key == 'children'\ and not key == 'assignee'\ and not key == 'name'): newProj.projDat[key] = value if key == 'assignee': for i, j in taskDat['assignee'].items(): newProj.projDat['team'][i] = j writeProj(newProj)
def copyProj(confObj, projName, newProjName, deleteold): proj = loadProj(confObj, projName) if isinstance(proj, str): return proj check = confObj.projStoreCheck(projName) if isinstance(check, list): storeType = check[0] storeLoc = check[1] projFile = check[2] else: return check if deleteold: output = deleteProj(confObj, projName) if isinstance(output, str): return output output = makeProj(confObj, newProjName, storeType, storeLoc, None, dat=proj.dumpDat()[0]) if isinstance(output, str): return output
def makeProj(confObj, projName, storeType, storeLoc, force=False,\ dat=None, *args, **kwargs): names = projName.split('.') check = confObj.projCheck(projName) if isinstance(check, str) and (check.endswith(confObj.projValid[0]) or\ check.endswith(confObj.projValid[1])): return check elif check.endswith(confObj.projValid[3]): if not force and cliUtils.getConfirmation(check+\ '\nWould you like to overwrite it?'): deleteProj(projName) elif force: deleteProj(projName) check = confObj.projStoreCheck(projName) if isinstance(check, list): storeType = check[0] storeLoc = check[1] projFile = check[2] else: return check createdProj = projObj.projObj(projName, projFile, confObj=confObj, dat=dat) if len(names) > 1: check = confObj.projCheck(names[0]) if check.endswith(confObj.projValid[2]): if not force: cliUtils.getConfirmation('Parent ' + check + '\nWould you like to create it?') createdProj.giveParent(names[0]) parProj = makeProj(names[0], storeType=StoreType,\ storeLoc=storeLoc, force=force) if isinstance(parProj, str): return parProj confObj.addProj(parProj, storeType, storeLoc) elif check.endswith(confObj.projValid[3]): parProj = loadProj(confObj, names[0]) else: return check parProj.giveChild(names[-1]) writeProj(parProj) writeProj(createdProj) confObj.addProj(createdProj, storeType, storeLoc) writeConf(confObj) return createdProj
def deleteProj(confObj, projName, storeType=None, storeLoc=None): names = projName.split('.') check = confObj.projCheck(projName) if isinstance(check, str) and (check.endswith(confObj.projValid[0]) or\ check.endswith(confObj.projValid[1]) or \ check.endswith(confObj.projValid[2])): return check check = confObj.projStoreCheck(projName) if isinstance(check, list): storeType = check[0] storeLoc = check[1] projFile = check[2] else: return check childList = [] parProj = loadProj(confObj, names[0]) if isinstance(parProj, str): return parProj if len(names) > 1: if cliUtils.getConfirmation('Are you sure you want to'+\ ' delete this subproject'): os.remove(projFile) parProj.projDat['children'].remove(names[-1]) writeProj(parProj) elif cliUtils.getConfirmation('Are you sure you want to'+\ ' delete this project, its folder,'+\ ' and contents?'): try: childList = parProj.projDat['children'] except: childList = [] shutil.rmtree(storeLoc) if childList: for i in childList: del confObj.confDat['session']['projs']['.'.join([projName, i])] del confObj.confDat['session']['projs'][projName] if confObj.confDat['session']['active'] == projName: makeActive(confObj) writeConf(confObj)
def loadProj(confObj, projName, storeType=None, storeLoc=None): names = projName.split('.') check = confObj.projCheck(projName) if isinstance(check, str) and (check.endswith(confObj.projValid[0]) or\ check.endswith(confObj.projValid[1]) or \ check.endswith(confObj.projValid[2])): return check check = confObj.projStoreCheck(projName) if isinstance(check, list): storeType = check[0] storeLoc = check[1] projFile = check[2] else: return check loadedProj = projObj.projObj(projName, projFile, dat=datIO.yamlRead(projFile)) loadedProj.loadDat() return loadedProj