def call(program, argv):
    parser = argparse.ArgumentParser(prog=program)

    parser.add_argument("name", help="profile name")
    parser.add_argument("-t",
                        "--time",
                        help="timestamp of past time",
                        type=int)
    parser.add_argument("--unix",
                        help="show timestamps as integer",
                        action="store_true")

    args = parser.parse_args(argv)

    if args.time is None:
        args.time = datetime.utcnow()

    event = Profile.that_owned_name_at(args.name, args.time)

    print(f"History of {args.name}")

    if event is None:
        print(f"No profile owned that name at {args.time}!")
    else:
        print(f"Owner of {event.name} @ {args.time}: {event.profile}")

    events = ProfileNameEvent.select(lambda x: x.name == args.name
                                     or x.name_upper == args.name.upper()
                                     or x.name_lower == args.name.lower())\
        .order_by(desc(ProfileNameEvent.active_from))

    for old_event in events:
        print(old_event)
def json_and_response_code(request, username):
    if "at" not in request.args:
        at = datetime.utcnow()
    else:
        try:
            at = datetime.utcfromtimestamp(int(request.args["at"]))
        except (ValueError, OSError):
            return INVALID_TIMESTAMP.dual

    event = Profile.that_owned_name_at(username, at)
    if event is None:
        return "", 204

    return jsonify({
        "id": event.profile.uuid.hex,
        "name": event.profile.name
    }), 200