Skip to content
Open
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
Empty file modified bin/poetry-install
100644 → 100755
Empty file.
6 changes: 5 additions & 1 deletion sqrl/graphql/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,17 +214,21 @@ class CreateTimetableMutation(graphene.Mutation):

class Arguments:
name = graphene.String(required=False, default_value=None)
session = graphene.String(required=False, default_value=None)

timetable = graphene.Field(_TimetableObject)
key = graphene.String()

def mutate(
self, info: graphene.ResolveInfo, name: Optional[str] = None
self, info: graphene.ResolveInfo, name: Optional[str],
session: Optional[str] = None
) -> 'CreateTimetableMutation':
"""Create a timetable."""
timetable = Timetable()
if name is not None:
timetable.name = name
if session is not None:
timetable.session = session
timetable.save()
return CreateTimetableMutation(timetable=timetable, key=timetable.key)

Expand Down
9 changes: 9 additions & 0 deletions sqrl/models/migrations/migrate.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from sessions_and_deleted import migrate as migrate_sessions_and_deleted

migrations = [migrate_sessions_and_deleted]

for i, migration in enumerate(migrations):
try:
migration()
except:
print(f"Migration {i} failed or already done.")
18 changes: 18 additions & 0 deletions sqrl/models/migrations/sessions_and_deleted.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
def migrate():
from sqrl.models.timetable import Timetable
from sqrl.app import create_app
import time

app = create_app()
with app.app_context():
assert Timetable.objects(deleted__exists=True).count() == 0
assert Timetable.objects(session__exists=True).count() == 0

print('Migrating timetables...')
start_time = time.time()
Timetable.objects().update(deleted=False, session="202209", schema_version=2)
end_time = time.time()
timetables = list(Timetable.objects.all())
print(
f'Migrated {len(timetables)} timetables in {end_time - start_time} seconds.')
return timetables
6 changes: 6 additions & 0 deletions sqrl/models/timetable.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,3 +246,9 @@ class Timetable(db.Document):
sections: dict[str, list[str]] = db.MapField(
db.ListField(db.StringField()), default=dict)
deleted: bool = db.BooleanField(default=False)
# Sessions have two possibilities:
# - they are the normal fall–winter session
# - they are the summer session
# Sessions are represented as a 6 character string, where the first 4 characters are the year and the last two characters are the month in which the session starts.
session: str = db.StringField(required=True, default='202209')
schema_version: int = db.IntField(required=True, default=2)