Initial commit
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
from typing import Union
|
||||
import modules.database.schemas.nodes.users as user_schemas
|
||||
import modules.database.schemas.nodes.workers.workers as worker_schemas
|
||||
import modules.database.schemas.nodes.schools.schools as school_schemas
|
||||
|
||||
user_entities = [
|
||||
user_schemas.UserNode
|
||||
]
|
||||
|
||||
worker_entities = Union[
|
||||
worker_schemas.TeacherNode,
|
||||
worker_schemas.StudentNode,
|
||||
worker_schemas.SchoolAdminNode,
|
||||
worker_schemas.DeveloperNode,
|
||||
worker_schemas.SuperAdminNode,
|
||||
]
|
||||
|
||||
school_entities = Union[
|
||||
school_schemas.SchoolNode,
|
||||
school_schemas.DepartmentNode,
|
||||
school_schemas.SubjectClassNode,
|
||||
school_schemas.RoomNode,
|
||||
]
|
||||
|
||||
entities = Union[
|
||||
user_entities,
|
||||
worker_entities,
|
||||
school_entities,
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,52 @@
|
||||
from typing import ClassVar
|
||||
from modules.database.tools.neontology.basenode import BaseNode
|
||||
|
||||
class CCBaseNode(BaseNode):
|
||||
__primarylabel__: ClassVar[str] = ''
|
||||
__primaryproperty__: ClassVar[str] = 'unique_id'
|
||||
unique_id: str
|
||||
tldraw_snapshot: str
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
"__primarylabel__": self.__primarylabel__,
|
||||
"unique_id": self.unique_id,
|
||||
"tldraw_snapshot": self.tldraw_snapshot,
|
||||
}
|
||||
|
||||
class UserBaseNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = ''
|
||||
cc_username: str
|
||||
user_email: str
|
||||
user_db_name: str
|
||||
user_name: str
|
||||
user_type: str
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
"__primarylabel__": self.__primarylabel__,
|
||||
"unique_id": self.unique_id,
|
||||
"tldraw_snapshot": self.tldraw_snapshot,
|
||||
"cc_username": self.cc_username,
|
||||
"user_db_name": self.user_db_name,
|
||||
"user_email": self.user_email,
|
||||
"user_name": self.user_name,
|
||||
"user_type": self.user_type,
|
||||
}
|
||||
|
||||
class WorkerBaseNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = ''
|
||||
worker_name: str
|
||||
worker_email: str
|
||||
worker_db_name: str
|
||||
worker_type: str
|
||||
def to_dict(self):
|
||||
return {
|
||||
"__primarylabel__": self.__primarylabel__,
|
||||
"unique_id": self.unique_id,
|
||||
"tldraw_snapshot": self.tldraw_snapshot,
|
||||
"worker_name": self.worker_name,
|
||||
"worker_email": self.worker_email,
|
||||
"worker_db_name": self.worker_db_name,
|
||||
"worker_type": self.worker_type,
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import datetime
|
||||
from typing import ClassVar
|
||||
from .base_nodes import CCBaseNode
|
||||
|
||||
class CalendarNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'Calendar'
|
||||
name: str
|
||||
start_date: datetime.date
|
||||
end_date: datetime.date
|
||||
|
||||
class CalendarYearNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'CalendarYear'
|
||||
year: str
|
||||
|
||||
class CalendarMonthNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'CalendarMonth'
|
||||
year: str
|
||||
month: str
|
||||
month_name: str
|
||||
|
||||
class CalendarWeekNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'CalendarWeek'
|
||||
start_date: datetime.date
|
||||
week_number: str
|
||||
iso_week: str # ISO 8601 week
|
||||
|
||||
class CalendarDayNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'CalendarDay'
|
||||
date: datetime.date
|
||||
day_of_week: str
|
||||
iso_day: str # ISO 8601 day
|
||||
|
||||
class CalendarTimeChunkNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'CalendarTimeChunk'
|
||||
start_time: datetime.time
|
||||
end_time: datetime.time
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
from typing import ClassVar
|
||||
from ..base_nodes import CCBaseNode
|
||||
|
||||
class DepartmentStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'DepartmentStructure'
|
||||
|
||||
class PastoralStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'PastoralStructure'
|
||||
|
||||
class CurriculumStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'CurriculumStructure'
|
||||
|
||||
class SiteStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'SiteStructure'
|
||||
|
||||
class StaffStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'StaffStructure'
|
||||
|
||||
class StudentStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'StudentStructure'
|
||||
|
||||
class ITAdminStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'ITAdminStructure'
|
||||
@@ -0,0 +1,8 @@
|
||||
from typing import ClassVar
|
||||
from ..base_nodes import CCBaseNode
|
||||
|
||||
class WorkerStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'WorkerStructure'
|
||||
|
||||
class UserCalendarStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'UserCalendarStructure'
|
||||
@@ -0,0 +1,5 @@
|
||||
from typing import ClassVar, Optional
|
||||
from ..base_nodes import CCBaseNode
|
||||
|
||||
class WorkerTimetableStructureNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'WorkerTimetableStructure'
|
||||
@@ -0,0 +1,5 @@
|
||||
from typing import ClassVar
|
||||
from .base_nodes import UserBaseNode
|
||||
|
||||
class UserNode(UserBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'User'
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,63 @@
|
||||
import datetime
|
||||
from typing import ClassVar, Optional, List, Union
|
||||
from ..base_nodes import CCBaseNode
|
||||
|
||||
class EntityTimetableBaseNode(CCBaseNode):
|
||||
start_date: datetime.date
|
||||
end_date: datetime.date
|
||||
|
||||
class WorkerTimetableNode(EntityTimetableBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'WorkerTimetable'
|
||||
worker_timetable_id: str
|
||||
|
||||
class TeacherTimetableNode(EntityTimetableBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'TeacherTimetable'
|
||||
teacher_timetable_id: str
|
||||
|
||||
class UserTeacherTimetableNode(EntityTimetableBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'UserTeacherTimetable'
|
||||
user_teacher_timetable_id: str
|
||||
|
||||
class StudentTimetableNode(EntityTimetableBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'StudentTimetable'
|
||||
student_timetable_id: str
|
||||
|
||||
class SchoolAdminTimetableNode(EntityTimetableBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'SchoolAdminTimetable'
|
||||
school_admin_timetable_id: str
|
||||
|
||||
class DeveloperTimetableNode(EntityTimetableBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'DeveloperTimetable'
|
||||
developer_timetable_id: str
|
||||
|
||||
class SuperAdminTimetableNode(EntityTimetableBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'SuperAdminTimetable'
|
||||
super_admin_timetable_id: str
|
||||
|
||||
class TimetableLessonNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'TimetableLesson'
|
||||
subject_class: str
|
||||
date: datetime.date
|
||||
start_time: datetime.time
|
||||
end_time: datetime.time
|
||||
period_code: str
|
||||
|
||||
class PlannedLessonNode(CCBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'PlannedLesson'
|
||||
date: datetime.date
|
||||
start_time: datetime.time
|
||||
end_time: datetime.time
|
||||
period_code: str
|
||||
subject_class: str
|
||||
year_group: str
|
||||
subject: str
|
||||
teacher_code: str
|
||||
planning_status: str
|
||||
topic_code: Optional[str] = None
|
||||
topic_name: Optional[str] = None
|
||||
lesson_code: Optional[str] = None
|
||||
lesson_name: Optional[str] = None
|
||||
learning_statement_codes: Optional[List[str]] = None
|
||||
learning_statements: Optional[List[str]] = None
|
||||
learning_resource_codes: Optional[List[str]] = None
|
||||
learning_resources: Optional[List[str]] = None
|
||||
@@ -0,0 +1,19 @@
|
||||
import datetime
|
||||
from typing import ClassVar
|
||||
from ..base_nodes import WorkerBaseNode
|
||||
|
||||
class SchoolAdminNode(WorkerBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'SchoolAdmin'
|
||||
|
||||
class TeacherNode(WorkerBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'Teacher'
|
||||
|
||||
class StudentNode(WorkerBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'Student'
|
||||
|
||||
class DeveloperNode(WorkerBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'Developer'
|
||||
developer_role: str # To distinguish between admin/developer roles
|
||||
|
||||
class SuperAdminNode(WorkerBaseNode):
|
||||
__primarylabel__: ClassVar[str] = 'SuperAdmin'
|
||||
@@ -0,0 +1,29 @@
|
||||
from typing import Union
|
||||
import modules.database.schemas.nodes.users as user_schemas
|
||||
import modules.database.schemas.nodes.workers.workers as worker_schemas
|
||||
import modules.database.schemas.nodes.schools.schools as school_schemas
|
||||
|
||||
user_owners = Union[
|
||||
user_schemas.UserNode
|
||||
]
|
||||
|
||||
worker_owners = Union[
|
||||
worker_schemas.TeacherNode,
|
||||
worker_schemas.StudentNode,
|
||||
worker_schemas.SchoolAdminNode,
|
||||
worker_schemas.DeveloperNode,
|
||||
worker_schemas.SuperAdminNode,
|
||||
]
|
||||
|
||||
school_owners = Union[
|
||||
school_schemas.SchoolNode,
|
||||
school_schemas.DepartmentNode,
|
||||
school_schemas.SubjectClassNode,
|
||||
school_schemas.RoomNode,
|
||||
]
|
||||
|
||||
owners = Union[
|
||||
user_owners,
|
||||
worker_owners,
|
||||
school_owners,
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
import modules.database.schemas.nodes.calendars as calendar_schemas
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
from typing import ClassVar
|
||||
|
||||
# Sequenced Relationships for Calendar
|
||||
class YearFollowsYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_FOLLOWS_YEAR'
|
||||
source: calendar_schemas.CalendarYearNode
|
||||
target: calendar_schemas.CalendarYearNode
|
||||
|
||||
class MonthFollowsMonth(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'MONTH_FOLLOWS_MONTH'
|
||||
source: calendar_schemas.CalendarMonthNode
|
||||
target: calendar_schemas.CalendarMonthNode
|
||||
|
||||
class WeekFollowsWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'WEEK_FOLLOWS_WEEK'
|
||||
source: calendar_schemas.CalendarWeekNode
|
||||
target: calendar_schemas.CalendarWeekNode
|
||||
|
||||
class DayFollowsDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'DAY_FOLLOWS_DAY'
|
||||
source: calendar_schemas.CalendarDayNode
|
||||
target: calendar_schemas.CalendarDayNode
|
||||
|
||||
class TimeChunkFollowsTimeChunk(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TIME_CHUNK_FOLLOWS_TIME_CHUNK'
|
||||
source: calendar_schemas.CalendarTimeChunkNode
|
||||
target: calendar_schemas.CalendarTimeChunkNode
|
||||
@@ -0,0 +1,96 @@
|
||||
import modules.database.schemas.nodes.schools.timetable as neo_timetable
|
||||
import modules.database.schemas.nodes.calendars as neo_calendar
|
||||
import modules.database.schemas.nodes.workers.timetable as neo_teacher_timetable
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
from typing import ClassVar
|
||||
|
||||
class CalendarYearIsAcademicYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_ACADEMIC_YEAR'
|
||||
source: neo_calendar.CalendarYearNode
|
||||
target: neo_timetable.AcademicYearNode
|
||||
|
||||
class AcademicYearIsCalendarYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_CALENDAR_YEAR'
|
||||
source: neo_timetable.AcademicYearNode
|
||||
target: neo_calendar.CalendarYearNode
|
||||
|
||||
class CalendarWeekIsAcademicWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_ACADEMIC_WEEK'
|
||||
source: neo_calendar.CalendarWeekNode
|
||||
target: neo_timetable.AcademicWeekNode
|
||||
|
||||
class AcademicWeekIsCalendarWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_CALENDAR_WEEK'
|
||||
source: neo_timetable.AcademicWeekNode
|
||||
target: neo_calendar.CalendarWeekNode
|
||||
|
||||
class CalendarWeekIsHolidayWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_HOLIDAY_WEEK'
|
||||
source: neo_calendar.CalendarWeekNode
|
||||
target: neo_timetable.HolidayWeekNode
|
||||
|
||||
class HolidayWeekIsCalendarWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_CALENDAR_WEEK'
|
||||
source: neo_timetable.HolidayWeekNode
|
||||
target: neo_calendar.CalendarWeekNode
|
||||
|
||||
class CalendarDayIsAcademicDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_ACADEMIC_DAY'
|
||||
source: neo_calendar.CalendarDayNode
|
||||
target: neo_timetable.AcademicDayNode
|
||||
|
||||
class AcademicDayIsCalendarDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_CALENDAR_DAY'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_calendar.CalendarDayNode
|
||||
|
||||
class CalendarDayIsHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_HOLIDAY_DAY'
|
||||
source: neo_calendar.CalendarDayNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class HolidayDayIsCalendarDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_CALENDAR_DAY'
|
||||
source: neo_timetable.HolidayDayNode
|
||||
target: neo_calendar.CalendarDayNode
|
||||
|
||||
class CalendarDayIsOffTimetableDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_OFF_TIMETABLE_DAY'
|
||||
source: neo_calendar.CalendarDayNode
|
||||
target: neo_timetable.OffTimetableDayNode
|
||||
|
||||
class OffTimetableDayIsCalendarDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_CALENDAR_DAY'
|
||||
source: neo_timetable.OffTimetableDayNode
|
||||
target: neo_calendar.CalendarDayNode
|
||||
|
||||
class CalendarDayIsStaffDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_STAFF_DAY'
|
||||
source: neo_calendar.CalendarDayNode
|
||||
target: neo_timetable.StaffDayNode
|
||||
|
||||
class StaffDayIsCalendarDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_CALENDAR_DAY'
|
||||
source: neo_timetable.StaffDayNode
|
||||
target: neo_calendar.CalendarDayNode
|
||||
|
||||
# New relationships for user timetable
|
||||
class CalendarDayHasTimetableLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_TIMETABLE_LESSON'
|
||||
source: neo_calendar.CalendarDayNode
|
||||
target: neo_teacher_timetable.TimetableLessonNode
|
||||
|
||||
class TimetableLessonBelongsToCalendarDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO_CALENDAR_DAY'
|
||||
source: neo_teacher_timetable.TimetableLessonNode
|
||||
target: neo_calendar.CalendarDayNode
|
||||
|
||||
class CalendarDayHasPlannedLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_PLANNED_LESSON'
|
||||
source: neo_calendar.CalendarDayNode
|
||||
target: neo_teacher_timetable.PlannedLessonNode
|
||||
|
||||
class PlannedLessonBelongsToCalendarDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO_CALENDAR_DAY'
|
||||
source: neo_teacher_timetable.PlannedLessonNode
|
||||
target: neo_calendar.CalendarDayNode
|
||||
@@ -0,0 +1,34 @@
|
||||
import modules.database.schemas.nodes.calendars as calendar_schemas
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
from typing import ClassVar
|
||||
|
||||
## Calendar layer relationships
|
||||
class CalendarIncludesYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'CALENDAR_INCLUDES_YEAR'
|
||||
source: calendar_schemas.CalendarNode
|
||||
target: calendar_schemas.CalendarYearNode
|
||||
|
||||
class YearIncludesMonth(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_INCLUDES_MONTH'
|
||||
source: calendar_schemas.CalendarYearNode
|
||||
target: calendar_schemas.CalendarMonthNode
|
||||
|
||||
class YearIncludesWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_INCLUDES_WEEK'
|
||||
source: calendar_schemas.CalendarYearNode
|
||||
target: calendar_schemas.CalendarWeekNode
|
||||
|
||||
class MonthIncludesDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'MONTH_INCLUDES_DAY'
|
||||
source: calendar_schemas.CalendarMonthNode
|
||||
target: calendar_schemas.CalendarDayNode
|
||||
|
||||
class WeekIncludesDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'WEEK_INCLUDES_DAY'
|
||||
source: calendar_schemas.CalendarWeekNode
|
||||
target: calendar_schemas.CalendarDayNode
|
||||
|
||||
class DayIncludesTimeChunk(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'DAY_INCLUDES_TIME_CHUNK'
|
||||
source: calendar_schemas.CalendarDayNode
|
||||
target: calendar_schemas.CalendarTimeChunkNode
|
||||
@@ -0,0 +1,119 @@
|
||||
from typing import ClassVar
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
|
||||
import modules.database.schemas.nodes.schools.pastoral as pastoral_nodes
|
||||
import modules.database.schemas.nodes.schools.curriculum as curriculum_nodes
|
||||
import modules.database.schemas.nodes.structures.schools as school_structures
|
||||
|
||||
# Structure layer relationships
|
||||
class CurriculumStructureIncludesKeyStage(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'CURRICULUM_STRUCTURE_INCLUDES_KEY_STAGE'
|
||||
source: school_structures.CurriculumStructureNode
|
||||
target: curriculum_nodes.KeyStageNode
|
||||
|
||||
class PastoralStructureIncludesYearGroup(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'PASTORAL_STRUCTURE_INCLUDES_YEAR_GROUP'
|
||||
source: school_structures.PastoralStructureNode
|
||||
target: pastoral_nodes.YearGroupNode
|
||||
|
||||
## Curriculum layer relationships
|
||||
class SubjectForKeyStage(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'SUBJECT_FOR_KEY_STAGE'
|
||||
source: curriculum_nodes.SubjectNode
|
||||
target: curriculum_nodes.KeyStageNode
|
||||
|
||||
class SubjectHasYearGroupSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'SUBJECT_HAS_YEAR_GROUP_SYLLABUS'
|
||||
source: curriculum_nodes.SubjectNode
|
||||
target: pastoral_nodes.YearGroupSyllabusNode
|
||||
|
||||
class SubjectHasKeyStageSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'SUBJECT_HAS_KEY_STAGE_SYLLABUS'
|
||||
source: curriculum_nodes.SubjectNode
|
||||
target: curriculum_nodes.KeyStageSyllabusNode
|
||||
|
||||
class TopicPartOfYearGroupSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_SYLLABUS_INCLUDES_TOPIC'
|
||||
source: pastoral_nodes.YearGroupSyllabusNode
|
||||
target: curriculum_nodes.TopicNode
|
||||
|
||||
class KeyStageSyllabusIncludesTopic(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_SYLLABUS_INCLUDES_TOPIC'
|
||||
source: curriculum_nodes.KeyStageSyllabusNode
|
||||
target: curriculum_nodes.TopicNode
|
||||
|
||||
class YearGroupHasYearGroupSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_HAS_YEAR_GROUP_SYLLABUS'
|
||||
source: pastoral_nodes.YearGroupNode
|
||||
target: pastoral_nodes.YearGroupSyllabusNode
|
||||
|
||||
class KeyStageSyllabusIncludesYearGroupSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_SYLLABUS_INCLUDES_YEAR_GROUP_SYLLABUS'
|
||||
source: curriculum_nodes.KeyStageSyllabusNode
|
||||
target: pastoral_nodes.YearGroupSyllabusNode
|
||||
|
||||
class KeyStageIncludesKeyStageSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_INCLUDES_KEY_STAGE_SYLLABUS'
|
||||
source: curriculum_nodes.KeyStageNode
|
||||
target: curriculum_nodes.KeyStageSyllabusNode
|
||||
|
||||
class KeyStageIncludesTopic(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_INCLUDES_TOPIC'
|
||||
source: curriculum_nodes.KeyStageNode
|
||||
target: curriculum_nodes.TopicNode
|
||||
|
||||
class SubjectIncludesTopic(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'SUBJECT_INCLUDES_TOPIC'
|
||||
source: curriculum_nodes.SubjectNode
|
||||
target: curriculum_nodes.TopicNode
|
||||
|
||||
class TopicIncludesTopicLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TOPIC_INCLUDES_LESSON'
|
||||
source: curriculum_nodes.TopicNode
|
||||
target: curriculum_nodes.TopicLessonNode
|
||||
|
||||
class TopicIncludesLearningStatement(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TOPIC_INCLUDES_LEARNING_STATEMENT'
|
||||
source: curriculum_nodes.TopicNode
|
||||
target: curriculum_nodes.LearningStatementNode
|
||||
|
||||
class LessonIncludesLearningStatement(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'LESSON_INCLUDES_LEARNING_STATEMENT'
|
||||
source: curriculum_nodes.TopicLessonNode
|
||||
target: curriculum_nodes.LearningStatementNode
|
||||
|
||||
# Science-specific curriculum layer relationships
|
||||
class TopicLessonIncludesScienceLab(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'LESSON_INCLUDES_SCIENCE_LAB'
|
||||
source: curriculum_nodes.TopicLessonNode
|
||||
target: curriculum_nodes.ScienceLabNode
|
||||
|
||||
class KeyStageFollowsKeyStage(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_FOLLOWS_KEY_STAGE'
|
||||
source: curriculum_nodes.KeyStageNode
|
||||
target: curriculum_nodes.KeyStageNode
|
||||
|
||||
class YearGroupFollowsYearGroup(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_FOLLOWS_YEAR_GROUP'
|
||||
source: pastoral_nodes.YearGroupNode
|
||||
target: pastoral_nodes.YearGroupNode
|
||||
|
||||
class KeyStageSyllabusFollowsKeyStageSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'KEY_STAGE_SYLLABUS_FOLLOWS_KEY_STAGE_SYLLABUS'
|
||||
source: curriculum_nodes.KeyStageSyllabusNode
|
||||
target: curriculum_nodes.KeyStageSyllabusNode
|
||||
|
||||
class YearGroupSyllabusFollowsYearGroupSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_SYLLABUS_FOLLOWS_YEAR_GROUP_SYLLABUS'
|
||||
source: pastoral_nodes.YearGroupSyllabusNode
|
||||
target: pastoral_nodes.YearGroupSyllabusNode
|
||||
|
||||
class TopicLessonFollowsTopicLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'LESSON_FOLLOWS_LESSON'
|
||||
source: curriculum_nodes.TopicLessonNode
|
||||
target: curriculum_nodes.TopicLessonNode
|
||||
|
||||
class YearGroupSyllabusIncludesTopic(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'YEAR_GROUP_SYLLABUS_INCLUDES_TOPIC'
|
||||
source: pastoral_nodes.YearGroupSyllabusNode
|
||||
target: curriculum_nodes.TopicNode
|
||||
@@ -0,0 +1,15 @@
|
||||
from typing import ClassVar
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
|
||||
import modules.database.schemas.nodes.schools.schools as school_nodes
|
||||
import modules.database.schemas.nodes.structures.schools as school_structures
|
||||
|
||||
class SchoolHasCurriculumStructure(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_CURRICULUM_STRUCTURE'
|
||||
source: school_nodes.SchoolNode
|
||||
target: school_structures.CurriculumStructureNode
|
||||
|
||||
class SchoolHasPastoralStructure(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_PASTORAL_STRUCTURE'
|
||||
source: school_nodes.SchoolNode
|
||||
target: school_structures.PastoralStructureNode
|
||||
@@ -0,0 +1,49 @@
|
||||
from typing import ClassVar, Union
|
||||
import modules.database.schemas.entities as entities
|
||||
import modules.database.schemas.nodes.users as user_nodes
|
||||
import modules.database.schemas.nodes.workers.workers as worker_nodes
|
||||
import modules.database.schemas.nodes.schools.schools as school_nodes
|
||||
import modules.database.schemas.nodes.schools.curriculum as curriculum_nodes
|
||||
import modules.database.schemas.nodes.structures.schools as school_structures
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
|
||||
class UserIsSchoolWorker(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_SCHOOL_WORKER'
|
||||
source: user_nodes.UserNode
|
||||
target: Union[worker_nodes.SchoolAdminNode, worker_nodes.TeacherNode, worker_nodes.StudentNode]
|
||||
|
||||
class UserIsSystemWorker(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'IS_SYSTEM_WORKER'
|
||||
source: user_nodes.UserNode
|
||||
target: Union[worker_nodes.DeveloperNode, worker_nodes.SuperAdminNode]
|
||||
|
||||
class EntityBelongsToSchool(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO'
|
||||
source: Union[entities.worker_entities, entities.school_entities]
|
||||
target: entities.school_entities
|
||||
|
||||
class EntityBelongsToDepartment(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO'
|
||||
source: entities.worker_entities
|
||||
target: school_nodes.DepartmentNode
|
||||
|
||||
class SchoolHasDepartmentStructure(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_DEPARTMENT_STRUCTURE'
|
||||
source: school_nodes.SchoolNode
|
||||
target: school_structures.DepartmentStructureNode
|
||||
|
||||
class DepartmentStructureHasDepartment(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_DEPARTMENT'
|
||||
source: school_structures.DepartmentStructureNode
|
||||
target: school_nodes.DepartmentNode
|
||||
|
||||
class DepartmentManagesKeyStageSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'MANAGES_KEY_STAGE_SYLLABUS'
|
||||
source: school_nodes.DepartmentNode
|
||||
target: curriculum_nodes.KeyStageSyllabusNode
|
||||
|
||||
class DepartmentManagesSubject(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'MANAGES_SUBJECT'
|
||||
source: school_nodes.DepartmentNode
|
||||
target: curriculum_nodes.SubjectNode
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
from typing import ClassVar, Union
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
import modules.database.schemas.nodes.users as user_nodes
|
||||
import modules.database.schemas.nodes.workers.workers as worker_nodes
|
||||
import modules.database.schemas.nodes.schools.schools as school_nodes
|
||||
import modules.database.schemas.nodes.workers.timetable as worker_timetable
|
||||
import modules.database.schemas.nodes.schools.timetable as school_timetable
|
||||
|
||||
class EntityHasTimetable(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_TIMETABLE'
|
||||
source: Union[user_nodes.UserNode, worker_nodes.TeacherNode, worker_nodes.StudentNode, school_nodes.SubjectClassNode]
|
||||
target: worker_timetable.WorkerTimetableNode
|
||||
|
||||
|
||||
class SchoolHasTimetable(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_TIMETABLE'
|
||||
source: school_nodes.SchoolNode
|
||||
target: school_timetable.SchoolTimetableNode
|
||||
@@ -0,0 +1,9 @@
|
||||
from typing import ClassVar, Union
|
||||
import modules.database.schemas.nodes.calendars as calendar_schemas
|
||||
import modules.database.schemas.owners as owner_schemas
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
|
||||
class OwnerHasCalendar(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_CALENDAR'
|
||||
source: owner_schemas.owners
|
||||
target: calendar_schemas.CalendarNode
|
||||
@@ -0,0 +1,48 @@
|
||||
from typing import ClassVar, Union
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
from modules.database.schemas.nodes.schools.timetable import AcademicPeriodNode, RegistrationPeriodNode
|
||||
from modules.database.schemas.nodes.workers.timetable import TeacherTimetableNode, TimetableLessonNode, PlannedLessonNode
|
||||
from modules.database.schemas.nodes.workers.workers import TeacherNode
|
||||
from modules.database.schemas.nodes.schools.schools import SubjectClassNode
|
||||
from modules.database.schemas.nodes.schools.pastoral import YearGroupSyllabusNode
|
||||
|
||||
class TimetableLessonBelongsToPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'LESSON_BELONGS_TO_PERIOD'
|
||||
source: TimetableLessonNode
|
||||
target: Union[AcademicPeriodNode, RegistrationPeriodNode]
|
||||
|
||||
class TimetableLessonHasPlannedLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TIMETABLE_LESSON_HAS_PLANNED_LESSON'
|
||||
source: TimetableLessonNode
|
||||
target: PlannedLessonNode
|
||||
|
||||
class TeacherHasTimetable(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TEACHER_HAS_TIMETABLE'
|
||||
source: TeacherNode
|
||||
target: TeacherTimetableNode
|
||||
|
||||
class TimetableHasClass(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TIMETABLE_HAS_CLASS'
|
||||
source: TeacherTimetableNode
|
||||
target: SubjectClassNode
|
||||
|
||||
class ClassHasLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'CLASS_HAS_LESSON'
|
||||
source: SubjectClassNode
|
||||
target: TimetableLessonNode
|
||||
|
||||
class TimetableLessonFollowsTimetableLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TIMETABLE_LESSON_FOLLOWS_TIMETABLE_LESSON'
|
||||
source: Union[TimetableLessonNode, PlannedLessonNode]
|
||||
target: Union[TimetableLessonNode, PlannedLessonNode]
|
||||
|
||||
|
||||
class PlannedLessonFollowsPlannedLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'PLANNED_LESSON_FOLLOWS_PLANNED_LESSON'
|
||||
source: PlannedLessonNode
|
||||
target: PlannedLessonNode
|
||||
|
||||
class SubjectClassBelongsToYearGroupSyllabus(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'SUBJECT_CLASS_BELONGS_TO_YEAR_GROUP_SYLLABUS'
|
||||
source: SubjectClassNode
|
||||
target: YearGroupSyllabusNode
|
||||
@@ -0,0 +1,11 @@
|
||||
from neontology import BaseRelationship
|
||||
|
||||
class CalendarYearHasNextCalendarYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'CALENDAR_YEAR_HAS_NEXT_CALENDAR_YEAR'
|
||||
source: CalendarYearNode
|
||||
target: CalendarYearNode
|
||||
|
||||
class CalendarYearHasPreviousCalendarYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'CALENDAR_YEAR_HAS_PREVIOUS_CALENDAR_YEAR'
|
||||
source: CalendarYearNode
|
||||
target: CalendarYearNode
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
from neontology import BaseRelationship
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
from neontology import BaseRelationship
|
||||
|
||||
class PlannedLessonHasNextPlannedLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'PLANNED_LESSON_HAS_NEXT_PLANNED_LESSON'
|
||||
source: PlannedLessonNode
|
||||
target: PlannedLessonNode
|
||||
|
||||
class PlannedLessonHasPreviousPlannedLesson(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'PLANNED_LESSON_HAS_PREVIOUS_PLANNED_LESSON'
|
||||
source: PlannedLessonNode
|
||||
target: PlannedLessonNode
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
from neontology import BaseRelationship
|
||||
|
||||
class AcademicTermHasNextTerm(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TERM_HAS_NEXT_TERM'
|
||||
source: TermNode
|
||||
target: TermNode
|
||||
|
||||
class AcademicTermHasPreviousTerm(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'TERM_HAS_PREVIOUS_TERM'
|
||||
source: TermNode
|
||||
target: TermNode
|
||||
|
||||
class AcademicWeekHasNextWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'WEEK_HAS_NEXT_WEEK'
|
||||
source: WeekNode
|
||||
target: WeekNode
|
||||
|
||||
class AcademicWeekHasPreviousWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'WEEK_HAS_PREVIOUS_WEEK'
|
||||
source: WeekNode
|
||||
target: WeekNode
|
||||
|
||||
class AcademicDayHasNextDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'DAY_HAS_NEXT_DAY'
|
||||
source: DayNode
|
||||
target: DayNode
|
||||
|
||||
class AcademicDayHasPreviousDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'DAY_HAS_PREVIOUS_DAY'
|
||||
source: DayNode
|
||||
target: DayNode
|
||||
|
||||
class AcademicPeriodHasNextPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'PERIOD_HAS_NEXT_PERIOD'
|
||||
source: PeriodNode
|
||||
target: PeriodNode
|
||||
|
||||
class AcademicPeriodHasPreviousPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'PERIOD_HAS_PREVIOUS_PERIOD'
|
||||
source: PeriodNode
|
||||
target: PeriodNode
|
||||
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
ClassroomCopilot Structure Relationships
|
||||
This module defines the relationships between schools and structure nodes,
|
||||
as well as between entities and structure nodes.
|
||||
"""
|
||||
|
||||
from typing import ClassVar
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
import modules.database.schemas.nodes.schools.schools as school_nodes
|
||||
import modules.database.schemas.nodes.structures.schools as school_structures
|
||||
import modules.database.schemas.nodes.workers.workers as worker_nodes
|
||||
|
||||
|
||||
class SchoolHasStaffStructure(BaseRelationship):
|
||||
"""Relationship between a school and its staff structure node."""
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_STAFF_STRUCTURE'
|
||||
source: school_nodes.SchoolNode
|
||||
target: school_structures.StaffStructureNode
|
||||
|
||||
|
||||
class SchoolHasStudentStructure(BaseRelationship):
|
||||
"""Relationship between a school and its student structure node."""
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_STUDENT_STRUCTURE'
|
||||
source: school_nodes.SchoolNode
|
||||
target: school_structures.StudentStructureNode
|
||||
|
||||
|
||||
class SchoolHasITAdminStructure(BaseRelationship):
|
||||
"""Relationship between a school and its IT admin structure node."""
|
||||
__relationshiptype__: ClassVar[str] = 'HAS_IT_ADMIN_STRUCTURE'
|
||||
source: school_nodes.SchoolNode
|
||||
target: school_structures.ITAdminStructureNode
|
||||
|
||||
|
||||
class EntityBelongsToStructure(BaseRelationship):
|
||||
"""
|
||||
Relationship between an entity (worker, student, etc.) and a structure node.
|
||||
This is a generic relationship that can be used for any entity type.
|
||||
"""
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE'
|
||||
source: object # Generic source type to allow any entity
|
||||
target: object # Generic target type to allow any structure
|
||||
|
||||
|
||||
# Specific entity-to-structure relationships
|
||||
class SuperAdminBelongsToITAdminStructure(BaseRelationship):
|
||||
"""Relationship between a super admin and the IT admin structure."""
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE'
|
||||
source: worker_nodes.SuperAdminNode
|
||||
target: school_structures.ITAdminStructureNode
|
||||
|
||||
|
||||
class TeacherBelongsToStaffStructure(BaseRelationship):
|
||||
"""Relationship between a teacher and the staff structure."""
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE'
|
||||
source: worker_nodes.TeacherNode
|
||||
target: school_structures.StaffStructureNode
|
||||
|
||||
|
||||
class StudentBelongsToStudentStructure(BaseRelationship):
|
||||
"""Relationship between a student and the student structure."""
|
||||
__relationshiptype__: ClassVar[str] = 'BELONGS_TO_STRUCTURE'
|
||||
source: worker_nodes.StudentNode
|
||||
target: school_structures.StudentStructureNode
|
||||
@@ -0,0 +1,305 @@
|
||||
import modules.database.schemas.nodes.schools.timetable as neo_timetable
|
||||
from modules.database.tools.neontology.baserelationship import BaseRelationship
|
||||
from typing import ClassVar
|
||||
|
||||
# Timetable hierarchy structure relationships
|
||||
class AcademicTimetableHasAcademicYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TIMETABLE_HAS_ACADEMIC_YEAR'
|
||||
source: neo_timetable.SchoolTimetableNode
|
||||
target: neo_timetable.AcademicYearNode
|
||||
|
||||
class AcademicYearHasAcademicTerm(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_YEAR_HAS_ACADEMIC_TERM'
|
||||
source: neo_timetable.AcademicYearNode
|
||||
target: neo_timetable.AcademicTermNode
|
||||
|
||||
class AcademicYearHasAcademicTermBreak(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_YEAR_HAS_ACADEMIC_TERM_BREAK'
|
||||
source: neo_timetable.AcademicYearNode
|
||||
target: neo_timetable.AcademicTermBreakNode
|
||||
|
||||
class AcademicYearHasAcademicWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_YEAR_HAS_ACADEMIC_WEEK'
|
||||
source: neo_timetable.AcademicYearNode
|
||||
target: neo_timetable.AcademicWeekNode
|
||||
|
||||
class AcademicYearHasHolidayWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_YEAR_HAS_HOLIDAY_WEEK'
|
||||
source: neo_timetable.AcademicYearNode
|
||||
target: neo_timetable.HolidayWeekNode
|
||||
|
||||
class AcademicTermHasAcademicWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_HAS_ACADEMIC_WEEK'
|
||||
source: neo_timetable.AcademicTermNode
|
||||
target: neo_timetable.AcademicWeekNode
|
||||
|
||||
class AcademicTermBreakHasHolidayWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_BREAK_HAS_HOLIDAY_WEEK'
|
||||
source: neo_timetable.AcademicTermBreakNode
|
||||
target: neo_timetable.HolidayWeekNode
|
||||
|
||||
class AcademicTermBreakHasHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_BREAK_HAS_HOLIDAY_DAY'
|
||||
source: neo_timetable.AcademicTermBreakNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class AcademicTermHasAcademicDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_HAS_ACADEMIC_DAY'
|
||||
source: neo_timetable.AcademicTermNode
|
||||
target: neo_timetable.AcademicDayNode
|
||||
|
||||
class AcademicTermHasHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_HAS_HOLIDAY_DAY'
|
||||
source: neo_timetable.AcademicTermNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class AcademicTermHasOffTimetableDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_HAS_OFF_TIMETABLE_DAY'
|
||||
source: neo_timetable.AcademicTermNode
|
||||
target: neo_timetable.OffTimetableDayNode
|
||||
|
||||
class AcademicTermHasStaffDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_HAS_STAFF_DAY'
|
||||
source: neo_timetable.AcademicTermNode
|
||||
target: neo_timetable.StaffDayNode
|
||||
|
||||
class AcademicWeekHasAcademicDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_WEEK_HAS_ACADEMIC_DAY'
|
||||
source: neo_timetable.AcademicWeekNode
|
||||
target: neo_timetable.AcademicDayNode
|
||||
|
||||
class AcademicWeekHasHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_WEEK_HAS_HOLIDAY_DAY'
|
||||
source: neo_timetable.AcademicWeekNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class AcademicWeekHasOffTimetableDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_WEEK_HAS_OFF_TIMETABLE_DAY'
|
||||
source: neo_timetable.AcademicWeekNode
|
||||
target: neo_timetable.OffTimetableDayNode
|
||||
|
||||
class AcademicWeekHasStaffDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_WEEK_HAS_STAFF_DAY'
|
||||
source: neo_timetable.AcademicWeekNode
|
||||
target: neo_timetable.StaffDayNode
|
||||
|
||||
class HolidayWeekHasHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HOLIDAY_WEEK_HAS_HOLIDAY_DAY'
|
||||
source: neo_timetable.HolidayWeekNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class AcademicDayHasAcademicPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_HAS_ACADEMIC_PERIOD'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.AcademicPeriodNode
|
||||
|
||||
class AcademicDayHasRegistrationPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_HAS_REGISTRATION_PERIOD'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.RegistrationPeriodNode
|
||||
|
||||
class AcademicDayHasBreakPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_HAS_BREAK_PERIOD'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.BreakPeriodNode
|
||||
|
||||
class AcademicDayHasOffTimetablePeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_HAS_OFF_TIMETABLE_PERIOD'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.OffTimetablePeriodNode
|
||||
|
||||
# Timetable sequence relationships
|
||||
class AcademicYearFollowsAcademicYear(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_YEAR_FOLLOWS_ACADEMIC_YEAR'
|
||||
source: neo_timetable.AcademicYearNode
|
||||
target: neo_timetable.AcademicYearNode
|
||||
|
||||
class AcademicTermFollowsAcademicTermBreak(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_FOLLOWS_ACADEMIC_TERM_BREAK'
|
||||
source: neo_timetable.AcademicTermBreakNode # Term break ends
|
||||
target: neo_timetable.AcademicTermNode # New term starts
|
||||
|
||||
class AcademicTermBreakFollowsAcademicTerm(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_TERM_BREAK_FOLLOWS_ACADEMIC_TERM'
|
||||
source: neo_timetable.AcademicTermNode # Term ends
|
||||
target: neo_timetable.AcademicTermBreakNode # Term break starts
|
||||
|
||||
class AcademicWeekFollowsAcademicWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_WEEK_FOLLOWS_ACADEMIC_WEEK'
|
||||
source: neo_timetable.AcademicWeekNode
|
||||
target: neo_timetable.AcademicWeekNode
|
||||
|
||||
class HolidayWeekFollowsHolidayWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HOLIDAY_WEEK_FOLLOWS_HOLIDAY_WEEK'
|
||||
source: neo_timetable.HolidayWeekNode
|
||||
target: neo_timetable.HolidayWeekNode
|
||||
|
||||
class AcademicWeekFollowsHolidayWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_WEEK_FOLLOWS_HOLIDAY_WEEK'
|
||||
source: neo_timetable.HolidayWeekNode
|
||||
target: neo_timetable.AcademicWeekNode
|
||||
|
||||
class HolidayWeekFollowsAcademicWeek(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HOLIDAY_WEEK_FOLLOWS_ACADEMIC_WEEK'
|
||||
source: neo_timetable.AcademicWeekNode
|
||||
target: neo_timetable.HolidayWeekNode
|
||||
|
||||
class AcademicDayFollowsAcademicDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_FOLLOWS_ACADEMIC_DAY'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.AcademicDayNode
|
||||
|
||||
class AcademicDayFollowsHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_FOLLOWS_HOLIDAY_DAY'
|
||||
source: neo_timetable.HolidayDayNode
|
||||
target: neo_timetable.AcademicDayNode
|
||||
|
||||
class AcademicDayFollowsOffTimetableDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_FOLLOWS_OFF_TIMETABLE_DAY'
|
||||
source: neo_timetable.OffTimetableDayNode
|
||||
target: neo_timetable.AcademicDayNode
|
||||
|
||||
class AcademicDayFollowsStaffDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_DAY_FOLLOWS_STAFF_DAY'
|
||||
source: neo_timetable.StaffDayNode
|
||||
target: neo_timetable.AcademicDayNode
|
||||
|
||||
class HolidayDayFollowsHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HOLIDAY_DAY_FOLLOWS_HOLIDAY_DAY'
|
||||
source: neo_timetable.HolidayDayNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class HolidayDayFollowsAcademicDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HOLIDAY_DAY_FOLLOWS_ACADEMIC_DAY'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class HolidayDayFollowsOffTimetableDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HOLIDAY_DAY_FOLLOWS_OFF_TIMETABLE_DAY'
|
||||
source: neo_timetable.OffTimetableDayNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class HolidayDayFollowsStaffDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'HOLIDAY_DAY_FOLLOWS_STAFF_DAY'
|
||||
source: neo_timetable.StaffDayNode
|
||||
target: neo_timetable.HolidayDayNode
|
||||
|
||||
class OffTimetableDayFollowsOffTimetableDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_DAY_FOLLOWS_OFF_TIMETABLE_DAY'
|
||||
source: neo_timetable.OffTimetableDayNode
|
||||
target: neo_timetable.OffTimetableDayNode
|
||||
|
||||
class OffTimetableDayFollowsAcademicDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_DAY_FOLLOWS_ACADEMIC_DAY'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.OffTimetableDayNode
|
||||
|
||||
class OffTimetableDayFollowsHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_DAY_FOLLOWS_HOLIDAY_DAY'
|
||||
source: neo_timetable.HolidayDayNode
|
||||
target: neo_timetable.OffTimetableDayNode
|
||||
|
||||
class OffTimetableDayFollowsStaffDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_DAY_FOLLOWS_STAFF_DAY'
|
||||
source: neo_timetable.StaffDayNode
|
||||
target: neo_timetable.OffTimetableDayNode
|
||||
|
||||
class StaffDayFollowsStaffDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'STAFF_DAY_FOLLOWS_STAFF_DAY'
|
||||
source: neo_timetable.StaffDayNode
|
||||
target: neo_timetable.StaffDayNode
|
||||
|
||||
class StaffDayFollowsAcademicDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'STAFF_DAY_FOLLOWS_ACADEMIC_DAY'
|
||||
source: neo_timetable.AcademicDayNode
|
||||
target: neo_timetable.StaffDayNode
|
||||
|
||||
class StaffDayFollowsHolidayDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'STAFF_DAY_FOLLOWS_HOLIDAY_DAY'
|
||||
source: neo_timetable.HolidayDayNode
|
||||
target: neo_timetable.StaffDayNode
|
||||
|
||||
class StaffDayFollowsOffTimetableDay(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'STAFF_DAY_FOLLOWS_OFF_TIMETABLE_DAY'
|
||||
source: neo_timetable.OffTimetableDayNode
|
||||
target: neo_timetable.StaffDayNode
|
||||
|
||||
class AcademicPeriodFollowsAcademicPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_PERIOD_FOLLOWS_ACADEMIC_PERIOD'
|
||||
source: neo_timetable.AcademicPeriodNode
|
||||
target: neo_timetable.AcademicPeriodNode
|
||||
|
||||
class AcademicPeriodFollowsBreakPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_PERIOD_FOLLOWS_BREAK_PERIOD'
|
||||
source: neo_timetable.BreakPeriodNode
|
||||
target: neo_timetable.AcademicPeriodNode
|
||||
|
||||
class AcademicPeriodFollowsRegistrationPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_PERIOD_FOLLOWS_REGISTRATION_PERIOD'
|
||||
source: neo_timetable.RegistrationPeriodNode
|
||||
target: neo_timetable.AcademicPeriodNode
|
||||
|
||||
class AcademicPeriodFollowsOffTimetablePeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'ACADEMIC_PERIOD_FOLLOWS_OFF_TIMETABLE_PERIOD'
|
||||
source: neo_timetable.OffTimetablePeriodNode
|
||||
target: neo_timetable.AcademicPeriodNode
|
||||
|
||||
class BreakPeriodFollowsAcademicPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BREAK_PERIOD_FOLLOWS_ACADEMIC_PERIOD'
|
||||
source: neo_timetable.AcademicPeriodNode
|
||||
target: neo_timetable.BreakPeriodNode
|
||||
|
||||
class RegistrationPeriodFollowsAcademicPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'REGISTRATION_PERIOD_FOLLOWS_ACADEMIC_PERIOD'
|
||||
source: neo_timetable.AcademicPeriodNode
|
||||
target: neo_timetable.RegistrationPeriodNode
|
||||
|
||||
class RegistrationPeriodFollowsOffTimetablePeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'REGISTRATION_PERIOD_FOLLOWS_OFF_TIMETABLE_PERIOD'
|
||||
source: neo_timetable.OffTimetablePeriodNode
|
||||
target: neo_timetable.RegistrationPeriodNode
|
||||
|
||||
class OffTimetablePeriodFollowsAcademicPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_PERIOD_FOLLOWS_ACADEMIC_PERIOD'
|
||||
source: neo_timetable.AcademicPeriodNode
|
||||
target: neo_timetable.OffTimetablePeriodNode
|
||||
|
||||
class OffTimetablePeriodFollowsRegistrationPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_PERIOD_FOLLOWS_REGISTRATION_PERIOD'
|
||||
source: neo_timetable.RegistrationPeriodNode
|
||||
target: neo_timetable.OffTimetablePeriodNode
|
||||
|
||||
class OffTimetablePeriodFollowsOffTimetablePeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_PERIOD_FOLLOWS_OFF_TIMETABLE_PERIOD'
|
||||
source: neo_timetable.OffTimetablePeriodNode
|
||||
target: neo_timetable.OffTimetablePeriodNode
|
||||
|
||||
class BreakPeriodFollowsBreakPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BREAK_PERIOD_FOLLOWS_BREAK_PERIOD'
|
||||
source: neo_timetable.BreakPeriodNode
|
||||
target: neo_timetable.BreakPeriodNode
|
||||
|
||||
class BreakPeriodFollowsRegistrationPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BREAK_PERIOD_FOLLOWS_REGISTRATION_PERIOD'
|
||||
source: neo_timetable.RegistrationPeriodNode
|
||||
target: neo_timetable.BreakPeriodNode
|
||||
|
||||
class BreakPeriodFollowsOffTimetablePeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'BREAK_PERIOD_FOLLOWS_OFF_TIMETABLE_PERIOD'
|
||||
source: neo_timetable.OffTimetablePeriodNode
|
||||
target: neo_timetable.BreakPeriodNode
|
||||
|
||||
class RegistrationPeriodFollowsBreakPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'REGISTRATION_PERIOD_FOLLOWS_BREAK_PERIOD'
|
||||
source: neo_timetable.BreakPeriodNode
|
||||
target: neo_timetable.RegistrationPeriodNode
|
||||
|
||||
class OffTimetablePeriodFollowsBreakPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'OFF_TIMETABLE_PERIOD_FOLLOWS_BREAK_PERIOD'
|
||||
source: neo_timetable.BreakPeriodNode
|
||||
target: neo_timetable.OffTimetablePeriodNode
|
||||
|
||||
class RegistrationPeriodFollowsRegistrationPeriod(BaseRelationship):
|
||||
__relationshiptype__: ClassVar[str] = 'REGISTRATION_PERIOD_FOLLOWS_REGISTRATION_PERIOD'
|
||||
source: neo_timetable.RegistrationPeriodNode
|
||||
target: neo_timetable.RegistrationPeriodNode
|
||||
@@ -0,0 +1,27 @@
|
||||
from typing import Union
|
||||
import modules.database.schemas.nodes.structures.users as user_structures
|
||||
import modules.database.schemas.nodes.structures.workers as worker_structures
|
||||
import modules.database.schemas.nodes.structures.schools as school_structures
|
||||
|
||||
user_structures = Union[
|
||||
user_structures.UserCalendarStructureNode,
|
||||
]
|
||||
|
||||
worker_structures = Union[
|
||||
worker_structures.WorkerTimetableStructureNode,
|
||||
]
|
||||
|
||||
school_structures = Union[
|
||||
school_structures.PastoralStructureNode,
|
||||
school_structures.CurriculumStructureNode,
|
||||
school_structures.DepartmentStructureNode,
|
||||
school_structures.SiteStructureNode,
|
||||
school_structures.StaffStructureNode,
|
||||
school_structures.StudentStructureNode,
|
||||
]
|
||||
|
||||
structures = Union[
|
||||
user_structures,
|
||||
worker_structures,
|
||||
school_structures,
|
||||
]
|
||||
Reference in New Issue
Block a user