Пример #1
0
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
Пример #2
0
    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
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
 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