Example #1
0
    def on_get(self, req, resp, organization_code, it_asset_instance_id):
        """List mitigation controls for an organization IT asset.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        :param organization_code: The code of the organization.
        :param it_asset_instance_id: The id of the IT asset instance.
        """
        session = Session()
        try:
            organization_it_asset = find_organization_it_asset(it_asset_instance_id, organization_code, session)
            if organization_it_asset is None:
                raise falcon.HTTPNotFound()

            # Build query to fetch items
            query = session \
                .query(OrganizationItAssetControl) \
                .join(OrganizationITAsset) \
                .join(MitigationControl) \
                .filter(OrganizationITAsset.organization_id == organization_code) \
                .filter(OrganizationITAsset.instance_id == it_asset_instance_id) \
                .order_by(MitigationControl.name)

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {
                'data': data,
                'paging': paging
            }
        finally:
            session.close()
    def on_get(self, req, resp, organization_code, it_asset_instance_id):
        """GETs a paged collection of an IT assets' vulnerabilities in an organization.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        :param organization_code: The code of the organization.
        :param it_asset_instance_id: The id of the IT asset instance.
        """
        session = Session()
        try:
            it_asset_instance = find_it_asset_instance(it_asset_instance_id,
                                                       organization_code,
                                                       session)
            if it_asset_instance is None:
                raise falcon.HTTPNotFound()

            # Build query to fetch items
            query = session\
                .query(OrganizationITAssetVulnerability)\
                .join(OrganizationSecurityThreat)\
                .join(OrganizationITAsset)\
                .join(SecurityThreat)\
                .filter(OrganizationSecurityThreat.organization_id == organization_code) \
                .filter(OrganizationITAsset.instance_id == it_asset_instance_id) \
                .order_by(SecurityThreat.name)

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {'data': data, 'paging': paging}
        finally:
            session.close()
Example #3
0
    def on_get(self, req, resp, organization_code, analysis_id):
        """GETs a paged collection of details of a specific analysis from an organization.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        :param organization_code: The code of the organization.
        :param analysis_id: The id of the analysis for which the details should be retrieved.
        """
        session = Session()
        try:
            organization_analysis = find_organization_analysis(organization_code, analysis_id, session)
            if organization_analysis is None:
                raise falcon.HTTPNotFound()

            # Build query to fetch items
            query = session \
                .query(OrganizationAnalysisDetail) \
                .join(OrganizationAnalysis) \
                .filter(OrganizationAnalysis.organization_id == organization_code) \
                .filter(OrganizationAnalysis.id == analysis_id) \
                .order_by(OrganizationAnalysisDetail.calculated_risk.desc(),
                          OrganizationAnalysisDetail.calculated_impact.desc(),
                          OrganizationAnalysisDetail.calculated_probability.desc())

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {
                'data': data,
                'paging': paging
            }
        finally:
            session.close()
Example #4
0
    def on_get(self, req, resp, organization_code):
        """GETs a paged collection of departments of an organization.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        :param organization_code: The code of the organization.
        """
        session = Session()
        try:
            organization = session.query(Organization).get(organization_code)
            if organization is None:
                raise falcon.HTTPNotFound()

            # Build query to fetch items
            query = session\
                .query(OrganizationDepartment)\
                .filter(OrganizationDepartment.organization_id == organization_code)\
                .order_by(OrganizationDepartment.created_on)\
                .options(joinedload(OrganizationDepartment.department, innerjoin=True))

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {
                'data': data,
                'paging': paging
            }
        finally:
            session.close()
Example #5
0
    def on_get(self, req, resp, organization_code):
        """GETs a paged collection of processes of an organization.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        :param organization_code: The code of the organization.
        """
        session = Session()
        try:
            organization = session.query(Organization).get(organization_code)
            if organization is None:
                raise falcon.HTTPNotFound()

            # Build query to fetch items
            query = session\
                .query(OrganizationProcess) \
                .filter(OrganizationProcess.organization_id == organization_code)\
                .order_by(OrganizationProcess.created_on)

            # Handle optional filters
            macroprocess_instance_id = req.get_param_as_int('macroprocessInstanceId')
            if macroprocess_instance_id:
                query = query.filter(OrganizationProcess.macroprocess_instance_id == macroprocess_instance_id)

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {
                'data': data,
                'paging': paging
            }
        finally:
            session.close()
Example #6
0
    def on_get(self, req, resp):
        """GETs a paged collection of system users.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        """
        session = Session()
        try:
            query = session.query(SystemUser).order_by(SystemUser.full_name)

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {'data': data, 'paging': paging}
        finally:
            session.close()
Example #7
0
    def on_get(self, req, resp):
        """GETs a paged collection of IT services available.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        """
        session = Session()
        try:
            query = session.query(ITService).order_by(ITService.name)

            data, paging = get_collection_page(req, query)
            resp.media = {'data': data, 'paging': paging}
        finally:
            session.close()
Example #8
0
    def on_get(self, req, resp):
        """GETs a paged collection of organizations.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        """
        session = Session()
        try:
            query = session.query(Organization).order_by(Organization.legal_name, Organization.created_on)

            data, paging = get_collection_page(req, query)
            resp.media = {
                'data': data,
                'paging': paging
            }
        finally:
            session.close()
    def on_get(self, req, resp, organization_code):
        """GETs a paged collection of analyses of an organization.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        :param organization_code: The code of the organization.
        """
        session = Session()
        try:
            organization = session.query(Organization).get(organization_code)
            if organization is None:
                raise falcon.HTTPNotFound()

            query = session\
                .query(OrganizationAnalysis) \
                .filter(OrganizationAnalysis.organization_id == organization_code) \
                .order_by(OrganizationAnalysis.created_on.desc())

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {'data': data, 'paging': paging}
        finally:
            session.close()
Example #10
0
    def on_get(self, req, resp, organization_code):
        """GETs a paged collection of security threats of an organization.

        :param req: See Falcon Request documentation.
        :param resp: See Falcon Response documentation.
        :param organization_code: The code of the organization.
        """
        session = Session()
        try:
            organization = session.query(Organization).get(organization_code)
            if organization is None:
                raise falcon.HTTPNotFound()

            # Build query to fetch items
            query = session\
                .query(OrganizationSecurityThreat)\
                .join(SecurityThreat)\
                .filter(OrganizationSecurityThreat.organization_id == organization_code)\
                .order_by(SecurityThreat.name)\

            data, paging = get_collection_page(req, query, custom_asdict)
            resp.media = {'data': data, 'paging': paging}
        finally:
            session.close()