Пример #1
0
def check_rase_time_with_group(time_away, other_rase, city, route,
                               other_map_list):
    print("CHECK TIME_AWAY")
    print(time_away)
    print(other_rase[1], route, other_rase[6])
    # print(datetime.datetime.strptime(time_away, "%Y-%m-%d %H:%M:%S"))
    db_helper = DBhelper()
    routes_deny = db_helper.find_routes_group_by_from(city, int(route))
    print("RASE TEST ", other_rase, route, other_map_list[0])
    print("routes deny ", routes_deny, city, str(route))
    input()

    if abs((other_rase[1] - datetime.datetime.strptime(time_away, "%Y-%m-%d %H:%M:%S"))) \
            .total_seconds() < 1800 and route == other_rase[6]:
        print("CANT1")
        return False

    if other_map_list[0].place_from_name == city:
        for route_list in routes_deny[city]:
            if other_map_list[0].route in routes_deny[city][
                    route_list] and route in routes_deny[city][route_list]:
                if abs((other_rase[1] - datetime.datetime.strptime(time_away, "%Y-%m-%d %H:%M:%S"))) \
                        .total_seconds() < 1800:
                    print("CANT2")
                    return False

    input()
    return True
Пример #2
0
def check_rase_time_with_group(time_away, other_rase, city, route,
                               other_map_list):
    db_helper = DBhelper()
    routes_deny = db_helper.find_routes_group_by_from(city, int(route))
    if abs((other_rase[1] - datetime.datetime.strptime(time_away, "%Y-%m-%d %H:%M:%S"))) \
            .total_seconds() < 1800 and route == other_rase[6]:
        return False

    if other_map_list[0].place_from_name == city:
        for route_list in routes_deny[city]:
            if other_map_list[0].route in routes_deny[city][
                    route_list] and route in routes_deny[city][route_list]:
                if abs((other_rase[1] - datetime.datetime.strptime(time_away, "%Y-%m-%d %H:%M:%S"))) \
                        .total_seconds() < 1800:
                    return False
    return True
Пример #3
0
def click_event():
    global my_rases
    global all_rases
    global yscroll
    global db_helper
    print("click")
    db_helper = DBhelper()
    prev_all_rases = db_helper.get("rase")
    print(time_away.get())
    print(city_from.get(city_from.curselection()))
    print(city_to.get(city_to.curselection()))
    print(company.get())
    print(plane.get())
    t_away = time_away.get()
    c_from = city_from.get(city_from.curselection())
    c_to = city_to.get(city_to.curselection())
    com = company.get()
    pl = plane.get()
    main(t_away, c_from, c_to, com, pl)
    all_rases = tk.Listbox(root, width=90, height=10)
    all_rases.grid(row=6, column=1)

    yscroll = tk.Scrollbar(command=all_rases.yview, orient=tk.VERTICAL)
    yscroll.grid(row=6, column=2, sticky='ns')
    all_rases.configure(yscrollcommand=yscroll.set)

    db_helper = DBhelper()
    my_rases = db_helper.get("rase")
    print(my_rases)
    i = 0
    while i < len(my_rases) - 1:
        item_rase = []
        for it in my_rases[i]:
            item_rase.append(copy.deepcopy(str(it)))
        if prev_all_rases[i][1] != my_rases[i][1]:
            all_rases.insert(tk.END, str(item_rase))
            all_rases.itemconfig(i, {'bg': 'yellow'})
        else:
            all_rases.insert(tk.END, str(item_rase))
        i += 1
    item_rase = []
    for it in my_rases[i]:
        item_rase.append(copy.deepcopy(str(it)))
    all_rases.insert(tk.END, str(item_rase))
    all_rases.itemconfig(i, {'bg': 'light green'})

    lines = len(my_rases)
    all_rases.yview_scroll(lines, 'units')
Пример #4
0
    def __init__(self):

        self.db = DBhelper()
        super(OLX,
              self).__init__(self.loginListner,
                             self.loadRegWindow)  # calling child by parent
Пример #5
0
class OLX(GUIhelper):
    def __init__(self):

        self.db = DBhelper()
        super(OLX,
              self).__init__(self.loginListner,
                             self.loadRegWindow)  # calling child by parent

    def loginListner(self):
        data = self.db.search('email', self._emailInput.get(), 'password',
                              self._passwordInput.get(), 'userdb1')

        if len(data) == 1:
            self.sessionId = data[0][0]
            self.loadProfile()
        else:
            self.message("OLX", "LOGIN FAILED")

    def loadRegWindow(self):
        self.regWindow(self.registrationHandler)

    def registrationHandler(self):
        if self._nameInput.get() == "" or self._emailInput.get(
        ) == "" or self._passwordInput.get() == "" or self._PhoneInput.get(
        ) == "" or self._addInput.get() == "":
            self.label2.configure(text="PLEASE FILL ALL DETAILS",
                                  bg="yellow",
                                  fg="red")
        else:
            # p = self.fileDialog()
            # print(p)
            regDict = {}
            regDict['user_id'] = "NULL"
            regDict['NAME'] = self._nameInput.get()
            regDict['PASSWORD'] = self._passwordInput.get()
            regDict['PHONE'] = self._PhoneInput.get()
            regDict['EMAIL'] = self._emailInput.get()
            regDict['ADDRESS'] = self._addInput.get()
            #regDict['IMAGE'] = p

            response = self.db.insert(regDict, 'userdb1')

            if response == 1:
                self._root.destroy()
                obj = GUIhelper(self.loginListner, self.loadRegWindow)
                self.label2.configure(text="Registration Successfull ",
                                      bg="white",
                                      fg="green")
            else:
                self.label2.configure(text="Registration Failed ",
                                      bg="red",
                                      fg="Yellow")

    def fileDialog(self):
        _filename = filedialog.askopenfilename(initialdir="/",
                                               title="Select A File",
                                               filetype=(("jpeg files",
                                                          "*.jpg"),
                                                         ("all files", "*.*")))
        return _filename

    def loadProfile(self):
        data = self.db.searchOne('user_id', self.sessionId, 'userdb1', "LIKE")
        self.mainWindow(self, data, mode=0)

    def viewadds(self, num):
        #title="Error"
        #text="[+] Can't Load Data"

        nedata = self.db.searchOne('user_id', self.sessionId, 'userdb1',
                                   "LIKE")
        data = self.db.search1('item', 'owner', 'not like', nedata[0][1])
        new_data = []

        if num < 0 or num > len(data) - 1:
            self.message("Error", "No More")
        else:
            new_data.append(data[num])
            self.mainWindow(self, new_data, mode=2, num=num)

    def createadd1(self):
        data = self.db.searchOne('user_id', self.sessionId, 'userdb1', "LIKE")
        self.mainWindow(self, data, mode=3)

    def createadds(self, data):
        if self._nameInput.get() == "" or self._DescInput.get(
        ) == "" or self._CostInput.get() == "":
            self.label2.configure(text="PLEASE FILL ALL DETAILS",
                                  bg="yellow",
                                  fg="red")
        else:
            regDict = {}
            regDict['item_id'] = "NULL"
            regDict['Item'] = self._nameInput.get()
            regDict['Description'] = self._DescInput.get()
            regDict['Cost'] = self._CostInput.get()
            regDict['Owner'] = data[0][1]
            response = self.db.insert(regDict, 'item')
            if response == 1:
                self.mainWindow(self, data)
            else:
                self.message("Error", "Failed to Create Add")
                self.mainWindow(self, data)

    def showwishlist(self, num):
        data = self.db.searchOne('customer', self.sessionId, 'wishlist',
                                 "LIKE")
        print(data)
        new_data = []

        if num < 0 or num > len(data) - 1:
            self.message("Error", "No More")
        else:
            new_data.append(data[num])
            self.mainWindow(self, new_data, mode=1, num=num)

    def showmyadds(self, num):
        nedata = self.db.searchOne('user_id', self.sessionId, 'userdb1',
                                   "LIKE")
        data = self.db.search1('item', 'owner', 'like', nedata[0][1])
        new_data = []
        print(data)
        if num < 0 or num > len(data) - 1:
            self.message("Error", "No More")
        else:
            new_data.append(data[num])
            self.mainWindow(self, new_data, mode=4, num=num)

    def showowner(self, num, itm):
        nedata = self.db.searchOne('item', itm, 'item', "LIKE")
        data = self.db.search1('userdb1', 'name', 'like', nedata[0][4])
        print(nedata)
        print(data)
        new_data = self.db.searchOne('name', data[0][1], 'userdb1', "LIKE")
        self.mainWindow(self, new_data, mode=5, num=num)

    def addtowishlist(self, itm):
        nedata = self.db.searchOne('item', itm, 'item', "LIKE")
        data = self.db.search1('userdb1', 'name', 'like', nedata[0][4])
        regDict = {}
        regDict['wl_id'] = "NULL"
        regDict['Item'] = nedata[0][1]
        regDict['Cost'] = str(nedata[0][3])
        regDict['Owner'] = nedata[0][4]
        regDict['Image'] = (nedata[0][-1])
        regDict['customer'] = str(self.sessionId)
        print(regDict)
        response = self.db.insert(regDict, 'wishlist')
        if response != 1:
            self.message("Error", "Failed")

    def update(self):
        data = self.db.searchOne('user_id', self.sessionId, 'userdb1', "LIKE")
        self.editWindow(self, data)
        self.edit()
        print("ABCD")

    def edit(self):
        ref = self.db.searchOne('user_id', self.sessionId, 'userdb1', "LIKE")
        ref = list(ref[0])
        regDict = {}
        regDict['user_id'] = "NULL"
        regDict['NAME'] = self._nameInput.get()
        regDict['PASSWORD'] = self._passwordInput.get()
        regDict['PHONE'] = self._PhoneInput.get()
        regDict['EMAIL'] = self._emailInput.get()
        regDict['ADDRESS'] = self._addInput.get()

        for i, j, k in zip(ref, regDict.values(), regDict):
            if j == '':
                regDict[k] = i

        response = self.db.dataupdate(regDict, str(self.sessionId))
        if response == 1:
            self.message("Message", "Updation Successfull")
            self.loadProfile()
        else:
            self.message("Error", "Updation Failed")
            self.loadProfile()

    def addimg(self):
        data = self.db.searchOne('user_id', self.sessionId, 'userdb1', "LIKE")
        self.db.insertimg('userdb1', )
Пример #6
0
for item in ["St.Petersberg, Pulkovo", "Moscow, Sheremetievo"]:
    city_from.insert(tk.END, item)

city_to = tk.Listbox(root, width=50, height=2, exportselection=0)
city_to.grid(row=2, column=1)
for item in ["St.Petersberg, Pulkovo", "Moscow, Sheremetievo"]:
    city_to.insert(tk.END, item)

all_rases = tk.Listbox(root, width=90, height=10)
all_rases.grid(row=6, column=1)

yscroll = tk.Scrollbar(command=all_rases.yview, orient=tk.VERTICAL)
yscroll.grid(row=6, column=2, sticky='ns')
all_rases.configure(yscrollcommand=yscroll.set)

db_helper = DBhelper()
my_rases = db_helper.get("rase")
print(my_rases)
for rase in my_rases:
    item_rase = []
    for it in rase:
        item_rase.append(copy.deepcopy(str(it)))
    all_rases.insert(tk.END, str(item_rase))

lines = len(my_rases)
all_rases.yview_scroll(lines, 'units')

root.geometry("650x350")
root.resizable(width=False, height=False)
root.mainloop()
Пример #7
0
def main(*args):
    global fly_time
    fly_time = {}
    delay_state = False
    breaker = False
    db_helper = DBhelper()
    trace_list = db_helper.get("trace_short")
    place_list = db_helper.get("place")
    fill_matrix(place_list)
    routes(place_list, trace_list, "St.Petersberg, Pulkovo", "")
    routes(place_list, trace_list, "Sheremetievo.Sunab", "")
    print("matrix")
    i = 0
    for row in matrix:
        i += 1
        print(row, i)
    m_fly_time = copy.deepcopy(fly_time)
    for key in m_fly_time:
        m_fly_time[key] *= 60

    print("FLY TIME")
    print(m_fly_time)
    input()

    rase_reader = RaseReader(*args)
    rase_routes = rase_reader.get_routes_by_rase(db_helper)

    while True:
        if not delay_state:
            print("ROUTES FROM ", rase_routes[0][1], " TO ", rase_routes[0][2])
            for route in rase_routes:
                print(route)
        else:
            fiasco_handle(rase_reader, db_helper, m_fly_time)
            return
        time_worker = datetime.datetime.strptime(rase_reader.time_away,
                                                 "%Y-%m-%d %H:%M:%S")
        input()
        time_delta = datetime.timedelta(hours=1, minutes=30)
        top_time_border = time_worker + time_delta
        bottom_time_border = time_worker - time_delta
        print(time_worker)
        print(time_delta)
        print(top_time_border)
        print(bottom_time_border)
        input()
        rases_in_time_diapozon = db_helper.get_rase_from_diapozon(
            str(top_time_border), str(bottom_time_border))
        print("RASES FROM DIAPOZON ", top_time_border, bottom_time_border)
        for rase in rases_in_time_diapozon:
            print(rase)

        map_exec = MapExecuter()
        print(map_exec)
        for our_rase in rase_routes:
            our_map_list = map_exec.execute_by_route(route=str(our_rase[0]))
            normalize_map_list(our_map_list)
            print("TSHOW OUR MAP LIST")
            print("ROUTE ", str(our_rase[0]))
            for omp in our_map_list:
                omp.trace_reg_dict['cur_density'] = 0
                print(omp)
            input()
            for other_rase in rases_in_time_diapozon:
                other_map_list = map_exec.execute_by_route(
                    route=str(other_rase[6]))
                normalize_map_list(other_map_list)
                print("OTHER RASE ", str(other_rase[6]))
                for other_mp in other_map_list:
                    print(other_mp)
                input()
                print("CHECK TIME")
                #if not check_rase_time(rase_reader.time_away, rases_in_time_diapozon, omp.route):
                if not check_rase_time_with_group(rase_reader.time_away, \
                                                  other_rase, \
                                                  args[1], \
                                                  omp.route, \
                                                  other_map_list):
                    print("CAN NOT INSERT IN THIS TIME. IT'S BUSY")
                    delay_state = True
                    breaker = True
                    print("GO TO ANATHOR ROUTE")
                    input()
                    break
                else:
                    breaker = False
                    fill_up_trace_short_density(our_map_list, other_map_list)
            if breaker:
                continue

            if check_route_density(our_map_list):
                delay_state = False
                print("OK WE CAN PUT THIS RASE IN THIS TIME")
                print("TIME_AWAY: ", rase_reader.time_away)
                t_away = datetime.datetime.strptime(rase_reader.time_away,
                                                    "%Y-%m-%d %H:%M:%S")
                t_fly = datetime.timedelta(
                    minutes=int(m_fly_time[our_rase[0]]) + 1)
                t_come = t_away + t_fly
                print("TIME COME: ", t_come)
                print("TIME FLY: ", t_fly)
                print("ROUTE: ", our_rase[0])
                input()
                rase = (str(t_away), str(t_come),
                        str(t_fly), rase_reader.company, rase_reader.plane,
                        str(our_rase[0]))
                print(rase)
                print("GONNA INSERT")
                input()
                db_helper.insert_rase_tuple(rase)
                input()
                return
            else:
                print("IMPOSSIBLE TO PUT THIS RASE IN THIS TIME")
                print("DELAY 30 MIN")
                delay_state = True
                input()
        print("#########################")
        print("#########FIASCO##########")
        print("#########################")
        input()
Пример #8
0
def main(*args):
    global fly_time
    fly_time = {}
    delay_state = False
    breaker = False
    db_helper = DBhelper()
    trace_list = db_helper.get("trace_short")
    place_list = db_helper.get("place")
    fill_matrix(place_list)
    routes(place_list, trace_list, "St.Petersberg, Pulkovo", "")
    routes(place_list, trace_list, "Sheremetievo.Sunab", "")
    i = 0
    for row in matrix:
        i += 1
    m_fly_time = copy.deepcopy(fly_time)
    for key in m_fly_time:
        m_fly_time[key] *= 60

    rase_reader = RaseReader(*args)
    rase_routes = rase_reader.get_routes_by_rase(db_helper)

    while True:
        if not delay_state:
            pass
        else:
            fiasco_handle(rase_reader, db_helper, m_fly_time)
            return
        time_worker = datetime.datetime.strptime(rase_reader.time_away,
                                                 "%Y-%m-%d %H:%M:%S")
        time_delta = datetime.timedelta(hours=1, minutes=30)
        top_time_border = time_worker + time_delta
        bottom_time_border = time_worker - time_delta
        rases_in_time_diapozon = db_helper.get_rase_from_diapozon(
            str(top_time_border), str(bottom_time_border))
        map_exec = MapExecuter()
        for our_rase in rase_routes:
            our_map_list = map_exec.execute_by_route(route=str(our_rase[0]))
            normalize_map_list(our_map_list)
            for omp in our_map_list:
                omp.trace_reg_dict['cur_density'] = 0
            for other_rase in rases_in_time_diapozon:
                other_map_list = map_exec.execute_by_route(
                    route=str(other_rase[6]))
                normalize_map_list(other_map_list)
                if not check_rase_time_with_group(rase_reader.time_away, \
                                                  other_rase, \
                                                  args[1], \
                                                  omp.route, \
                                                  other_map_list):
                    delay_state = True
                    breaker = True
                    break
                else:
                    breaker = False
                    fill_up_trace_short_density(our_map_list, other_map_list)
            if breaker:
                continue

            if check_route_density(our_map_list):
                delay_state = False
                t_away = datetime.datetime.strptime(rase_reader.time_away,
                                                    "%Y-%m-%d %H:%M:%S")
                t_fly = datetime.timedelta(
                    minutes=int(m_fly_time[our_rase[0]]) + 1)
                t_come = t_away + t_fly
                rase = (str(t_away), str(t_come),
                        str(t_fly), rase_reader.company, rase_reader.plane,
                        str(our_rase[0]))
                db_helper.insert_rase_tuple(rase)
                return
            else:
                delay_state = True
Пример #9
0
class Tinder(GUIhelper):
    def __init__(self):
        self.db = DBhelper()
        super(Tinder,
              self).__init__(self.loginListner,
                             self.loadRegWindow)  # calling child by parent

    # creating a function
    def loginListner(self):
        data = self.db.search('email', self._emailInput.get(), 'password',
                              self._passwordInput.get(), 'users')
        print(data)

        if len(data) == 1:
            self.sessionId = data[0][0]
            self.loadProfile()
        else:
            self.label5.configure(text="Login Failed")

    def loadRegWindow(self):
        self.regWindow(self.registrationHandler)

    def registrationHandler(self):
        if self._nameInput.get() == "" or self._emailInput.get(
        ) == "" or self._passwordInput.get() == "" or self._genderInput.get(
        ) == "" or self._ageInput.get() == "" or self._cityInput.get() == "":
            self.label2.configure(text="PLEASE FILL ALL DETAILS",
                                  bg="yellow",
                                  fg="red")
        else:
            regDict = {}
            regDict['user_id'] = "NULL"
            regDict['NAME'] = self._nameInput.get()
            regDict['EMAIL'] = self._emailInput.get()
            regDict['PASSWORD'] = self._passwordInput.get()
            regDict['GENDER'] = self._genderInput.get()
            regDict['AGE'] = self._ageInput.get()
            regDict['CITY'] = self._cityInput.get()

            print(regDict)
            response = self.db.insert(regDict, 'users')
            print('users')

            if response == 1:
                obj = GUIhelper(self.loginListner, self.loadRegWindow)
                self.label2.configure(text="Registration Successfull ",
                                      bg="white",
                                      fg="green")
            else:
                self.label2.configure(text="Registration Failed ",
                                      bg="red",
                                      fg="Yellow")

    def loadProfile(self):
        data = self.db.searchOne('user_id', self.sessionId, 'users', "LIKE")
        self.mainWindow(self, data, mode=1)

    def viewProfile(self, num):
        title = "Error"
        text = "[+] Can't Load Data"
        data = self.db.searchOne('user_id', self.sessionId, 'users',
                                 "NOT LIKE")
        new_data = []
        if num < 0 or num > len(data) - 1:
            self.message(title, text)
        else:
            new_data.append(data[num])
            self.mainWindow(self, new_data, mode=2, num=num)

    def propose(self, juliet_id):
        data = self.db.search('romeo_id', str(self.sessionId), 'juliet_id',
                              str(juliet_id), 'proposals')
        if len(data) == 0:
            proDict = {}
            proDict['romeo_id'] = str(self.sessionId)
            proDict['juliet_id'] = str(juliet_id)
            response = self.db.insert(proDict, 'proposals')
            if response == 1:
                self.message("Congrats", "Proposal Sent Successfully")
            else:
                self.message("Tough Luck", "Proposal Failed Try Again")
        else:
            self.message("Error", "Despo")