コード例 #1
0
    def __init__(self,
                 stdabbr,
                 stdoffset=None,
                 dstabbr=None,
                 dstoffset=None,
                 start=None,
                 end=None):

        global relativedelta
        from dateutil import relativedelta

        self._std_abbr = stdabbr
        self._dst_abbr = dstabbr

        try:
            stdoffset = _total_seconds(stdoffset)
        except (TypeError, AttributeError):
            pass

        try:
            dstoffset = _total_seconds(dstoffset)
        except (TypeError, AttributeError):
            pass

        if stdoffset is not None:
            self._std_offset = datetime.timedelta(seconds=stdoffset)
        else:
            self._std_offset = ZERO

        if dstoffset is not None:
            self._dst_offset = datetime.timedelta(seconds=dstoffset)
        elif dstabbr and stdoffset is not None:
            self._dst_offset = self._std_offset + datetime.timedelta(hours=+1)
        else:
            self._dst_offset = ZERO

        if dstabbr and start is None:
            self._start_delta = relativedelta.relativedelta(
                hours=+2, month=4, day=1, weekday=relativedelta.SU(+1))
        else:
            self._start_delta = start

        if dstabbr and end is None:
            self._end_delta = relativedelta.relativedelta(
                hours=+1, month=10, day=31, weekday=relativedelta.SU(-1))
        else:
            self._end_delta = end

        self._dst_base_offset_ = self._dst_offset - self._std_offset
        self.hasdst = bool(self._start_delta)
コード例 #2
0
def check_date(timeslot):

    try:
        scheduled_time = parse(timeslot)
    except ParserError:
        return "I couldn't parse the date, please use YYYY-MM-DD HH:00 UTC."

    logging.debug(f"{scheduled_time=}")

    if scheduled_time.minute or scheduled_time.second:
        return "We only schedule talks at the beginning of the hour."

    with open(Path("../speakers_corner_talks.yml")) as f:
        other_times = {
            talk["time"].replace(tzinfo=pytz.UTC)
            for talk in yaml.load(f)
        }

    nearby = {scheduled_time + timedelta(hours=n) for n in (-1, 0, 1)}
    if nearby & other_times:
        return ("I found another talk within one hour time"
                " difference, please use another time slot.")

    # Mailing list updates are on Sunday, we require at least 2 updates between now
    # and the talk

    now = datetime.now(tz=pytz.UTC)
    if (now + relativedelta.relativedelta(weekday=relativedelta.SU(2)) >
            scheduled_time):
        return "The earliest you may schedule is the week after next."
コード例 #3
0
def get_sunday():
    """
    Gets the last calendar Sunday.
    :return sun: datetime object for Sunday.
    """
    today = datetime.datetime.now()
    start = today - datetime.timedelta((today.weekday() + 1) % 7)
    sun = start + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
    return sun
コード例 #4
0
 def test_weekly_custom_value(self):
     today = dt.today() - timedelta(days=123)
     res = dh.weekly(today)
     # whoa - why rd.SU? because to prevent overlap between periods
     # (ie: two periods sharing the same saturday) we only go
     # backwards 6 days in time.
     self.assertEqual(res[0], today + rd.relativedelta(weekday=rd.SU(-1)))
     self.assertEqual(res[1], today + rd.relativedelta(weekday=rd.SA))
     self.assertEqual(res[2], today)
コード例 #5
0
 def test_prev_weekly_digest_date(self):
     today = date(year=2012, month=02, day=28)
     digestobj, created = dh.get_create_digest_feed(self.get_user(),
                                                    self.feedobj, 'weekly',
                                                    'sun')
     digestobj.date_last_digest = today
     digestobj.save()
     prev_dt = dh.date_prev_digest(digestobj, today)
     self.assertEqual(prev_dt, today - rd.relativedelta(weekday=rd.SU(-1)))
コード例 #6
0
ファイル: tools.py プロジェクト: tarekpython/qtpylib
def week_started_date(as_datetime=False):

    today = datetime.datetime.utcnow()
    start = today - datetime.timedelta((today.weekday() + 1) % 7)
    dt = start + relativedelta.relativedelta(weekday=relativedelta.SU(-1))

    if as_datetime:
        return dt

    return dt.strftime("%Y-%m-%d")
コード例 #7
0
ファイル: tz.py プロジェクト: yiyuanxuanji/fangkexitong
 def _delta(self, x, isend=0):
     from dateutil import relativedelta
     kwargs = {}
     if x.month is not None:
         kwargs["month"] = x.month
         if x.weekday is not None:
             kwargs["weekday"] = relativedelta.weekday(x.weekday, x.week)
             if x.week > 0:
                 kwargs["day"] = 1
             else:
                 kwargs["day"] = 31
         elif x.day:
             kwargs["day"] = x.day
     elif x.yday is not None:
         kwargs["yearday"] = x.yday
     elif x.jyday is not None:
         kwargs["nlyearday"] = x.jyday
     if not kwargs:
         # Default is to start on first sunday of april, and end
         # on last sunday of october.
         if not isend:
             kwargs["month"] = 4
             kwargs["day"] = 1
             kwargs["weekday"] = relativedelta.SU(+1)
         else:
             kwargs["month"] = 10
             kwargs["day"] = 31
             kwargs["weekday"] = relativedelta.SU(-1)
     if x.time is not None:
         kwargs["seconds"] = x.time
     else:
         # Default is 2AM.
         kwargs["seconds"] = 7200
     if isend:
         # Convert to standard time, to follow the documented way
         # of working with the extra hour. See the documentation
         # of the tzinfo class.
         delta = self._dst_offset - self._std_offset
         kwargs["seconds"] -= delta.seconds + delta.days * 86400
     return relativedelta.relativedelta(**kwargs)
コード例 #8
0
ファイル: obtain.py プロジェクト: 49527/miniprogram_backend
def get_datetime(t):
    # get start and end of this week
    week_s = t + relativedelta.relativedelta(
        hour=0, minute=0, second=0, weekday=relativedelta.MO(-1))
    week_e = t + relativedelta.relativedelta(
        hour=23, minute=59, second=59, weekday=relativedelta.SU(0))
    month_s = t + relativedelta.relativedelta(
        hour=0, minute=0, second=0, day=1)
    month_e = t + relativedelta.relativedelta(
        hour=23, minute=59, second=59, day=1, months=1, days=-1)
    day_s = t + relativedelta.relativedelta(hour=0, minute=0, second=0)
    day_e = t + relativedelta.relativedelta(hour=23, minute=59, second=59)
    return week_s, week_e, month_s, month_e, day_s, day_e
コード例 #9
0
def get_time_stamp(time_frame):
    today = datetime.now()
    if time_frame.name == 'Week':
        today = datetime.now()
        start = today - timedelta((today.weekday() + 1) % 7)
        last_sunday = start + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
        return last_sunday
    elif time_frame.name == 'Month':
        return datetime(today.year, today.month, 1, tzinfo=tz.tzutc())
    elif time_frame.name == 'Year':
        return datetime(today.year, 1, 1, tzinfo=tz.tzutc())
    else:
        # return timestamp for beginning of current day
        return datetime(today.year, today.month, today.day, tzinfo=tz.tzutc())
コード例 #10
0
    def _get_playlists(self, playlist_xml):
        xmlparser = etree.XMLParser(
            ns_clean=True, recover=True, encoding='utf-8')
        tree = etree.fromstring(playlist_xml, parser=xmlparser)

        data = []
        playlists = tree.xpath('//RVPlaylistNode[@type="3"]')
        playlists = [
            x for x in playlists
            if x.attrib['displayName'].lower() not in EXCLUDE_LOWER
        ]

        for pl in playlists:
            songs = pl.xpath('array/RVDocumentCue')
            song_names = [
                x.attrib['displayName'] for x in songs
                if x.attrib['displayName'].lower() not in EXCLUDE_LOWER
            ]

            if len(song_names) < 2:
                # unlikely to be a setlist
                continue

            date = None
            for attr in ('displayName', 'modifiedDate'):
                value = pl.attrib[attr]
                # If this is an actual date, it is probably not dayfirst
                dayfirst = 'Date' not in attr
                try:
                    date = date_parser.parse(value, dayfirst=dayfirst)
                except ValueError:
                    pass
                else:
                    break

            sunday = date + relativedelta.relativedelta(
                weekday=relativedelta.SU(-1)
            )
            data.append({
                'date': sunday.date(),
                'modified': pl.attrib['modifiedDate'],
                'uid': pl.attrib['UUID'],
                'name': pl.attrib['displayName'].strip(),
                'songs': song_names,
            })
        data.sort(key=lambda x: x['date'])
        return data
def meetup_day(year, month, targetday, targetweek):

    weekdays = dict(zip(list(calendar.day_name), range(7)))
    steps = dict(zip(['1st', '2nd', '3rd', '4th', 'last'], range(7, 36, 7)))
    steps['teenth'] = 19
    targetday = weekdays[targetday]
    getDay = {
        0: relativedelta.MO(-1),
        1: relativedelta.TU(-1),
        2: relativedelta.WE(-1),
        3: relativedelta.TH(-1),
        4: relativedelta.FR(-1),
        5: relativedelta.SA(-1),
        6: relativedelta.SU(-1),
    }

    d = datetime.date(year, month, 1) + relativedelta.relativedelta(
        day=steps[targetweek], weekday=getDay[targetday])
    return d
コード例 #12
0
ファイル: meetup.py プロジェクト: sinanata/python
def all_weekdays(year, month, week, day_of_week):
    dt = date(year, month, 1)

    if week == 'last':
        clean_week = int(-1)
        if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10 or month == 12:
            day_offset = 31
        elif month == 2:
            day_offset = 28
        else:
            day_offset = 30
    else:
        clean_week = +int(week.strip("stndrh"))
        day_offset = 0

    if day_of_week == 'Monday':
        the_date = dt + rdelta.relativedelta(days=day_offset,
                                             weekday=rdelta.MO(clean_week))
        return the_date
    elif day_of_week == 'Tuesday':
        the_date = dt + rdelta.relativedelta(days=day_offset,
                                             weekday=rdelta.TU(clean_week))
        return the_date
    elif day_of_week == 'Wednesday':
        the_date = dt + rdelta.relativedelta(days=day_offset,
                                             weekday=rdelta.WE(clean_week))
        return the_date
    elif day_of_week == 'Thursday':
        the_date = dt + rdelta.relativedelta(days=day_offset,
                                             weekday=rdelta.TH(clean_week))
        return the_date
    elif day_of_week == 'Friday':
        the_date = dt + rdelta.relativedelta(days=day_offset,
                                             weekday=rdelta.FR(clean_week))
        return the_date
    elif day_of_week == 'Saturday':
        the_date = dt + rdelta.relativedelta(days=day_offset,
                                             weekday=rdelta.SA(clean_week))
        return the_date
    elif day_of_week == 'Sunday':
        the_date = dt + rdelta.relativedelta(days=day_offset,
                                             weekday=rdelta.SU(clean_week))
        return the_date
コード例 #13
0
    def _last_interval(self):

        dr = self.date_range

        if 'days' in dr:
            __, num, interval = dr.split()
            end = end_of_day(self.pivot)
            start = start_of_day(end + timezone.timedelta(days=-int(num)))
        elif 'week' in dr:
            start = start_of_day(
                self.pivot) + rdelta.relativedelta(weekday=rdelta.SU(-2))
            end = end_of_day(self.pivot) + rdelta.relativedelta(
                weeks=-1, weekday=rdelta.SA(1))
        elif 'month' in dr:
            start = start_of_day(self.pivot) + rdelta.relativedelta(months=-1,
                                                                    day=1)
            end = end_of_day(self.pivot) + rdelta.relativedelta(months=-1,
                                                                day=31)
        elif 'year' in dr:
            start = start_of_day(self.pivot) + rdelta.relativedelta(
                years=-1, month=1, day=1)
            end = end_of_day(self.pivot) + rdelta.relativedelta(
                years=-1, month=12, day=31)
        return start, end
コード例 #14
0
    def handle(self, *args, **options):
        logger = logging.getLogger("management")
        url = "https://rest.tsheets.com/api/v1/timesheets"

        querystring = {
            "start_date": options["start_date"],
            "end_date": options["end_date"],
            "on_the_clock": "no",
            "per_page": 50,
            "page": 1,
        }

        def get_token():
            return os.environ["TSHEETS_TOKEN"]

        headers = {"Authorization": f"Bearer {get_token()}"}

        more = True
        while more:
            response = requests.request("GET",
                                        url,
                                        headers=headers,
                                        params=querystring)
            if response.status_code != 200:
                if response.status_code == 429:  # Too Many Requests
                    sleep(5 * 60)  # Sleep for 5 minutes
                else:
                    response.raise_for_status()
            response = response.json()
            for user in response.get("supplemental_data", {}).get("users",
                                                                  {}).values():
                tsheets_user = create_model_from_dict(TSheetsUser, user)
                jobdiva_user = Candidate.objects.filter(
                    EMAIL=user["email"].lower()).first()
                if not jobdiva_user:
                    logger.error(
                        f'Jobdiva Candidate {user["email"]} not found while loading tsheets models'
                    )
                    sentry_sdk.capture_message(
                        f'Jobdiva Candidate {user["email"]} not found while loading tsheets models'
                    )
                    continue
                else:
                    jobdiva_user.tsheets_user = tsheets_user
                    jobdiva_user.save()

            for jobcode in response["supplemental_data"].get("jobcodes",
                                                             {}).values():
                create_model_from_dict(JobCode, jobcode)

            timesheets = response["results"]["timesheets"].values()
            logger.info(f"Found {len(timesheets)} timesheets")
            for timesheet in timesheets:
                _type = timesheet.pop("type")
                if _type == "regular":
                    model_obj = create_model_from_dict(RegularTimesheet,
                                                       timesheet)
                elif _type == "manual":
                    model_obj = create_model_from_dict(ManualTimesheet,
                                                       timesheet)
                next_sunday = relativedelta.relativedelta(
                    weekday=relativedelta.SU(1))
                timesheet_entry, _ = TimesheetEntry.objects.get_or_create(
                    weekendingdate=(
                        datetime.strptime(model_obj.date, "%Y-%m-%d") +
                        next_sunday).date(),
                    user=model_obj.user,
                )
                model_obj.timesheet_entry = timesheet_entry
                model_obj.save()
            more = bool(response["more"])
            querystring.update({"page": querystring["page"] + 1})
コード例 #15
0
ファイル: __init__.py プロジェクト: Andrew-Wichmann/TSheets
def get_n_sundays_ago(n):
    today = datetime.now()
    n_sundays_ago = relativedelta.relativedelta(weekday=relativedelta.SU(-n))
    return (today + n_sundays_ago).strftime("%Y-%m-%d")
コード例 #16
0
    def OnActionMenu(self, event=None):
        id = event.GetId()
        dateJour = datetime.date.today()

        if id == ID_AUJOURDHUI:
            self.SetDate(dateJour)

        if id == ID_HIER:
            self.SetDate(dateJour - datetime.timedelta(days=1))

        if id == ID_DEMAIN:
            self.SetDate(dateJour + datetime.timedelta(days=1))

        # Semaine
        if id == ID_SEMAINE_ACTUELLE + 1:
            date = dateJour + relativedelta.relativedelta(
                weekday=relativedelta.MO(-1))
            self.SetDate(date)
        if id == ID_SEMAINE_ACTUELLE + 2:
            date = dateJour + relativedelta.relativedelta(
                weekday=relativedelta.MO(-1))
            self.SetDate(date + datetime.timedelta(days=6))

        if id == ID_SEMAINE_PRECEDENTE + 1:
            date = dateJour + relativedelta.relativedelta(
                weekday=relativedelta.SU(-1))
            self.SetDate(date - datetime.timedelta(days=6))
        if id == ID_SEMAINE_PRECEDENTE + 2:
            date = dateJour + relativedelta.relativedelta(
                weekday=relativedelta.SU(-1))
            self.SetDate(date)

        if id == ID_SEMAINE_SUIVANTE + 1:
            date = dateJour + relativedelta.relativedelta(
                weekday=relativedelta.MO(+1))
            self.SetDate(date)
        if id == ID_SEMAINE_SUIVANTE + 2:
            date = dateJour + relativedelta.relativedelta(
                weekday=relativedelta.MO(+1))
            self.SetDate(date + datetime.timedelta(days=6))

        # Mois
        if id == ID_MOIS_ACTUEL + 1:
            self.SetDate(datetime.date(dateJour.year, dateJour.month, 1))
        if id == ID_MOIS_ACTUEL + 2:
            mois = calendar.monthrange(dateJour.year, dateJour.month)
            self.SetDate(datetime.date(dateJour.year, dateJour.month, mois[1]))

        if id == ID_MOIS_PRECEDENT + 1:
            date = dateJour + relativedelta.relativedelta(months=-1)
            self.SetDate(datetime.date(date.year, date.month, 1))
        if id == ID_MOIS_PRECEDENT + 2:
            date = dateJour + relativedelta.relativedelta(months=-1)
            mois = calendar.monthrange(date.year, date.month)
            self.SetDate(datetime.date(date.year, date.month, mois[1]))

        if id == ID_MOIS_SUIVANT + 1:
            date = dateJour + relativedelta.relativedelta(months=+1)
            self.SetDate(datetime.date(date.year, date.month, 1))
        if id == ID_MOIS_SUIVANT + 2:
            date = dateJour + relativedelta.relativedelta(months=+1)
            mois = calendar.monthrange(date.year, date.month)
            self.SetDate(datetime.date(date.year, date.month, mois[1]))

        # Année
        if id == ID_ANNEE_ACTUELLE + 1:
            self.SetDate(datetime.date(dateJour.year, 1, 1))
        if id == ID_ANNEE_ACTUELLE + 2:
            self.SetDate(datetime.date(dateJour.year, 12, 31))

        if id == ID_ANNEE_PRECEDENTE + 1:
            date = dateJour + relativedelta.relativedelta(years=-1)
            self.SetDate(datetime.date(date.year, 1, 1))
        if id == ID_ANNEE_PRECEDENTE + 2:
            date = dateJour + relativedelta.relativedelta(years=-1)
            self.SetDate(datetime.date(date.year, 12, 31))

        if id == ID_ANNEE_SUIVANTE + 1:
            date = dateJour + relativedelta.relativedelta(years=+1)
            self.SetDate(datetime.date(date.year, 1, 1))
        if id == ID_ANNEE_SUIVANTE + 2:
            date = dateJour + relativedelta.relativedelta(years=+1)
            self.SetDate(datetime.date(date.year, 12, 31))

        if id == ID_AIDE:
            from Utils import UTILS_Aide
            UTILS_Aide.Aide("Slectionnerunedate")
コード例 #17
0
ファイル: bs.py プロジェクト: pau1a/redongreenongo
def following_sunday(dt):
    rd = reldate.relativedelta(weekday=reldate.SU(+1), hours=+8)
    rd2 = reldate.relativedelta(hour=8, minute=0, second=0, microsecond=0)
    return dt + rd + rd2
コード例 #18
0
def get_mothers_day_date(year):
    """Given the passed in year int, return the date Mother's Day
       is celebrated assuming it's the 2nd Sunday of May."""
    return date(year, 5, 1) + rd.relativedelta(weekday=rd.SU(+2))
コード例 #19
0
ファイル: time_zones.py プロジェクト: makkasi/myastro
def get_time_zone_1970(city_id, birth_date):
    pd.set_option('use_inf_as_null', True)
    time_tabs = pd.read_csv(path + 'time_tabs.csv',
                            header=None,
                            index_col=0,
                            names=('table_number', 'date_start', 'zone_type'))
    city_np = np.load('astro/data/atlas/city_table_np.npy')
    latitude = city_np[city_id][0]  # ['new_lat']
    longitude = city_np[city_id][1]  # ['new_long']
    zone_type_field6 = int(city_np[city_id][2])  # ['time_zone']
    time_type_field7 = int(city_np[city_id][3])  # ['zone_type']
    py_tz_name = int(city_np[city_id][4])  # ['tz_name']
    stored_time_zone = city_np[city_id][5]  # ['n_time_zone']
    stored_dst = city_np[city_id][6]  # ['dst']
    time_deconstruct = birth_date.timetuple()
    date_year = time_deconstruct[0]
    date_month = time_deconstruct[1]
    date_day = time_deconstruct[2]
    date_hour = time_deconstruct[3]
    date_min = time_deconstruct[4]
    dst = 0.
    final_zone = 0.0
    date_change = date_year * 624000 + date_month * 48000 + date_day * 1500 + date_hour * 60 + date_min
    # date_change = 1239496620
    # print date_change, zone_type_field6, time_type_field7
    message = 0
    if zone_type_field6 < 12000:
        final_zone = zone_type_field6
        # print "Starting Time Zone: ", time_type_field7
    else:
        while zone_type_field6 > 12000:
            zone_type_field6 = zone_type_field6 - 12000
            # print 'Initial zone: ', zone_type_field6
            z = time_tabs.loc[zone_type_field6:zone_type_field6].copy()
            len_table = len(z.index)
            i = 1
            starting_date = z['date_start'].iloc[0]
            # print z['date_start'].iloc[i]
            while i < len_table:
                if date_change < starting_date:
                    final_zone = longitude * 60
                    dst = 0.
                    message = 30
                    break
                else:
                    if starting_date <= date_change < z['date_start'].iloc[i]:
                        final_zone = z['zone_type'].iloc[i - 1]
                        zone_type_field6 = z['zone_type'].iloc[i - 1]
                        break
                i += 1
    # print "Find out DST",time_type_field7,dst
    if time_type_field7 > 30001:
        if time_type_field7 == 30002:
            if zone_type_field6 == 4500:
                dst = 0.
            else:
                dst = 1.
        if time_type_field7 == 30003:
            if zone_type_field6 == 4500:
                dst = 0.
            else:
                time_type_field7 = 30001

    if time_type_field7 < 50:
        if time_type_field7 == 2:
            dst = 1.
        if time_type_field7 == 3:
            dst = 2.
        if time_type_field7 == 4:
            dst = .5
        if time_type_field7 == 6:
            dst = 20. / 60
        if time_type_field7 == 7:
            dst = 40. / 60
    if 50 < time_type_field7 < 30000:
        while 50 < time_type_field7 < 30000:
            time_type_field7 = time_type_field7 - 50
            # print time_type_field7, 'First Pass'
            z = time_tabs.loc[time_type_field7:time_type_field7].copy()
            # print z, date_change
            if z.iloc[0]['zone_type'] == 30004 and date_change < 1222753500:
                message = 10  # illinois
            if z.iloc[0]['zone_type'] == 30005 and date_change < 1222753500:
                message = 20  # Pennyslvania
            len_table = len(z.index)
            i = 1
            starting_date = z['date_start'].iloc[0]
            # print starting_date
            # print z['date_start'].iloc[i]
            while i < len_table:
                if date_change < starting_date:
                    dst = 0.
                    final_zone = longitude * 60
                    message = 30
                    break
                else:
                    # print 'i am here'
                    if starting_date <= date_change < z['date_start'].iloc[i]:
                        # print 'zone_type', z['zone_type'].iloc[i - 1]
                        time_type_field7 = z['zone_type'].iloc[i - 1]
                        dst = z['zone_type'].iloc[i - 1]
                        # print 'DST',z['zone_type'].iloc[i - 1]
                        if dst == 2:
                            dst = 1.
                        if dst == 3:
                            dst = 2.
                        if dst == 4:
                            dst = .5
                        if dst == 6:
                            dst = 20. / 60
                        if dst == 7:
                            dst = 40. / 60
                        break
                i += 1
    if message == 10 and dst == 1:
        message = 10
    elif message == 20 and dst == 1:
        message = 20
    elif message == 30 and dst == 0:
        message = 30
    else:
        message = 0
    # print time_type_field7,dst,message
    if time_type_field7 == 30001:
        # cutoff date is 1987 4 26 2 am
        # next cut off is 2007 3 11 2 am  1252528620
        # After 2007
        if date_change > 1252528620:
            date_dst_last = datetime(date_year, 3, date_day, 2, 0) + relativedelta.relativedelta \
             (day=1, weekday=relativedelta.SU(2))
            date_change_dst = date_dst_last.year * 624000 + date_dst_last.month * 48000 + date_dst_last.day * 1500 + 120  # + date_min
            # print 'post 2007-3-11-2am', date_change_dst
            date_std_last = datetime(date_year, 10, date_day, 2, 0) + relativedelta.relativedelta \
             (day=31, weekday=relativedelta.SU(1))
            date_change_std = date_std_last.year * 624000 + date_std_last.month * 48000 + date_std_last.day * 1500 + 120  # + date_min
            # print 'date of change post 2007', date_year, 'dst: ', date_dst_last, 'std: ', date_std_last, 'dst', dst
            # print date_change, date_change_dst, date_change_std
            if date_change < date_change_dst:
                dst = 0.
                # print 'i am here - std time pre dst(2007) '
            else:
                if date_change < (date_change_dst + 24 * 60):
                    # print "Message: Please make sure you have correct time as we are switching"
                    dst = 1.
                elif date_change < date_change_std:
                    dst = 1.
                    # print ' i am now dst post(2007)'
                if date_change_std <= date_change <= (date_change_std +
                                                      24 * 60):
                    # print "Message: Please make sure you have correct time as we are switching back to std"
                    dst = 0.
                elif date_change > date_change_std:
                    # print 'back to std time post 2007'
                    dst = 0.
        # first sunday of april to last sunday in october up to 2007
        if date_change >= 1240087620 and date_change < 1252528620:
            date_dst_last = datetime(date_year, 3, date_day, 0, 0) + relativedelta.relativedelta \
             (day=30, weekday=relativedelta.SU(1))
            date_change_dst = date_dst_last.year * 624000 + date_dst_last.month * 48000 + date_dst_last.day * 1500 + 120  # + date_min
            date_std_last = datetime(date_year, 10, date_day, 0, 0) + relativedelta.relativedelta \
             (day=31, weekday=relativedelta.SU(-1))
            date_change_std = date_std_last.year * 624000 + date_std_last.month * 48000 + date_std_last.day * 1500 + 120  # + date_min
            # print 'date of change pre 1987-NAREN', date_year, 'dst: ', date_dst_last, 'std: ', date_std_last, 'dst', dst
            # print date_change, date_change_dst
            if date_change < date_change_dst:
                dst = 0.
                # print 'i am here - std time pre dst(2007) '
            else:
                if date_change < (date_change_dst + 24 * 60):
                    # print "Message: Please make sure you have correct time as we are switching"
                    dst = 1.
                elif date_change < date_change_std:
                    dst = 1.
                    # print ' i am now dst post(2007)'
                if date_change_std <= date_change <= (date_change_std +
                                                      24 * 60):
                    # print "Message: Please make sure you have correct time as we are switching back to std"
                    dst = 0.
                elif date_change > date_change_std:
                    # print 'back to std time post 2007'
                    dst = 0.
        # last sunday of april to last sunday in october up to 1987 april 5 2 am
        if date_change < 1240087620:
            date_dst_last = datetime(date_year, 4, date_day, 2, 0) + relativedelta.relativedelta \
             (day=30, weekday=relativedelta.SU(-1))
            date_change_dst = date_dst_last.year * 624000 + date_dst_last.month * 48000 + date_dst_last.day * 1500 + 120
            date_std_last = datetime(date_year, 10, date_day, 2, 0) + relativedelta.relativedelta \
             (day=31, weekday=relativedelta.SU(-1))
            date_change_std = date_std_last.year * 624000 + date_std_last.month * 48000 + date_std_last.day * 1500 + 120
            # print 'date of change pre 1987-naren', date_year, 'dst: ', date_dst_last, 'std: ', date_std_last, 'dst', dst
            # print date_change, date_change_dst, date_change_std
            if date_change < date_change_dst:
                dst = 0.
                # print 'i am here - std time pre dst(2007) '
            else:
                if date_change < (date_change_dst + 24 * 60):
                    # print "Message: Please make sure you have correct time as we are switching"
                    dst = 1.
                elif date_change < date_change_std:
                    dst = 1.
                    # print ' i am now dst post(2007)'
                if date_change_std <= date_change <= (date_change_std +
                                                      24 * 60):
                    # print "Message: Please make sure you have correct time as we are switching back to std"
                    dst = 0.
                elif date_change > date_change_std:
                    # print 'back to std time post 2007'
                    dst = 0.
    final_zone = -final_zone / 900.
    return latitude, longitude, final_zone, float(
        dst), py_tz_name, stored_time_zone, stored_dst, message, 0
コード例 #20
0
# domain = https://www.antiochca.gov


cur_dir = os.getcwd()
save_dir = cur_dir + "/data/arrests/"

if not os.path.exists(save_dir):
    os.makedirs(save_dir)

html_page = requests.get(webpage).text


today = datetime.datetime.now()
start = today - datetime.timedelta((today.weekday() + 1) % 7)
sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
# Gave up on trying to use strptime to strip the time
sat_date = str(sat).replace("-", "_").split()
sun_date = str(sun).replace("-", "_").split()

file_name = "arrest_reports_" + str(sun_date[0]) + "_" + str(sat_date[0])
print(file_name)


def get_files():
    # file_name = line_list[1].replace(" ", "_")[:-1]
    # file_name = save_dir + file_name
    # document = requests.get(url_2, allow_redirects=True)
    pdf = urllib.request.urlopen(webpage)
    with open(save_dir + file_name + ".pdf", "wb") as file:
        file.write(pdf.read())
コード例 #21
0
import logging
import os
from datetime import datetime
from dateutil import relativedelta
from functools import wraps
from time import sleep

from zeep import Client

DATETIME_STRING_FMT = "%Y-%m-%d"

one_sunday_ago = relativedelta.relativedelta(weekday=relativedelta.SU(-5))
last_sunday_string = (datetime.now() +
                      one_sunday_ago).strftime(DATETIME_STRING_FMT)
two_mondays_ago = relativedelta.relativedelta(weekday=relativedelta.MO(-6))
two_mondays_ago_string = (datetime.now() -
                          two_mondays_ago).strftime(DATETIME_STRING_FMT)

RETRY_ATTEMPTS = 2


class BaseJobDivaClient:
    def __init__(self, service):
        self.username = os.environ["JOBDIVA_USERNAME"]
        self.password = os.environ["JOBDIVA_PASSWORD"]
        self.logger = logging.getLogger(f"JobDivaClient - {service}")
        self._client = Client(
            f"https://ws.jobdiva.com/axis2-1.6.1/services/{service}?wsdl")

        for method_name in dir(self._client.service):
            if not method_name.startswith("__"):