예제 #1
0
def set_rs_dataset(resource_attr_id, scenario_id, dataset_id, **kwargs):
    rs = DBSession.query(ResourceScenario).filter(
        ResourceScenario.resource_attr_id == resource_attr_id,
        ResourceScenario.scenario_id == scenario_id).first()

    if rs is None:
        raise ResourceNotFoundError(
            "Resource scenario for resource attr %s not found in scenario %s" %
            (resource_attr_id, scenario_id))

    dataset = DBSession.query(Dataset).filter(
        Dataset.dataset_id == dataset_id).first()

    if dataset is None:
        raise ResourceNotFoundError("Dataset %s not found" % (dataset_id, ))

    rs.dataset_id = dataset_id

    DBSession.flush()

    rs = DBSession.query(ResourceScenario).filter(
        ResourceScenario.resource_attr_id == resource_attr_id,
        ResourceScenario.scenario_id == scenario_id).first()

    return rs
예제 #2
0
def _get_user(user_id, **kwargs):
    try:
        user_i = DBSession.query(User).filter(User.user_id==user_id).one()
    except NoResultFound:
        raise ResourceNotFoundError("User %s does not exist"%user_id)

    return user_i
예제 #3
0
def _get_project(project_id):
    try:
        project = DBSession.query(Project).filter(
            Project.project_id == project_id).one()
        return project
    except NoResultFound:
        raise ResourceNotFoundError("Project %s not found" % (project_id))
예제 #4
0
def _get_group(group_id):
    try:
        DBSession.query(ResourceGroup).filter(
            ResourceGroup.group_id == group_id).one()
    except NoResultFound:
        raise ResourceNotFoundError("ResourceGroup %s not found" %
                                    (group_id, ))
예제 #5
0
def _get_role(role_id,**kwargs):
    try:
        role_i = DBSession.query(Role).filter(Role.role_id==role_id).one()
    except NoResultFound:
        raise ResourceNotFoundError("Role %s does not exist"%role_id)

    return role_i
예제 #6
0
def get_username(uid,**kwargs):
    rs = DBSession.query(User.username).filter(User.user_id==uid).one()
    
    if rs is None:
        raise ResourceNotFoundError("User with ID %s not found"%uid)

    return rs.username
예제 #7
0
def get_dataset_collection_by_name(collection_name,**kwargs):
    try:
        collection = DBSession.query(DatasetCollection).filter(DatasetCollection.collection_name==collection_name).one()
    except NoResultFound:
        raise ResourceNotFoundError("No dataset collection found with name %s"%collection_name)

    return collection
예제 #8
0
def update_role(role,**kwargs):
    """
        Update the role.
        Used to add permissions and users to a role.
    """
    #check_perm(kwargs.get('user_id'), 'edit_role')
    try:
        role_i = DBSession.query(Role).filter(Role.role_id==role.id).one()
        role_i.role_name = role.name
        role_i.role_code = role.code
    except NoResultFound:    
        raise ResourceNotFoundError("Role (role_id=%s) does not exist"%(role.id))

    for perm in role.permissions:
        _get_perm(perm.id)
        roleperm_i = RolePerm(role_id=role.id, 
                              perm_id=perm.id
                              )

        DBSession.add(roleperm_i)

    for user in role.users:
        _get_user(user.id)
        roleuser_i = RoleUser(user_id=user.id,
                                         perm_id=perm.id
                                        )

        DBSession.add(roleuser_i)

    DBSession.flush()
    return role_i
예제 #9
0
def add_resource_attribute(resource_type, resource_id, attr_id, is_var,
                           **kwargs):
    """
        Add a resource attribute attribute to a resource.

        attr_is_var indicates whether the attribute is a variable or not --
        this is used in simulation to indicate that this value is expected
        to be filled in by the simulator.
    """

    attr = DBSession.query(Attr).filter(Attr.attr_id == attr_id).first()

    if attr is None:
        raise ResourceNotFoundError("Attribute with ID %s does not exist." %
                                    attr_id)

    resource_i = _get_resource(resource_type, resource_id)

    for ra in resource_i.attributes:
        if ra.attr_id == attr_id:
            raise HydraError(
                "Duplicate attribute. %s %s already has attribute %s" %
                (resource_type, resource_i.get_name(), attr.attr_name))

    attr_is_var = 'Y' if is_var else 'N'

    new_ra = resource_i.add_attribute(attr_id, attr_is_var)
    DBSession.flush()

    return new_ra
예제 #10
0
def _get_network(network_id):
    try:
        net_i = DBSession.query(Network).filter(
            Network.network_id == network_id).one()
        return net_i
    except NoResultFound:
        raise ResourceNotFoundError("Network %s not found" % (network_id))
예제 #11
0
def _get_template(template_id):
    try:
        tmpl_i = DBSession.query(Template).filter(
            Template.template_id == template_id).one()
        return tmpl_i
    except NoResultFound:
        raise ResourceNotFoundError("Network %s not found" % (template_id))
예제 #12
0
def _add_resourcegroupitem(group_item, scenario_id):
    """
        Add a single resource group item (no DB flush, as it's an internal function)
    """
    if group_item.id and group_item.id > 0:
        try:
            group_item_i = DBSession.query(ResourceGroupItem).filter(
                ResourceGroupItem.item_id == group_item.id).one()
        except NoResultFound:
            raise ResourceNotFoundError("ResourceGroupItem %s not found" %
                                        (group_item.id))

    else:
        group_item_i = ResourceGroupItem()
        group_item_i.group_id = group_item.group_id
        if scenario_id is not None:
            group_item_i.scenario_id = scenario_id

    ref_key = group_item.ref_key
    group_item_i.ref_key = ref_key
    if ref_key == 'NODE':
        group_item_i.node_id = group_item.ref_id
    elif ref_key == 'LINK':
        group_item_i.link_id = group_item.ref_id
    elif ref_key == 'GROUP':
        group_item_i.subgroup_id = group_item.ref_id
    DBSession.add(group_item_i)
    return group_item_i
예제 #13
0
def _get_dataset(dataset_id):
    try:
        dataset_i = DBSession.query(Dataset).filter(
            Dataset.dataset_id == dataset_id).one()
        return dataset_i
    except NoResultFound:
        raise ResourceNotFoundError("Dataset %s not found" % (dataset_id))
예제 #14
0
def _get_attr(attr_id):
    try:
        attr = DBSession.query(Attr).filter(Attr.attr_id == attr_id).one()
        return attr
    except NoResultFound:
        raise ResourceNotFoundError("Attribute with ID %s not found" %
                                    (attr_id, ))
예제 #15
0
def _get_perm(perm_id,**kwargs):
    try:
        perm_i = DBSession.query(Perm).filter(Perm.perm_id==perm_id).one()
    except NoResultFound:
        raise ResourceNotFoundError("Permission %s does not exist"%perm_id)

    return perm_i
예제 #16
0
def _get_item(item_id):
    try:
        item = DBSession.query(ResourceGroupItem).filter(
            ResourceGroupItem.item_id == item_id).one()
        return item
    except NoResultFound:
        raise ResourceNotFoundError("ResourceGroupItem %s not found" %
                                    (item_id, ))
예제 #17
0
def _get_templatetype(type_id):
    try:
        typ = DBSession.query(TemplateType).filter(
            TemplateType.type_id == type_id).one()
        return typ
    except NoResultFound:
        raise ResourceNotFoundError("Template Type with ID %s not found" %
                                    (type_id, ))
예제 #18
0
def delete_dataset_collection(collection_id,**kwargs):

    try:
        collection = DBSession.query(DatasetCollection).filter(DatasetCollection.collection_id==collection_id).one()
    except NoResultFound:
        raise ResourceNotFoundError("No dataset collection found with id %s"%collection_id)

    DBSession.delete(collection)
    DBSession.flush()
예제 #19
0
def get_role_by_code(role_code,**kwargs):
    """
        Get a role by its code
    """
    try:
        role = DBSession.query(Role).filter(Role.role_code==role_code).one()
        return role
    except NoResultFound:
        raise ResourceNotFoundError("Role not found (role_code=%s)"%(role_code))
예제 #20
0
def get_perm_by_code(perm_code,**kwargs):
    """
        Get a permission by its code 
    """

    try:
        perm = DBSession.query(Perm).filter(Perm.perm_code==perm_code).one()
        return perm
    except NoResultFound:
        raise ResourceNotFoundError("Permission not found (perm_code=%s)"(perm_code))
예제 #21
0
def update_user_display_name(user,**kwargs):
    """
    """
    #check_perm(kwargs.get('user_id'), 'edit_user')
    try:
        user_i = DBSession.query(User).filter(User.user_id==user.id).one()
        user_i.display_name = user.display_name
        return user_i
    except NoResultFound:
        raise ResourceNotFoundError("User (id=%s) not found"%(user.id))
예제 #22
0
def update_user_password(new_pwd_user_id, new_password,**kwargs):
    """
    """
    #check_perm(kwargs.get('user_id'), 'edit_user')
    try:
        user_i = DBSession.query(User).filter(User.user_id==new_pwd_user_id).one()
        user_i.password = bcrypt.hashpw(new_password.encode('utf-8'), bcrypt.gensalt())
        return user_i
    except NoResultFound:
        raise ResourceNotFoundError("User (id=%s) not found"%(new_pwd_user_id))
예제 #23
0
def get_perm(perm_id,**kwargs):
    """
        Get all permissions
    """

    try:
        perm = DBSession.query(Perm).filter(Perm.perm_id==perm_id).one()
        return perm
    except NoResultFound:
        raise ResourceNotFoundError("Permission not found (perm_id=%s)"%(perm_id))
예제 #24
0
def _get_collection(collection_id):
    """
        Get a dataset collection by ID
        :param collection ID
    """
    try:
        collection = DBSession.query(DatasetCollection).filter(DatasetCollection.collection_id==collection_id).one()
        return collection
    except NoResultFound:
        raise ResourceNotFoundError("No dataset collection found with id %s"%collection_id)
예제 #25
0
def get_collections_like_name(collection_name,**kwargs):
    """
        Get all the datasets from the collection with the specified name
    """
    try:
        collections = DBSession.query(DatasetCollection).filter(DatasetCollection.collection_name.like("%%%s%%"%collection_name.lower())).all()
    except NoResultFound:
        raise ResourceNotFoundError("No dataset collection found with name %s"%collection_name)

    return collections
예제 #26
0
def delete_role(role_id,**kwargs):
    """
    """
    #check_perm(kwargs.get('user_id'), 'edit_role')
    try:
        role_i = DBSession.query(Role).filter(Role.role_id==role_id).one()
        DBSession.delete(role_i)
    except InvalidRequestError:    
        raise ResourceNotFoundError("Role (role_id=%s) does not exist"%(role_id))

    return 'OK'
예제 #27
0
def delete_perm(perm_id,**kwargs):
    """
    """

    #check_perm(kwargs.get('user_id'), 'edit_perm')
    try:
        perm_i = DBSession.query(Perm).filter(Perm.perm_id==perm_id).one()
        DBSession.delete(perm_i)
    except InvalidRequestError:    
        raise ResourceNotFoundError("Permission (id=%s) does not exist"%(perm_id))

    return 'OK' 
예제 #28
0
def set_user_role(new_user_id, role_id,**kwargs):
    #check_perm(kwargs.get('user_id'), 'edit_role')
    try:
        _get_user(new_user_id)
        _get_role(role_id)
        roleuser_i = RoleUser(user_id=new_user_id, role_id=role_id)
        DBSession.add(roleuser_i) 
        DBSession.flush()
    except: # Will occur if the foreign keys do not exist    
        raise ResourceNotFoundError("User or Role does not exist")

    return roleuser_i.role
예제 #29
0
def delete_user_role(deleted_user_id, role_id,**kwargs):

    #check_perm(kwargs.get('user_id'), 'edit_role')
    try:
        _get_user(deleted_user_id)
        _get_role(role_id)
        roleuser_i = DBSession.query(RoleUser).filter(RoleUser.user_id==deleted_user_id, RoleUser.role_id==role_id).one()
        DBSession.delete(roleuser_i)
    except NoResultFound:    
        raise ResourceNotFoundError("User Role does not exist")

    return 'OK'
예제 #30
0
def delete_role_perm(role_id, perm_id,**kwargs):
    #check_perm(kwargs.get('user_id'), 'edit_perm')
    _get_perm(perm_id)
    _get_role(role_id)

    try:
        roleperm_i = DBSession.query(RolePerm).filter(RolePerm.role_id==role_id, RolePerm.perm_id==perm_id).one()
        DBSession.delete(roleperm_i)
    except NoResultFound:    
        raise ResourceNotFoundError("Role Perm does not exist")

    return 'OK'