43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
# coding: utf-8
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
import logging
|
|
|
|
from .get import current_day
|
|
from .get import most_recent_year
|
|
from .models import default_user
|
|
from .models import Puzzle
|
|
from .models import User
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
def submit(
|
|
answer, part=None, day=None, year=None, session=None, reopen=True, quiet=False
|
|
):
|
|
if session is None:
|
|
user = default_user()
|
|
else:
|
|
user = User(token=session)
|
|
if day is None:
|
|
day = current_day()
|
|
if year is None:
|
|
year = most_recent_year()
|
|
puzzle = Puzzle(year=year, day=day, user=user)
|
|
if part is None:
|
|
# guess if user is submitting for part a or part b
|
|
answer_a = getattr(puzzle, "answer_a", None)
|
|
log.warning("answer a: %s", answer_a)
|
|
if answer_a is None:
|
|
log.warning("submitting for part a")
|
|
part = "a"
|
|
else:
|
|
log.warning("submitting for part b (part a is already completed)")
|
|
part = "b"
|
|
response = puzzle._submit(value=answer, part=part, reopen=reopen, quiet=quiet)
|
|
return response
|