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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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
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