def get_dates(self, dt: datetime.date): # Returns a set of days covered by the object. if self.kind == "easter": return set([easter_date(dt.year)]) elif self.kind == "month": first_monthday = datetime.date(self.year or dt.year, self.month, 1) last_monthday = datetime.date( self.year or dt.year, self.month, self.safe_monthrange(self.year or dt.year, self.month)[1]) dates = [] for i in range((last_monthday - first_monthday).days + 1): dates.append(first_monthday + datetime.timedelta(i)) return set(dates) elif self.kind == "monthday-day": first_day = datetime.date(self.year or dt.year, self.month, self.monthday) last_day = datetime.date(self.year or dt.year, self.month, self.monthday_to) dates = [] for i in range((last_day - first_day).days + 1): dates.append(first_day + datetime.timedelta(i)) return set(dates) else: # self.kind == "monthday" return set([ datetime.date(self.year or dt.year, self.month, self.monthday) ])
def olx_links(city='wroclaw', rooms='two'): links, dates, titles = [], [], [] rooms = 'two' city = 'wroclaw' for page in range(0, 3): olx = f"https://www.olx.pl/nieruchomosci/mieszkania/wynajem/{city}/?search%5Bfilter_enum_rooms%5D%5B0%5D={rooms}&page={page}" res = requests.get(olx, headers=headers) soup = BS(res.text, 'html.parser') apartments_cont = soup.find_all('div', class_='space rel') for i in apartments_cont: try: link = i.find('a')['href'] links.append(link) except: pass try: title = i.find('a').text.strip() titles.append(title) except: pass try: date = i.find_all('span')[1].text.strip().split()[0] dates.append(date) except: pass return links
def _get_dates(self): start = self.date_start end = self.date_end if end < start: return [] dates = [start] while start != end: start += relativedelta(days=1) dates.append(start) return dates
def _get_dates(self): start = self.week_from.date_start end = self.week_to.date_start if end < start: return [] dates = [start] while start != end: start += relativedelta(days=7) dates.append(start) return dates
def _get_dates(self): start = self.date_start end = self.date_end if end < start: return [] # time_period = end - start # number_of_days = time_period/timedelta(days=1) dates = [start] while start != end: start += relativedelta(days=1) dates.append(start) return dates
def _prepare_calendar(self, event, event_track_ids): local_tz = pytz.timezone(event.date_tz or 'UTC') lang_code = request.env.context.get('lang') locations = {} # { location: [track, start_date, end_date, rowspan]} dates = [] # [ (date, {}) ] for track in event_track_ids: locations.setdefault(track.location_id or False, []) forcetr = True for track in event_track_ids: start_date = fields.Datetime.from_string( track.date).replace(tzinfo=pytz.utc).astimezone(local_tz) end_date = start_date + datetime.timedelta( hours=(track.duration or 0.5)) location = track.location_id or False locations.setdefault(location, []) # New TR, align all events if forcetr or (start_date > dates[-1][0]) or not location: formatted_time = self._get_locale_time(start_date, lang_code) dates.append((start_date, {}, bool(location), formatted_time)) for loc in list(locations): if locations[loc] and (locations[loc][-1][2] > start_date): locations[loc][-1][3] += 1 elif not locations[ loc] or locations[loc][-1][2] <= start_date: locations[loc].append([ False, locations[loc] and locations[loc][-1][2] or dates[0][0], start_date, 1 ]) dates[-1][1][loc] = locations[loc][-1] forcetr = not bool(location) # Add event if locations[location] and locations[location][-1][1] > start_date: locations[location][-1][3] -= 1 locations[location].append([track, start_date, end_date, 1]) dates[-1][1][location] = locations[location][-1] locations = collections.OrderedDict( sorted(locations.items(), key=lambda t: t[0].id if t[0] else 0)) return {'locations': locations, 'dates': dates}