def save_new_project(proj, username=None, uid=None): """ If we're creating a new project, we need to do some operations on it to make sure it's valid for the webapp. """ # Preliminaries new_project = sc.dcp(proj) # Copy the project, only save what we want... new_project.uid = sc.uuid(uid) # Get unique name user = get_user(username) current_project_names = [] for project_key in user.projects: proj = load_project(project_key) current_project_names.append(proj.name) new_project_name = sc.uniquename(new_project.name, namelist=current_project_names) new_project.name = new_project_name # Ensure it's a valid webapp project if not hasattr(new_project, 'webapp'): new_project.webapp = sc.prettyobj() new_project.webapp.username = username # If we ever use Celery with HealthPrior: new_project.webapp.tasks = [] new_project.webapp.username = username # Make sure we have the current username # Save all the things key = save_project(new_project) if key not in user.projects: # Let's not allow multiple copies user.projects.append(key) datastore.saveuser(user) return key, new_project
def __init__(self, name=None, project=None, filename=None, folder=None): if name is None: name = 'Default' self.projectref = sc.Link(project) # Store pointer for the project self.name = sc.uniquename( name, namelist=self.projectref().burdensets.keys( )) # Name of the parameter set, e.g. 'default' self.uid = sc.uuid() # ID self.created = sc.now() # Date created self.modified = sc.now() # Date modified # Define hard-coded column names self.colnames = sc.odict([ ('active', 'Active'), #('code', 'Code'), ('cause', 'Cause'), ('dalys', 'DALYs'), ('deaths', 'Deaths'), ('prevalence', 'Prevalence') ]) # Load data, if provided self.data = None if filename is not None: self.loaddata(filename=filename, folder=folder) return None
def create_burdenset(project_id, country): proj = load_project(project_id) # Get the Project object. unique_name = sc.uniquename(country, namelist=proj.burdensets.keys()) filename = hp.HPpath('data') + country + ' BoD.xlsx' newburdenset = hp.Burden(project=proj, name=unique_name, filename=filename) proj.burdensets[ unique_name] = newburdenset # Put the new burden set in the dictionary. save_project(proj) return jsonify_burdensets(proj=proj)
def copy_set(project_id, which, ind): proj = load_project(project_id) # Get the Project object. setdict, jsonifier = get_set(proj, which, fulloutput=True) newname = sc.uniquename(setdict[ind].name, namelist=setdict.keys()) newset = sc.dcp(setdict[ind]) newset.name = newname setdict[newname] = newset save_project(proj) return jsonifier(proj=proj)
def rename_set(project_id, which, ind, newname, die=False): proj = load_project(project_id) # Get the Project object. setdict, jsonifier = get_set(proj, which, fulloutput=True) origname = setdict.keys()[ind] uniquename = sc.uniquename(newname, namelist=setdict.keys()) if uniquename != newname: errormsg = 'Cannot rename %s from %s to %s since name already exists' % ( which, origname, newname) if die: raise Exception(errormsg) else: print(errormsg) return None setdict.rename(origname, newname) setdict[newname].name = newname save_project(proj) return jsonifier(proj=proj)
def __init__(self, name=None, project=None, filename=None, folder=None): if name is None: name = 'Default' self.projectref = sc.Link(project) # Store pointer for the project self.name = sc.uniquename(name, namelist=self.projectref().intervsets.keys()) # Name of the parameter set, e.g. 'default' self.uid = sc.uuid() # ID self.created = sc.now() # Date created self.modified = sc.now() # Date modified # Define hard-coded column names self.colnames = sc.odict([('active', 'Active'), ('shortname','Short name'), ('platform', 'Platform'), ('burdencov','Causes of burden (max coverage)'), ('icer', 'ICER'), ('unitcost', 'Unit cost'), ('spend', 'Spending'), ('frp', 'FRP'), ('equity', 'Equity'), ]) self.data = None if filename is not None: self.loaddata(filename=filename, folder=folder) return None