Пример #1
0
def new_work_permit_request(data):
    if 'steps' in data:
        step_list = data.pop('steps', [])

    if 'hazards' in data:
        hazard_list = data.pop('hazards', [])

    work_permit = WorkPermits.from_dict(data)

    if 'coordinates' in data:
        work_permit.coordinates = forms_helper.parse_coordinates(data['coordinates'])

    db.session.add(work_permit)
    db.session.commit()

    # Steps
    for step_data in step_list:
        step = WorkPermitSteps.from_dict(step_data)
        work_permit.steps.append(step)

    # Hazards
    for hazard_data in hazard_list:
        hazard_data.pop('safety_precautions', None)
        haz = WorkPermitHazards.from_dict(hazard_data)
        work_permit.hazards.append(haz)

    db.session.commit()

    return work_permit
Пример #2
0
def update_from_dict(solar_id, data):
    # Prepare Data
    solar = Solar.query.get(solar_id)

    if solar is None:
        raise exceptions.SolarNotFoundError("Solar id={0} not found".format(solar_id))

    solar.update_from_dict(data, ['id', 'coordinates', 'area', 'panels', 'pending_panels'])

    # Update Coordinates and Area
    solar.coordinates = forms_helper.parse_coordinates(data['coordinates'])
    if 'area' in data:
        solar.area = forms_helper.parse_area(data['area'])

    # log.debug("Solar.Panels : {0}".format(solar.panels))

    # Update or Add Pending Solar Panels if any
    # if 'pending_panels' in data:
    #     for panel_data in data['pending_panels']:
    #         if panel_data['name'] and panel_data['area']:
    #             panel = SolarPanels(name=panel_data['name'],
    #                                 area=forms_helper.parse_area(panel_data['area']))
    #             solar.panels.append(panel)

    # Persist
    db.session.commit()

    return solar
Пример #3
0
def new_work_permit_request(data):
    if 'steps' in data:
        step_list = data.pop('steps', [])

    if 'hazards' in data:
        hazard_list = data.pop('hazards', [])

    work_permit = WorkPermits.from_dict(data)

    if 'coordinates' in data:
        work_permit.coordinates = forms_helper.parse_coordinates(
            data['coordinates'])

    db.session.add(work_permit)
    db.session.commit()

    # Steps
    for step_data in step_list:
        step = WorkPermitSteps.from_dict(step_data)
        work_permit.steps.append(step)

    # Hazards
    for hazard_data in hazard_list:
        hazard_data.pop('safety_precautions', None)
        haz = WorkPermitHazards.from_dict(hazard_data)
        work_permit.hazards.append(haz)

    db.session.commit()

    return work_permit
Пример #4
0
def create_from_dict(data):
    # Prepare Data
    solar = Solar.from_dict(data)
    solar.status = IN_PROCESS
    solar.coordinates = forms_helper.parse_coordinates(data['coordinates'])
    if 'area' in data:
        solar.area = forms_helper.parse_area(data['area'])
        log.debug("solar has area: {0}".format(solar.area))

    # Persist
    db.session.add(solar)
    db.session.commit()

    return solar
Пример #5
0
def create_building(data):
    # Prepare Data
    bldg = Building.from_dict(data)
    bldg.latlng = forms_helper.parse_coordinates(data['latlng'])

    if 'path' in data:
        bldg.poly = forms_helper.parse_area(data['path'])
        # log.debug("bldg has path: {0}".format(bldg.poly))

    # Persist
    db.session.add(bldg)
    db.session.commit()

    return bldg
Пример #6
0
def create_from_dict(data):
    # Prepare Data
    p = Projects.from_dict(data)
    p.status = ProjectConstants.IN_PROCESS
    p.coordinates = forms_helper.parse_coordinates(data['coordinates'])

    if 'area' in data:
        p.area = forms_helper.parse_area(data['area'])
        log.debug("project has area: {0}".format(p.area))

    # Persist
    db.session.add(p)
    db.session.commit()

    return p
Пример #7
0
def create_waypoint(buildingid, floorplanid, data):
    # add validation here
    # floor = Floorplan.query.get_or_404(floorplanid)

    # Prepare Data
    waypoint = Waypoint.from_dict(data)
    waypoint.buildingid = buildingid
    waypoint.floorplanid = floorplanid

    waypoint.latlng = forms_helper.parse_coordinates(data['latlng'])

    # Persist
    db.session.add(waypoint)
    db.session.commit()

    return waypoint
Пример #8
0
def update_incident(incident_id, data):
    incident = Incidents.query.get(incident_id)

    if incident is None:
        raise IncidentNotFoundError("Incident id={0} not found".format(incident_id))

    incident.update_from_dict(data,
                              ['id', 'incident_type', 'risk_type', 'location_coordinates', 'injured', 'damaged_assets',
                               'actions_taken', 'photos', 'date_created', 'date_modified'])

    # Update Coordinates
    if 'location_coordinates' in data:
        incident.location_coordinates = forms_helper.parse_coordinates(data['location_coordinates'])

    db.session.commit()

    return incident
Пример #9
0
def report_incident(data):
    # Prepare Data
    basic_data = data['basic']
    incident = Incidents.from_dict(basic_data)

    if 'location_coordinates' in basic_data:
        incident.location_coordinates = forms_helper.parse_coordinates(
            basic_data['location_coordinates'])

    # Persist
    db.session.add(incident)
    db.session.commit()

    # Save Injured
    if 'injured' in data:
        for person in data['injured']:
            # if existing employee
            if 'id' in person:
                p = IncidentPeople(
                    incident_id=incident.id,
                    emp_id=person['id'],
                    involvement=Involvement.INJURED,
                    injuries_description=person['injuries_description'])
            else:
                p = IncidentPeople.from_dict(person)
            incident.injured.append(p)

    # Save Damaged Assets
    if 'damaged_assets' in data:
        for asset_data in data['damaged_assets']:
            asset = IncidentDamagedAssets.from_dict(asset_data)
            asset.incident_id = incident.id
            incident.damaged_assets.append(asset)

    # Save Actions Taken
    if 'actions_taken' in data:
        for action_data in data['actions_taken']:
            action = IncidentActionsTaken.from_dict(action_data)
            action.incident_id = incident.id
            incident.actions_taken.append(action)

    db.session.commit()

    return incident
def propose_site_design(data, author_user_id):
    site_design = SiteDesigns(author_user_id=author_user_id)
    db.session.add(site_design)
    db.session.commit()

    for item_data in data['items']:
        component_id = item_data['component_unit_id']

        for coords_data in item_data['coordinates']:
            sd_cu = SiteDesignComponentUnits(site_design_id=site_design.id, component_unit_id=component_id)
            if type(coords_data) is list:
                sd_cu.path = forms_helper.parse_area(coords_data)
            elif type(coords_data) is dict:
                sd_cu.coordinates = forms_helper.parse_coordinates(coords_data)
            db.session.add(sd_cu)

        db.session.commit()

    return site_design
Пример #11
0
def update_work_permit(work_permit_id, data):
    work_permit = WorkPermits.query.get(work_permit_id)

    if work_permit is None:
        raise WorkPermitNotFoundError(
            "Work Permit id={0} not found".format(work_permit_id))

    step_list = []
    if 'steps' in data:
        step_list = data.pop('steps', [])

    hazard_list = []
    if 'hazards' in data:
        hazard_list = data.pop('hazards', [])

    work_permit.update_from_dict(data, [
        'id', 'coordinates', 'steps', 'hazards', 'date_created',
        'date_modified', 'requestor', 'approver'
    ])

    # Update Coordinates
    if 'coordinates' in data:
        work_permit.coordinates = forms_helper.parse_coordinates(
            data['coordinates'])

    # Steps
    for step_data in step_list:
        if 'id' not in step_data:
            step = WorkPermitSteps.from_dict(step_data)
            work_permit.steps.append(step)

    # Hazards
    for hazard_data in hazard_list:
        hazard_data.pop('hazard', None)
        if 'id' not in hazard_data:
            haz = WorkPermitHazards.from_dict(hazard_data)
            work_permit.hazards.append(haz)

    db.session.commit()

    return work_permit
Пример #12
0
def update_project_from_dict(project_id, data):
    # Prepare Data
    proj = Projects.query.get(project_id)

    if proj is None:
        raise ProjectNotFoundError("PROJECT id={0} not found".format(project_id))

    proj.update_from_dict(data, ['id', 'project_type', 'coordinates', 'boundary', 'monthly_kpis', 'community', 'condominium', 'costs', 'date_created', 'date_modified'])

    if 'project_type' in data:
        proj.project_type_id = data['project_type']['id']

    # Update Coordinates and Area
    proj.coordinates = forms_helper.parse_coordinates(data['coordinates'])
    if 'boundary' in data:
        proj.boundary = forms_helper.parse_area(data['boundary'])

    # Persist
    db.session.commit()

    return proj
Пример #13
0
def update_incident(incident_id, data):
    incident = Incidents.query.get(incident_id)

    if incident is None:
        raise IncidentNotFoundError(
            "Incident id={0} not found".format(incident_id))

    incident.update_from_dict(data, [
        'id', 'incident_type', 'risk_type', 'location_coordinates', 'injured',
        'damaged_assets', 'actions_taken', 'photos', 'date_created',
        'date_modified'
    ])

    # Update Coordinates
    if 'location_coordinates' in data:
        incident.location_coordinates = forms_helper.parse_coordinates(
            data['location_coordinates'])

    db.session.commit()

    return incident
Пример #14
0
def report_incident(data):
    # Prepare Data
    basic_data = data['basic']
    incident = Incidents.from_dict(basic_data)

    if 'location_coordinates' in basic_data:
        incident.location_coordinates = forms_helper.parse_coordinates(basic_data['location_coordinates'])

    # Persist
    db.session.add(incident)
    db.session.commit()

    # Save Injured
    if 'injured' in data:
        for person in data['injured']:
            # if existing employee
            if 'id' in person:
                p = IncidentPeople(incident_id=incident.id, emp_id=person['id'], involvement=Involvement.INJURED,
                                   injuries_description=person['injuries_description'])
            else:
                p = IncidentPeople.from_dict(person)
            incident.injured.append(p)

    # Save Damaged Assets
    if 'damaged_assets' in data:
        for asset_data in data['damaged_assets']:
            asset = IncidentDamagedAssets.from_dict(asset_data)
            asset.incident_id = incident.id
            incident.damaged_assets.append(asset)

    # Save Actions Taken
    if 'actions_taken' in data:
        for action_data in data['actions_taken']:
            action = IncidentActionsTaken.from_dict(action_data)
            action.incident_id = incident.id
            incident.actions_taken.append(action)

    db.session.commit()

    return incident
Пример #15
0
def add_risk(risk_assessment_id, risk_data):
    if 'agent_data' in risk_data:
        agent = Agents.from_dict(risk_data['agent_data'])
        db.session.add(agent)
        db.session.commit()

        risk = Risks.from_dict(risk_data)
        risk.agent_id = agent.id

        if 'coordinates' in risk_data:
            risk.coordinates = forms_helper.parse_coordinates(risk_data['coordinates'])

        db.session.add(risk)
        db.session.commit()

        assessment_risk = AssessmentRisk(risk_assessment_id=risk_assessment_id, risk_id=risk.id)
        db.session.add(assessment_risk)
        db.session.commit()

        return assessment_risk

    return None
Пример #16
0
def create_project_from_dict(data):
    # Prepare Data
    proj = Projects.from_dict(data)
    proj.coordinates = forms_helper.parse_coordinates(data['coordinates'])

    if 'area' in data:
        proj.boundary = forms_helper.parse_area(data['area'])

    # Persist
    db.session.add(proj)
    db.session.commit()

    # automatically generate project cost here, randomly numbers - demo purpose
    project_costs = project_costs_helper.generate_project_cost(proj.id)
    db.session.add_all(project_costs)

    # automatically generate project kpi here, also random numbers - demo purpose
    monthly_kpis = kpi_helper.generate_project_monthly_kpis(proj.id)
    db.session.add_all(monthly_kpis)

    db.session.commit()

    return proj
Пример #17
0
def update_work_permit(work_permit_id, data):
    work_permit = WorkPermits.query.get(work_permit_id)

    if work_permit is None:
        raise WorkPermitNotFoundError("Work Permit id={0} not found".format(work_permit_id))

    step_list = []
    if 'steps' in data:
        step_list = data.pop('steps', [])

    hazard_list = []
    if 'hazards' in data:
        hazard_list = data.pop('hazards', [])

    work_permit.update_from_dict(data, ['id', 'coordinates', 'steps', 'hazards', 'date_created', 'date_modified', 'requestor', 'approver'])

    # Update Coordinates
    if 'coordinates' in data:
        work_permit.coordinates = forms_helper.parse_coordinates(data['coordinates'])

    # Steps
    for step_data in step_list:
        if 'id' not in step_data:
            step = WorkPermitSteps.from_dict(step_data)
            work_permit.steps.append(step)

    # Hazards
    for hazard_data in hazard_list:
        hazard_data.pop('hazard', None)
        if 'id' not in hazard_data:
            haz = WorkPermitHazards.from_dict(hazard_data)
            work_permit.hazards.append(haz)

    db.session.commit()

    return work_permit
Пример #18
0
def add_risk(risk_assessment_id, risk_data):
    if 'agent_data' in risk_data:
        agent = Agents.from_dict(risk_data['agent_data'])
        db.session.add(agent)
        db.session.commit()

        risk = Risks.from_dict(risk_data)
        risk.agent_id = agent.id

        if 'coordinates' in risk_data:
            risk.coordinates = forms_helper.parse_coordinates(
                risk_data['coordinates'])

        db.session.add(risk)
        db.session.commit()

        assessment_risk = AssessmentRisk(risk_assessment_id=risk_assessment_id,
                                         risk_id=risk.id)
        db.session.add(assessment_risk)
        db.session.commit()

        return assessment_risk

    return None