Initial commit

This commit is contained in:
2025-07-11 13:52:19 +00:00
commit e0c489f625
362 changed files with 27286 additions and 0 deletions
@@ -0,0 +1,56 @@
from typing import ClassVar, Optional
from ..base_nodes import CCBaseNode
class CurriculumBaseNode(CCBaseNode):
__primarylabel__: ClassVar[str] = ''
class KeyStageNode(CurriculumBaseNode):
__primarylabel__: ClassVar[str] = 'KeyStage'
key_stage: str
name: str
class KeyStageSyllabusNode(CurriculumBaseNode):
__primarylabel__: ClassVar[str] = 'KeyStageSyllabus'
id: str
name: str
key_stage: str
subject_name: str
class SubjectNode(CurriculumBaseNode):
__primarylabel__: ClassVar[str] = 'Subject'
id: str
name: str
class TopicNode(CurriculumBaseNode):
__primarylabel__: ClassVar[str] = 'Topic'
id: str
name: str
type: str
assessment_type: str
total_number_of_lessons_for_topic: str
class TopicLessonNode(CurriculumBaseNode):
__primarylabel__: ClassVar[str] = 'TopicLesson'
id: str
name: str
type: str
length: Optional[str] = None
suggested_activities: Optional[str] = None
skills_learned: Optional[str] = None
weblinks: Optional[str] = None
class LearningStatementNode(CurriculumBaseNode):
__primarylabel__: ClassVar[str] = 'LearningStatement'
id: str
name: str
type: str
class ScienceLabNode(CurriculumBaseNode):
__primarylabel__: ClassVar[str] = 'ScienceLab'
id: str
name: str
summary: Optional[str] = None
requirements: Optional[str] = None
procedure: Optional[str] = None
safety: Optional[str] = None
weblinks: Optional[str] = None
@@ -0,0 +1,14 @@
from typing import ClassVar, Optional
from ..base_nodes import CCBaseNode
class YearGroupNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'YearGroup'
year_group: str
name: str
class YearGroupSyllabusNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'YearGroupSyllabus'
id: str
name: str
year_group: str
subject_name: str
@@ -0,0 +1,60 @@
from typing import ClassVar, Optional
from ..base_nodes import CCBaseNode
class SchoolNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'School'
# Core identification fields (required for all databases)
id: str # School's unique identifier within its type
school_type: str # e.g., 'development', 'state', 'private', etc.
name: str
website: str = 'unknown'
# Public school fields (required for public database)
statutory_low_age: Optional[int] = None
statutory_high_age: Optional[int] = None
phase_of_education: Optional[str] = None
school_capacity: Optional[int] = None
religious_character: Optional[str] = None
ofsted_rating: Optional[str] = None
# Private school fields (required for private database)
establishment_number: Optional[str] = None
establishment_name: Optional[str] = None
establishment_type: Optional[str] = None
establishment_status: Optional[str] = None
@property
def database_id(self) -> str:
"""Get the full database identifier for this school"""
return f"{self.school_type}.{self.id}"
@property
def public_database_name(self) -> str:
"""Get the public database name for this school"""
return "cc.institutes"
@property
def private_database_name(self) -> str:
"""Get the private database name for this school"""
return f"cc.institutes.{self.database_id}"
@property
def curriculum_database_name(self) -> str:
"""Get the curriculum database name for this school"""
return f"{self.private_database_name}.curriculum"
class DepartmentNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'Department'
name: str
class SubjectClassNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'SubjectClass'
name: Optional[str] = 'unknown'
year_group_id: str
subject_id: str
class RoomNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'Room'
name: Optional[str] = 'unknown'
building_id: Optional[str] = 'unknown'
@@ -0,0 +1,88 @@
import datetime
from typing import ClassVar
from ..base_nodes import CCBaseNode
class SchoolTimetableNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'SchoolTimetable'
school_timetable_id: str
start_date: datetime.date
end_date: datetime.date
class AcademicYearNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'AcademicYear'
year: str
class AcademicTermNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'AcademicTerm'
term_name: str
term_number: str
start_date: datetime.date
end_date: datetime.date
class AcademicTermBreakNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'AcademicTermBreak'
term_break_name: str
start_date: datetime.date
end_date: datetime.date
class AcademicWeekNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'AcademicWeek'
academic_week_number: str
start_date: datetime.date
week_type: str
class HolidayWeekNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'HolidayWeek'
start_date: datetime.date
class AcademicDayNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'AcademicDay'
academic_day: str
date: datetime.date
day_of_week: str
day_type: str
class OffTimetableDayNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'OffTimetableDay'
date: datetime.date
day_of_week: str
class StaffDayNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'StaffDay'
date: datetime.date
day_of_week: str
class HolidayDayNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'HolidayDay'
date: datetime.date
day_of_week: str
class AcademicPeriodNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'AcademicPeriod'
name: str
date: datetime.date
start_time: datetime.datetime
end_time: datetime.datetime
period_code: str
class RegistrationPeriodNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'RegistrationPeriod'
name: str
date: datetime.date
start_time: datetime.datetime
end_time: datetime.datetime
period_code: str
class BreakPeriodNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'BreakPeriod'
name: str
date: datetime.date
start_time: datetime.datetime
end_time: datetime.datetime
class OffTimetablePeriodNode(CCBaseNode):
__primarylabel__: ClassVar[str] = 'OffTimetablePeriod'
name: str
date: datetime.date
start_time: datetime.datetime
end_time: datetime.datetime