Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 21 additions & 3 deletions denis/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ def add_initial(parser, required=True):
help='Initial submission due date timestamp',
required=required)

def add_peer_review(parser, required=True):
parser.add_argument('-p', '--peer-review',
type=int,
help='Peer review submission due date timestamp',
required=required)

def add_final(parser, required=True):
parser.add_argument('-f', '--final',
type=int,
Expand All @@ -30,11 +36,13 @@ def add_final(parser, required=True):
create_parser = command_parsers.add_parser('create')
add_assignment(create_parser)
add_initial(create_parser)
add_peer_review(create_parser)
add_final(create_parser)

alter_parser = command_parsers.add_parser('alter')
add_assignment(alter_parser)
add_initial(alter_parser, required=False)
add_peer_review(alter_parser, required=False)
add_final(alter_parser, required=False)

remove_parser = command_parsers.add_parser('remove')
Expand All @@ -43,23 +51,32 @@ def add_final(parser, required=True):
command_parsers.add_parser('dump')
command_parsers.add_parser('reload')

# Dictionary containing the desired command and all flags with their values
kwargs = vars(parser.parse_args())
globals()[kwargs.pop('command')](**kwargs)
# Subparsers store their name in the destination `'command'`
subparser_name = kwargs.pop('command')
# Get a handle to the function with the desired name
subparser_func = globals()[subparser_name]
# Call the desired subparser with the remaining flags/values as kwargs
Comment thread
samuelmarquis marked this conversation as resolved.
subparser_func(**kwargs)


def create(assignment, initial, final):
def create(assignment, initial, peer_review, final):
try:
db.Assignment.create(name=assignment,
initial_due_date=initial,
peer_review_due_date=peer_review,
final_due_date=final)
except db.peewee.IntegrityError:
print('cannot create assignment with duplicate name')


def alter(assignment, initial, final):
def alter(assignment, initial, peer_review, final):
alterations = {}
if initial is not None:
alterations[db.Assignment.initial_due_date] = initial
if peer_review is not None:
alterations[db.Assignment.peer_review_due_date] = peer_review
if final is not None:
alterations[db.Assignment.final_due_date] = final
if not alterations:
Expand All @@ -84,6 +101,7 @@ def dump():
for asn in db.Assignment.select():
print(f'''{asn.name}:
\tInitial: {asn.initial_due_date}
\tPeer Review: {asn.peer_review_due_date}
\tFinal: {asn.final_due_date}''')


Expand Down
1 change: 1 addition & 0 deletions denis/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class Meta:
class Assignment(BaseModel):
name = peewee.TextField(unique=True)
initial_due_date = peewee.IntegerField()
peer_review_due_date = peewee.IntegerField()
final_due_date = peewee.IntegerField()


Expand Down
2 changes: 2 additions & 0 deletions denis/peer_review.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env python3
print(__import__('sys').argv)
6 changes: 6 additions & 0 deletions denis/start.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,19 @@ def signal_handler(*_):
for assignment in db.Assignment.select():
name = assignment.name
initial = assignment.initial_due_date
peer_review = assignment.peer_review_due_date
final = assignment.final_due_date

if in_the_future(initial):
procs.append(spawn_waiter(str(initial), name, './initial.py'))
else:
print(f'skipping initial for {name}', file=sys.stderr)

if in_the_future(peer_review):
procs.append(spawn_waiter(str(peer_review), name, './peer_review.py')) # NOQA: E501
else:
print(f'skipping peer review for {name}', file=sys.stderr)

if in_the_future(final):
procs.append(spawn_waiter(str(final), name, './final.py'))
else:
Expand Down