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()
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()
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})
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} )
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: