コード例 #1
0
def move_ansi_enabled(migrator):
    migrate.migrate(migrator.add_column("certificate", "ansi_enabled", BooleanField(default=False)))

    for user in User.select():
        for cert in user.certificates:
            cert.ansi_enabled = user.ansi_enabled
            cert.save()
コード例 #2
0
def test_user_password():
    user = user_factory()
    assert not user.check_password("foobar")

    user.set_password("foobar")
    user.save()

    user = User.get_by_id(user.id)
    assert not user.check_password("fizzbuzz")
    assert user.check_password("foobar")
コード例 #3
0
def migrate_certificates(migrator):
    users = list(User.select())

    active_users = {}
    for user in users:
        active_users.setdefault(user.username, user)
        watered_at = active_users[user.username].plant.watered_at
        if user.plant.watered_at > watered_at:
            active_users[user.username] = user

    for user in users:
        active_user = active_users[user.username]
        Certificate.create(
            user=active_user,
            authorised=not user.user_id.endswith("="),
            fingerprint=user.user_id,
            cn=user.username,
        )
        if user == active_user:
            user.user_id = gen_user_id()
            user.save()
        else:
            user.delete_instance()
コード例 #4
0
def add_santa(migrator):
    User.create(username="******")
コード例 #5
0
def add_item_fertilizer(migrator):
    for user in User.select():
        ItemSlot.get_or_create(
            user=user, item_id=items.fertilizer.item_id, defaults={"quantity": 5}
        )
コード例 #6
0
def add_item_paperclip(migrator):
    for user in User.select():
        ItemSlot.get_or_create(user=user, item_id=items.paperclip.item_id, defaults={"quantity": 1})
コード例 #7
0
def test_user_initialize():
    username = gen_id()
    user = User.initialize(username)
    assert user.username == username
    assert user.get_item_quantity(items.paperclip) == 1
    assert user.inbox.count() == 1
コード例 #8
0
def test_user_login():
    user = user_factory()
    cert = certificate_factory(user=user)

    assert User.login("invalid_fingerprint") is None
    assert User.login(cert.fingerprint) == cert
コード例 #9
0
def user_factory(**kwargs):
    kwargs.setdefault("username", f"username_{gen_id()}")
    return User.create(**kwargs)
コード例 #10
0
import argparse
import typing

from astrobotany import items, settings
from astrobotany.models import Inbox, User, init_db

parser = argparse.ArgumentParser()
parser.add_argument("filename")
parser.add_argument("user_from")
parser.add_argument("--item")
parser.add_argument("--db", default=settings.db)
args = parser.parse_args()

init_db(args.db)

user_from = User.select().where(User.username == args.user_from)
users = User.select()

subject, body = Inbox.load_mail_file(args.filename)

item_id: typing.Optional[int]

if args.item:
    item = items.search(args.item)
    if not item:
        raise ValueError(f"Item not found: {args.item}")
    item_id = item.item_id
else:
    item_id = None

for user in users:
コード例 #11
0
from astrobotany import init_db
from astrobotany.models import Plant, User

parser = argparse.ArgumentParser()
parser.add_argument("count", type=int)
parser.add_argument("--db-file", default="astrobotany.sqlite")
args = parser.parse_args()

fake = faker.Faker()

init_db(args.db_file)

for _ in range(args.count):
    age = random.randrange(int(timedelta(days=50).total_seconds()))
    user = User.create(
        user_id="".join(random.choices("0123456789ABCDEF", k=16)),
        username=fake.name().lower(),
    )
    plant = Plant(
        user=user,
        user_active=user,
        score=random.randrange(age // 2, age),
        created_at=datetime.now() - timedelta(seconds=age),
        watered_at=datetime.now() -
        timedelta(seconds=random.randrange(2 * 24 * 60 * 60)),
    )
    plant.refresh()
    plant.save()
    print(f"Generated {user.username}'s {plant.description}")