python类now()的实例源码

arrow.py 文件源码 项目:kino-bot 作者: DongjunLee 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def is_today_day_of_week(day_of_week: list) -> bool:
        day_of_week = list(map(lambda x: int(x), day_of_week))

        if day_of_week == [0]:
            return True

        now = arrow.now()
        today_day_of_week = now.weekday() + 1

        if today_day_of_week in day_of_week:
            return True
        elif len(day_of_week) == 1:
            value = day_of_week[0]
            if value == 8 and ArrowUtil.is_weekday():
                return True
            elif value == 9 and not ArrowUtil.is_weekday():
                return True
            else:
                return False
        else:
            return False
define.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def timezones():
    ct = datetime.datetime.now(pytz.utc)
    timezones_by_country = [
        (pytz.country_names[cc], [
            (int(ct.astimezone(pytz.timezone(tzname)).strftime("%z")), tzname)
            for tzname in timezones
        ])
        for cc, timezones in pytz.country_timezones.iteritems()]
    timezones_by_country.sort()
    ret = []
    for country, timezones in timezones_by_country:
        ret.append(('- %s -' % (country,), None))
        ret.extend(
            ("[UTC%+05d] %s" % (offset, tzname.replace('_', ' ')), tzname)
            for offset, tzname in timezones)
    return ret
test_submission.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def test_recently_popular(self):
        owner = db_utils.create_user()
        now = arrow.now()

        sub1 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now - datetime.timedelta(days=6))
        sub2 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now - datetime.timedelta(days=4))
        sub3 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now - datetime.timedelta(days=2))
        sub4 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now)
        tag = db_utils.create_tag(u'tag')

        for s in [sub1, sub2, sub3, sub4]:
            db_utils.create_submission_tag(tag, s)

        for i in range(100):
            favoriter = db_utils.create_user()
            db_utils.create_favorite(favoriter, sub2, 's', unixtime=now)

        recently_popular = submission.select_recently_popular()

        self.assertEqual(
            [item['submitid'] for item in recently_popular],
            [sub2, sub4, sub3, sub1])
test_reset.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_passwordInsecure_WeasylError_if_password_length_insufficient():
    db_utils.create_user(email_addr=email_addr, username=user_name)
    password = ''
    form = Bag(email=email_addr, username=user_name, day=arrow.now().day,
               month=arrow.now().month, year=arrow.now().year, token=token,
               password=password, passcheck=password)
    # Considered insecure...
    for i in range(0, login._PASSWORD):
        with pytest.raises(WeasylError) as err:
            resetpassword.reset(form)
        assert 'passwordInsecure' == err.value.value
        password += 'a'
        form.password = password
        form.passcheck = password
    # Considered secure...
    password += 'a'
    form.password = password
    form.passcheck = password
    # Success at WeasylError/forgotpasswordRecordMissing; we didn't make one yet
    with pytest.raises(WeasylError) as err:
        resetpassword.reset(form)
    assert 'forgotpasswordRecordMissing' == err.value.value
test_reset.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def test_password_reset_fails_if_attempted_from_different_ip_address():
    # Two parts: Set forgot password record; attempt reset with incorrect IP Address in forgotpassword table vs. requesting IP
    #  Requirement: Get token set from request()
    user_id = db_utils.create_user(email_addr=email_addr, username=user_name)
    password = '01234567890123'
    form_for_request = Bag(email=email_addr, username=user_name, day=arrow.now().day,
                           month=arrow.now().month, year=arrow.now().year)
    resetpassword.request(form_for_request)
    pw_reset_token = d.engine.scalar("SELECT token FROM forgotpassword WHERE userid = %(id)s", id=user_id)
    # Change IP detected when request was made (required for test)
    d.engine.execute("UPDATE forgotpassword SET address = %(addr)s WHERE token = %(token)s",
                     addr="127.42.42.42", token=pw_reset_token)
    # Force update link_time (required)
    resetpassword.prepare(pw_reset_token)
    form_for_reset = Bag(email=email_addr, username=user_name, day=arrow.now().day,
                         month=arrow.now().month, year=arrow.now().year, token=pw_reset_token,
                         password=password, passcheck=password)
    with pytest.raises(WeasylError) as err:
        resetpassword.reset(form_for_reset)
    assert 'addressInvalid' == err.value.value
test_reset.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_verify_success_if_correct_information_supplied():
    # Subtests:
    #  a) Verify 'authbcrypt' table has new hash
    #  b) Verify 'forgotpassword' row is removed.
    #  > Requirement: Get token set from request()
    user_id = db_utils.create_user(email_addr=email_addr, username=user_name)
    password = '01234567890123'
    form_for_request = Bag(email=email_addr, username=user_name, day=arrow.now().day,
                           month=arrow.now().month, year=arrow.now().year)
    resetpassword.request(form_for_request)
    pw_reset_token = d.engine.scalar("SELECT token FROM forgotpassword WHERE userid = %(id)s", id=user_id)
    # Force update link_time (required)
    resetpassword.prepare(pw_reset_token)
    form = Bag(email=email_addr, username=user_name, day=arrow.now().day,
               month=arrow.now().month, year=arrow.now().year, token=pw_reset_token,
               password=password, passcheck=password)
    resetpassword.reset(form)
    # 'forgotpassword' row should not exist after a successful reset
    row_does_not_exist = d.engine.execute("SELECT token FROM forgotpassword WHERE userid = %(id)s", id=user_id)
    assert row_does_not_exist.first() is None
    bcrypt_hash = d.engine.scalar("SELECT hashsum FROM authbcrypt WHERE userid = %(id)s", id=user_id)
    assert bcrypt.checkpw(password.encode('utf-8'), bcrypt_hash.encode('utf-8'))
test_create.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_passwords_must_be_of_sufficient_length():
    password = "tooShort"
    form = Bag(username=user_name, password=password, passcheck=password,
               email='foo', emailcheck='foo',
               day='12', month='12', year=arrow.now().year - 19)
    # Insecure length
    with pytest.raises(WeasylError) as err:
        login.create(form)
    assert 'passwordInsecure' == err.value.value
    # Secure length
    password = "thisIsAcceptable"
    form.passcheck = form.password = password
    # emailInvalid is the next failure state after passwordInsecure, so it is a 'success' for this testcase
    with pytest.raises(WeasylError) as err:
        login.create(form)
    assert 'emailInvalid' == err.value.value
test_create.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def test_create_fails_if_pending_account_has_same_email():
    """
    Test checks to see if an email is tied to a pending account creation entry
    in logincreate. If so, login.create() will not permit another account to be
    made for the same address.
    """
    d.engine.execute(d.meta.tables["logincreate"].insert(), {
        "token": 40 * "a",
        "username": "existing",
        "login_name": "existing",
        "hashpass": login.passhash(raw_password),
        "email": email_addr,
        "birthday": arrow.Arrow(2000, 1, 1),
        "unixtime": arrow.now(),
    })
    form = Bag(username="test", password='0123456789', passcheck='0123456789',
               email=email_addr, emailcheck=email_addr,
               day='12', month='12', year=arrow.now().year - 19)
    with pytest.raises(WeasylError) as err:
        login.create(form)
    assert 'emailExists' == err.value.value
user.py 文件源码 项目:weasyl 作者: Weasyl 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def signin_2fa_auth_get_(request):
    sess = define.get_weasyl_session()

    # Only render page if the password has been authenticated (we have a UserID stored in the session)
    if '2fa_pwd_auth_userid' not in sess.additional_data:
        return Response(define.errorpage(request.userid, errorcode.permission))
    tfa_userid = sess.additional_data['2fa_pwd_auth_userid']

    # Maximum secondary authentication time: 5 minutes
    session_life = arrow.now().timestamp - sess.additional_data['2fa_pwd_auth_timestamp']
    if session_life > 300:
        _cleanup_2fa_session()
        return Response(define.errorpage(
            request.userid,
            errorcode.error_messages['TwoFactorAuthenticationAuthenticationTimeout'],
            [["Sign In", "/signin"], ["Return to the Home Page", "/"]]))
    else:
        ref = request.params["referer"] if "referer" in request.params else "/"
        return Response(define.webpage(
            request.userid,
            "etc/signin_2fa_auth.html",
            [define.get_display_name(tfa_userid), ref, two_factor_auth.get_number_of_recovery_codes(tfa_userid),
             None], title="Sign In - 2FA"))
data_input.py 文件源码 项目:algo-trading-pipeline 作者: NeuralKnot 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def prune_databases(self):
        for source in self.sources:
            self.logger.log("Data Input/Pruner", "informative", "Pruning: " + source["news_api_name"])

            db = source["articles_db"]

            q = Query()
            test_func = lambda at: arrow.get(at) < (arrow.now() - datetime.timedelta(days=1))
            docs = db.search(q.at.test(test_func))

            eids = [doc.eid for doc in docs]
            db.remove(eids=eids)

    # Entry point for process
logger.py 文件源码 项目:algo-trading-pipeline 作者: NeuralKnot 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def log(self, source, msg_type, message):
        time = str(arrow.now())

        message = ''.join(ch for ch in message if ch.isalnum() or ch == " ")

        message_final = "[" + time + "] " + "[" + source + "] " + "[" + msg_type + "] " + "[" + message + "]"
        self.message_queue.put(message_final)
main.py 文件源码 项目:Acedia 作者: Lvl4Sword 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def deteriorate(settings, logs):
    last_entry = logs.load_last_entry()
    if last_entry is None:
        return

    last_utc = last_entry.utc
    utc_to_arrow = arrow.get(last_utc)
    today = arrow.now()
    deteriorate = today - utc_to_arrow
    multiple_remove = int(deteriorate.days / 7)

    if multiple_remove >= 1 and settings.xp * 0.8 > 199.20000000000002:
        previous_xp = settings.xp
        utcnow = arrow.utcnow().timestamp
        for each in range(multiple_remove):
            total_xp = int(settings.xp)
            if total_xp >= 199.20000000000002:
                total_lost = round(total_xp * 0.2)
                settings.xp = round(total_xp * 0.8)

                deter_entry = LogEntry()

                deter_entry.average = 0
                deter_entry.distance = 0
                deter_entry.exercise = "DETERIORATE"
                deter_entry.measuring = settings.measuring_type
                deter_entry.points = 0
                deter_entry.total = total_lost
                deter_entry.utc = utcnow

                logs.append_entry(deter_entry)
                settings.commit()
        xp_lost = previous_xp - settings.xp
        print('Due to not logging anything for {0} days...'.format(
               deteriorate.days))
        print('You\'ve lost {0} XP. Your XP is now {1}'.format(
               xp_lost, settings.xp))
userinput.py 文件源码 项目:Acedia 作者: Lvl4Sword 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def cardio_date_converter(raw_value, activity=None):
    try:
        initial_check_date = arrow.Arrow.strptime(raw_value.strip(),
                                                  '%Y-%m-%d')
        check_date_strftime = arrow.Arrow.strptime(initial_check_date,
                                                   '%Y-%m-%d')
        return check_date_strftime
    except ValueError:
        if raw_value.strip() == '':
            return arrow.Arrow.strftime(arrow.now(), '%Y-%m-%d')
        else:
            raise ConversionFailed('Format is 1999-12-31')
userinput.py 文件源码 项目:Acedia 作者: Lvl4Sword 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def cardio_when_prompter(activity):
    return Prompter(
        'What time did you finish? (Format 20:30:15) (Enter for now)',
        cardio_when_converter,
        activity=None
    )
userinput.py 文件源码 项目:Acedia 作者: Lvl4Sword 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def cardio_when_converter(raw_value, activity=None):
    time_input = raw_value.strip()
    time_split = time_input.split(':')
    try:
        if len(time_split) == 3:
            hours_ = int(time_split[0])
            minutes_ = int(time_split[1])
            seconds_ = int(time_split[2])
            when_seconds = hours_ * 3600 + minutes_ * 60 + seconds_
            if when_seconds <= 86399:
                log_divmod = divmod(when_seconds, 60)
                when_hours = round(log_divmod[0] / 60)
                when_minutes = round(log_divmod[0] % 60)
                when_seconds = round(log_divmod[1])
                when_time = ('{0:02d}, {1:02d}, {2:02d}'.format(when_hours,
                                                                when_minutes,
                                                                when_seconds))
                return when_time
            else:
                raise ConversionFailed('There\'s only 24 hours in a day')
        elif time_input == '':
            current_time = arrow.now().time()
            when_hours = current_time.hour
            when_minutes = current_time.minute
            when_seconds = current_time.second
            when_time = ('{0:02d} {1:02d} {2:02d}'.format(when_hours,
                                                          when_minutes,
                                                          when_seconds))
            return when_time
        else:
            raise ValueError
    except ValueError:
        raise ConversionFailed(
            'Only digits and ":" can be used. (10:00:00)'
        )
tools.py 文件源码 项目:jarvis 作者: anqxyr 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def version(inp):
    """
    Output version info.

    Shows bot's bio, version number, github link, and uptime.
    """
    uptime = (arrow.now() - BOOTTIME)
    m, s = divmod(uptime.seconds, 60)
    h, m = divmod(m, 60)
    return lex.version(
        version=__version__, days=uptime.days, hours=h, minutes=m)
tools.py 文件源码 项目:jarvis 作者: anqxyr 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def _get_old_article(pages, scp=True):
    """Get random old tale or scp article."""
    date = arrow.now().replace(days=-180).format('YYYY-MM-DD')
    pages = [p for p in pages if p.created < date]
    if scp:
        pages = [p for p in pages if 'scp' in p.tags]
        pages = [p for p in pages if p.rating >= 120]
    else:
        pages = [
            p for p in pages if 'tale' in p.tags or 'goi-format' in p.tags]
        pages = [p for p in pages if p.rating >= 60]
    return random.choice(pages)
autoban.py 文件源码 项目:jarvis 作者: anqxyr 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def autoban(inp, name, host):
    inp.user = 'OP Alert'
    if any(word in name.lower() for word in PROFANITY):
        kick_user(inp, name, lex.autoban.kick.name)
        ban_user(inp, host, 10)
        ban_user(inp, name, 900)
        return lex.autoban.name(user=name)

    banlist = BANS.get(inp.channel)
    if not banlist:
        return
    # find if the user is in the banlist
    bans = [
        b for b in banlist if name.lower() in b.names or
        any(pat(host) for pat in b.hosts)]
    for ban in bans:
        try:
            # check if the ban has expired
            if arrow.get(ban.status, ['M/D/YYYY', 'YYYY-MM-DD']) < arrow.now():
                continue
        except arrow.parser.ParserError:
            # if we can't parse the time, it's perma
            pass
        kick_user(inp, name, lex.autoban.kick.banlist(reason=ban.reason))
        ban_user(inp, host, 900)
        return lex.autoban.banlist(user=name, truename=ban.names[0])


问题


面经


文章

微信
公众号

扫码关注公众号