def dateComp(date_one, date_two): date_one_id = date_one.split('.') date_two_id = date_two.split('.') if int(date_one_id[2]) > int(date_two_id[2]): return True elif int(date_one_id[2]) == int(date_two_id[2]): if int(date_one_id[1]) > int(date_two_id[1]): return True elif int(date_one_id[1]) == int(date_two_id[1]): if int(date_one_id[0]) > int(date_two_id[0]): return True elif int(date_one_id[0]) == int(date_two_id[0]): return True return False def addItem(list_bas, item, item_loc): new_list = list_bas[0:item_loc] new_list.append(item) for i in range(len(list_bas) - item_loc): new_list.append(list_bas[item_loc + i]) return new_list def expDate(current_date, prod_dates): thrown_away = [] thrown_locs = [] thrown_number = 0 for i in range(len(prod_dates)): if dateComp(current_date, prod_dates[i]): thrown_away.append(prod_dates[i]) thrown_locs.append(i) for i in range(len(thrown_locs)): prod_dates.pop(thrown_locs[i] - thrown_number) thrown_number += 1 def dateSort(current_date, prod_dates): loc = None sorted_dates = [] prev_placed = True for i in range(len(prod_dates)): if dateComp(prod_dates[i], current_date): sorted_dates.append(prod_dates[i]) loc = i break for i in range(len(prod_dates)): if (loc == i): continue prev_placed = True for j in range(len(sorted_dates)): if prev_placed: if j == 0: if dateComp(sorted_dates[j], prod_dates[i]): sorted_dates = addItem(sorted_dates, prod_dates[i], 0) prev_placed = False continue if j == len(sorted_dates) - 1: if dateComp(prod_dates[i], sorted_dates[j]): sorted_dates = addItem(sorted_dates, prod_dates[i], len(sorted_dates)) else: sorted_dates = addItem(sorted_dates, prod_dates[i], len(sorted_dates) - 1) continue if dateComp(prod_dates[i], sorted_dates[j]): if dateComp(sorted_dates[j + 1], prod_dates[i]): sorted_dates = addItem(sorted_dates, prod_dates[i], j + 1) prev_placed = False continue if dateComp(sorted_dates[j], prod_dates[i]): if dateComp(prod_dates[i], sorted_dates[j - 1]): sorted_dates = addItem(sorted_dates, prod_dates[i], i) prev_placed = False continue return sorted_dates def dateToint(sorted_dates, unsorted_dates, date_current): date_num = 0 prev_date = None sorted_dateInt = [] unsorted_dateInt = [] for i in range(len(sorted_dates)): if (dateComp(date_current, sorted_dates[i])): sorted_dateInt.append(-1) continue if (prev_date == sorted_dates[i]): sorted_dateInt.append(date_num) continue date_num += 1 sorted_dateInt.append(date_num) prev_date = sorted_dates[i] for i in unsorted_dates: unsorted_dateInt.append(sorted_dateInt[sorted_dates.index(i)]) return unsorted_dateInt def listDif(list1, list2): listOrig = list1 for i in list2: if i in listOrig: listOrig.pop(listOrig.index(i)) return listOrig def calcDate(exp_dates, date_cur): exp_dates_process = exp_dates[:] sorted_date = dateSort(date_cur, exp_dates_process) date_int = dateToint(sorted_date, exp_dates, date_cur) return date_int