def test_more(self): srd = Search_Result_DataService() resd = Resource_DAO() rep = RepairResource_DAO() reqeust = ResourceRequest_DAO() count_for_test = run_sql_string_statement( "select count(*) from Resource") count = int(count_for_test[0][0]) a = count + 1 b = count + 2 resd.insert_resource(a, "123Name", "dummy", "not available", 14.56, 33.12, "james", 120.4, 3, "hour", "tom", "2015-03-02", "2016-07-03") resd.insert_resource(b, "123Name", "dummy", "in repair", 14.56, 33.12, "james", 120.4, 3, "hour", "tom", "2015-03-02", "2016-07-03") rep.insert_records(b, rep.get_count() + 1, "james", "2015-03-02", "2016-07-03") reqeust.insert_record(1, reqeust.get_count() + 1, "2015-03-02", a) ma = srd.populate_table_data("a", "2# aaa", 1000000, "(6) testinci") assert isinstance(ma, list) print ma
def __init__(self): logging.debug("start the ResourceStatus_DataService()") self.userdao = User_DAO() self.incidao = Incident_DAO() self.resreqdao = ResourceRequest_DAO() self.resdao = Resource_DAO() self.repairResourcedao = RepairResource_DAO()
def __init__(self): logging.debug("start the Search_Result_DataService()") self.res_dao = Resource_DAO() self.inci_dao = Incident_DAO() self.user_dao = User_DAO() self.res_request_dao = ResourceRequest_DAO() self.repair_resource_dao = RepairResource_DAO() self.incidentEntry = "" self.username = ""
class ActionButton_Dataservice(): def __init__(self): logging.info("start the ActionButton_Dataservice") self.resource_request_dao = ResourceRequest_DAO() self.repair_resource_dao = RepairResource_DAO() self.resource_dao = Resource_DAO() def request_function(self, resId, expDate, incid): assert isinstance(resId, int) assert isinstance(expDate, str) assert isinstance(incid, int) new_id = int(self.resource_request_dao.get_count()) + 1000 self.resource_request_dao.insert_record(incid, new_id, expDate, resId) def repair_function(self, resId, username, duration): assert isinstance(resId, int) assert isinstance(username, str) assert isinstance(duration, int) repId = int(self.repair_resource_dao.get_count()) + 1 currentStatus = self.resource_dao.get_resource_status_by_resourceId( resId) if currentStatus == "available": start = datetime.now() end = start + timedelta(days=duration) sd = datetime.strftime(start, "%Y-%m-%d") ed = datetime.strftime(end, "%Y-%m-%d") self.resource_dao.update_status_resource_id(resId, "in repair") self.repair_resource_dao.insert_records(resId, repId, username, sd, ed) if currentStatus == "not available": start = self.resource_dao.get_duedate_by_resourceId(resId) sd = datetime.strptime(start, "%Y-%m-%d") end = sd + timedelta(days=duration) sd = datetime.strftime(sd, "%Y-%m-%d") ed = datetime.strftime(end, "%Y-%m-%d") self.repair_resource_dao.insert_records(resId, repId, username, sd, ed) def deploy_function(self, incid, resid, username): assert isinstance(incid, int) assert isinstance(resid, int) assert isinstance(username, str) duedate = self.resource_request_dao.get_expectedreturndate_by_resIdAndInciId( resid, incid) start = datetime.now() sd = datetime.strftime(start, "%Y-%m-%d") logging.info(sd) end = start + timedelta(days=22) ed = datetime.strftime(end, "%Y-%m-%d") self.resource_dao.update_all_resource_id("not available", sd, ed, username, resid) self.resource_request_dao.delete_by_resIdAndInciId(resid, incid)
def test_insert(self): rrd = RepairResource_DAO() count = rrd.get_count() print count # rrd.insert_records(count + 1, count + 1, "james", "2015-03-03", "2016-03-03") print rrd.get_all_repair_resource_lists() print rrd.get_all_repair_resource_lists_by_repairId(3) print rrd.get_all_repair_resource_lists_by_resourceID(4) print rrd.get_enddate_by_resourceId(3) assert isinstance(rrd.get_enddate_by_resourceId(3), str)
def __init__(self): logging.info("start the ActionButton_Dataservice") self.resource_request_dao = ResourceRequest_DAO() self.repair_resource_dao = RepairResource_DAO() self.resource_dao = Resource_DAO()
class ResourceStatus_DataService(): def __init__(self): logging.debug("start the ResourceStatus_DataService()") self.userdao = User_DAO() self.incidao = Incident_DAO() self.resreqdao = ResourceRequest_DAO() self.resdao = Resource_DAO() self.repairResourcedao = RepairResource_DAO() def populate_res_in_use_tabledata(self, username): assert isinstance(username, str) sql = "SELECT ResourceID, ResourceName, owner, startDate, CurrentUser FROM Resource WHERE ResourceID in (SELECT ResourceID FROM Resource WHERE CurrentUser ='******');" sql = sql.format(username) result = run_sql_string_statement(sql) fr = list() if len(result) == 0 or len(result[0]) == 0: return fr for row in result: tmp = list() tmp.append(row[0]) tmp.append(row[1]) tmp.append(self.userdao.get_nameinfo_by_username(row[2])) tmp.append(str(row[3])) tmp.append(self.userdao.get_nameinfo_by_username(row[4])) fr.append(tmp) return fr def return_button(self, resId): assert isinstance(resId, int) sql = "UPDATE Resource SET startDate =NULL, DueDate = NULL, CurrentUser = NULL, CurrentStatus ='available' WHERE ResourceID = {0};" sql = sql.format(resId) result = run_sql_string_statement(sql) def res_request_by_username(self, username): assert isinstance(username, str) finalresult = list() sql = "SELECT ResourceID, IncidentID FROM ResourceRequest WHERE IncidentID in (SELECT IncidentID FROM Incident WHERE Incident.username ='******');" sql = sql.format(username) temp_result = run_sql_string_statement(sql) if len(temp_result) == 0 or len(temp_result[0]) == 0: return finalresult templist = list() for row in temp_result: rowtemp = list() resid = int(row[0]) incid = int(row[1]) sql = "SELECT ResourceName, Owner, DueDate FROM Resource WHERE ResourceID = {0};".format(resid) t1 = run_sql_string_statement(sql) if len(t1) == 0 or len(t1[0]) == 0: rowtemp.append(resid) rowtemp.append("") rowtemp.append("") rowtemp.append("") rowtemp.append("") rowtemp.append("") else: rowtemp.append(resid) rowtemp.append(t1[0][0]) rowtemp.append(self.incidao.get_incident_description_by_incidentId(incid)) rowtemp.append(self.userdao.get_nameinfo_by_username(t1[0][1])) rowtemp.append(str(t1[0][2])) rowtemp.append(incid) finalresult.append(rowtemp) return finalresult def cancel_button(self, resid, incid): assert isinstance(resid, int) assert isinstance(incid, int) self.resreqdao.delete_by_resIdAndInciId(resid, incid) def request_received_me(self, username): assert isinstance(username, str) finalresult = list() sql = "SELECT ResourceID, RequestID, ExpectedReturnDate, IncidentID FROM ResourceRequest WHERE ResourceID in (SELECT ResourceID from Resource WHERE Resource.Owner ='{0}');" sql = sql.format(username) temp_result = run_sql_string_statement(sql) if len(temp_result) == 0 or len(temp_result[0]) == 0: return finalresult templist = list() for row in temp_result: resid = row[0] erd = row[2] incid = row[3] reqid = row[1] t = run_sql_string_statement( "SELECT CurrentStatus, ResourceName, DueDate FROM Resource WHERE ResourceID = {0};".format( int(row[0]))) templist.append(resid) templist.append(self.resdao.get_resname_by_resourceId(int(resid))) templist.append(self.incidao.get_incident_description_by_incidentId(int(incid))) templist.append(self.userdao.get_nameinfo_by_username(username)) templist.append(str(erd)) status = t[0][0] if status != "available": templist.append("reject") else: if self.repairResourcedao.get_count_by_resId(resid) == 0: templist.append("cancelrepair") else: templist.append("deploy-reject") templist.append(incid) finalresult.append(templist) return finalresult def reject_button(self, resid, incid): assert isinstance(resid, int) assert isinstance(incid, int) self.resreqdao.delete_by_resIdAndInciId(resid, incid) def cancelrepair_button(self, resid): assert isinstance(resid, int) self.repairResourcedao.delete_by_resId(resid) def deploy_button(self, resid, erd, username, inciid): assert isinstance(resid, int) assert isinstance(inciid, int) today = str(datetime.datetime.today().date()) sql = "UPDATE Resource SET startDate ='{0}', DueDate = '{1}', CurrentStatus = 'not available', CurrentUser = '******' WHERE ResourceID = {3};" run_sql_string_statement(sql.format(today, str(erd), username, resid)) self.resreqdao.delete_by_resIdAndInciId(resid, inciid) def repairtable(self, username): assert isinstance(username, str) sql = "SELECT ResourceID, repairID, startDate, endDate FROM RepairResource WHERE ResourceID in (SELECT ResourceID FROM Resource WHERE Owner ='{0}')"; tempresult = run_sql_string_statement(sql.format(username)) finalre = list() if len(tempresult) == 0 or len(tempresult[0]) == 0: return finalre for row in tempresult: resid = int(row[0]) tm = list() tm.append(resid) tm.append(self.resdao.get_resname_by_resourceId(resid)) tm.append(str(row[2])) tm.append(str(row[3])) finalre.append(tm) return finalre
class Search_Result_DataService(): ######################################################################### # if no incident selected, ignore distance calculation and return all resources ######################################################################### def __init__(self): logging.debug("start the Search_Result_DataService()") self.res_dao = Resource_DAO() self.inci_dao = Incident_DAO() self.user_dao = User_DAO() self.res_request_dao = ResourceRequest_DAO() self.repair_resource_dao = RepairResource_DAO() self.incidentEntry = "" self.username = "" def get_incident_position(self, incident_entry): ''' @rtype: list ''' assert isinstance(incident_entry, str) temp = incident_entry[incident_entry.index("(") + 1:incident_entry.index(")")] logging.debug("incident id is " + str(temp)) return self.inci_dao.get_incident_position_by_incidentId(int(temp)) def get_esf_id(self, esf_entry): ''' @rtype: int ''' assert isinstance(esf_entry, str) temp = esf_entry[:esf_entry.index("#")] logging.debug("esf id is " + str(temp)) return int(temp) def get_resourceId_searched_by_esf(self, esfEntry): ''' @rtype: list ''' ### includes the resoruce table, cap table, and esf table assert isinstance(esfEntry, str) srd = Search_Result_DataService() esf_id = srd.get_esf_id(esfEntry) from_primary = list() from_additional = list() from_primary = self.res_dao.get_resource_lists_by_primary_esf(esf_id) from_additional = self.res_dao.get_resource_lists_by_additional_esf( esf_id) logging.debug(from_primary) logging.debug(from_additional) temp_set = set(from_primary + from_additional) return list(temp_set) def get_resourceId_searched_by_keyword(self, keyword): ''' @rtype: list ''' ### includes the resoruce table, cap table, and esf table assert isinstance(keyword, str) from_res = list() from_cap = list() from_esf = list() from_res = self.res_dao.get_resourceId_lists_by_keyword_model_or_name( keyword) from_cap = self.res_dao.get_resource_lists_by_keyword_capabilities( keyword) from_esf = self.res_dao.get_resource_lists_by_keyword_esf(keyword) logging.debug(from_res) logging.debug(from_cap) logging.debug(from_esf) temp_set = set(from_esf + from_res + from_cap) return list(temp_set) def get_distance_between_res_inci(self, inci_lat, inci_long, resoruceId): ''' @rtype: float ''' assert isinstance(inci_lat, float) assert isinstance(inci_long, float) assert isinstance(resoruceId, int) res_pos = self.res_dao.get_resource_position_by_resourceId(resoruceId) if len(res_pos) == 0: return 0.0 res_lat = res_pos[0] res_long = res_pos[1] delta_lat = radians(res_lat) - radians(inci_lat) delta_long = radians(res_long) - radians(inci_long) a = sin(delta_lat / 2)**2 + cos(radians(inci_lat)) * cos( radians(res_lat)) * sin(delta_long / 2)**2 c = 2 * atan2(sqrt(a), sqrt(1 - a)) return 6371 * c def get_resIdDict_within_distance(self, incident_entry, distance, res_id_lists): ''' @rtype: dict ''' assert isinstance(res_id_lists, list) assert isinstance(incident_entry, str) srd = Search_Result_DataService() inci_lat = srd.get_incident_position(incident_entry)[0] inci_long = srd.get_incident_position(incident_entry)[1] result = dict() for id in res_id_lists: dist = srd.get_distance_between_res_inci(inci_lat, inci_long, id) if dist <= distance: result[id] = dist sorted_result = sorted(result.items(), key=operator.itemgetter(0)) return dict(sorted_result) def populate_table_data(self, keyword, esfEntry, location_distance, incidenEntry): ''' @rtype: dict ''' assert isinstance(keyword, str) assert isinstance(incidenEntry, str) assert isinstance(esfEntry, str) assert isinstance(location_distance, int) srd = Search_Result_DataService() table_lists = list() if keyword != "" and esfEntry != "" and incidenEntry != "": self.incidentEntry = incidenEntry temp1 = srd.get_resourceId_searched_by_keyword(keyword) temp2 = srd.get_resourceId_searched_by_esf(esfEntry) tempset = set(temp1 + temp2) resource_id_list = list(tempset) resource_id_distance_dict = srd.get_resIdDict_within_distance( incidenEntry, location_distance, resource_id_list) logging.debug("final resourceid-distance mapping") logging.debug(resource_id_distance_dict) for k, v in resource_id_distance_dict.iteritems(): temp_list = list() temp_list.append(k) temp_list.append(v) logging.debug(self.res_dao.get_resource_owner_by_resourceId(k)) temp_list.append( self.user_dao.get_nameinfo_by_username( self.res_dao.get_resource_owner_by_resourceId(k))) temp_list.append( self.res_dao.get_resource_costtext_by_resourceId(k)) temp_status = self.res_dao.get_resource_status_by_resourceId(k) temp_list.append(temp_status) if temp_status == "available": temp_list.append("now") if temp_status == "not available": temp_list.append( self.res_request_dao. get_expectedreturndate_by_resourceId(k)) if temp_status == "in repair": temp_list.append( self.repair_resource_dao.get_enddate_by_resourceId(k)) table_lists.append(temp_list) if keyword == "" and esfEntry != "" and incidenEntry != "": self.incidentEntry = incidenEntry temp2 = srd.get_resourceId_searched_by_esf(esfEntry) tempset = set(temp2) resource_id_list = list(tempset) resource_id_distance_dict = srd.get_resIdDict_within_distance( incidenEntry, location_distance, resource_id_list) logging.debug("final resourceid-distance mapping") logging.debug(resource_id_distance_dict) for k, v in resource_id_distance_dict.iteritems(): temp_list = list() temp_list.append(k) temp_list.append(v) logging.debug(self.res_dao.get_resource_owner_by_resourceId(k)) temp_list.append( self.user_dao.get_nameinfo_by_username( self.res_dao.get_resource_owner_by_resourceId(k))) temp_list.append( self.res_dao.get_resource_costtext_by_resourceId(k)) temp_status = self.res_dao.get_resource_status_by_resourceId(k) temp_list.append(temp_status) if temp_status == "available": temp_list.append("now") if temp_status == "not available": temp_list.append( self.res_request_dao. get_expectedreturndate_by_resourceId(k)) if temp_status == "in repair": temp_list.append( self.repair_resource_dao.get_enddate_by_resourceId(k)) table_lists.append(temp_list) if keyword == "" and esfEntry == "" and incidenEntry != "": self.incidentEntry = incidenEntry resource_id_list = list(self.res_dao.get_all_resource_id()) resource_id_distance_dict = srd.get_resIdDict_within_distance( incidenEntry, location_distance, resource_id_list) logging.debug("final resourceid-distance mapping") logging.debug(resource_id_distance_dict) for k, v in resource_id_distance_dict.iteritems(): temp_list = list() temp_list.append(k) temp_list.append(v) logging.debug(self.res_dao.get_resource_owner_by_resourceId(k)) temp_list.append( self.user_dao.get_nameinfo_by_username( self.res_dao.get_resource_owner_by_resourceId(k))) temp_list.append( self.res_dao.get_resource_costtext_by_resourceId(k)) temp_status = self.res_dao.get_resource_status_by_resourceId(k) temp_list.append(temp_status) if temp_status == "available": temp_list.append("now") if temp_status == "not available": temp_list.append( self.res_request_dao. get_expectedreturndate_by_resourceId(k)) if temp_status == "in repair": temp_list.append( self.repair_resource_dao.get_enddate_by_resourceId(k)) table_lists.append(temp_list) if keyword == "" and esfEntry == "" and incidenEntry == "": resource_id_list = list(self.res_dao.get_all_resource_id()) logging.debug("final resourceid-distance mapping") for k in resource_id_list: temp_list = list() temp_list.append(k) temp_list.append("N.A.") logging.debug(self.res_dao.get_resource_owner_by_resourceId(k)) temp_list.append( self.user_dao.get_nameinfo_by_username( self.res_dao.get_resource_owner_by_resourceId(k))) temp_list.append( self.res_dao.get_resource_costtext_by_resourceId(k)) temp_status = self.res_dao.get_resource_status_by_resourceId(k) temp_list.append(temp_status) if temp_status == "available": temp_list.append("now") if temp_status == "not available": temp_list.append( self.res_request_dao. get_expectedreturndate_by_resourceId(k)) if temp_status == "in repair": temp_list.append( self.repair_resource_dao.get_enddate_by_resourceId(k)) table_lists.append(temp_list) return table_lists def populate_action_lists(self, table_data_lists, username): ''' @rtype: list ''' assert isinstance(table_data_lists, list) assert isinstance(username, str) result = list() for row in table_data_lists: currentStatus = row[4] logging.debug(currentStatus) owner = str( self.res_dao.get_resource_owner_by_resourceId(int(row[0]))) if currentStatus == "in repair" and owner != username: temp = list() result.append(temp) if currentStatus == "not available": temp = list() temp.append("request") result.append(temp) if currentStatus == "available" and owner != username: temp = list() temp.append("request") result.append(temp) if currentStatus == "available" and owner == username: temp = list() startdate_repair = self.repair_resource_dao.get_startdate_by_resourceId( int(row[0])) currentDate = str(datetime.datetime.today().date()) print currentDate print startdate_repair if startdate_repair == "": sd = datetime.datetime.strptime(currentDate, "%Y-%m-%d") cd = datetime.datetime.strptime(currentDate, "%Y-%m-%d") else: sd = datetime.datetime.strptime(startdate_repair, "%Y-%m-%d") cd = datetime.datetime.strptime(currentDate, "%Y-%m-%d") print sd print cd if sd < cd: temp.append("cancel repair") else: if self.incidentEntry != "": temp.append("deploy") temp.append("repair") else: temp.append("repair") result.append(temp) if self.incidentEntry == "" and owner != username: temp = list() result.append(temp) return result