Package edupage_api
Sub-modules
edupage_api.classes
edupage_api.classrooms
edupage_api.cloud
edupage_api.compression
edupage_api.custom_request
edupage_api.dbi
edupage_api.exceptions
edupage_api.grades
edupage_api.login
edupage_api.lunches
edupage_api.messages
edupage_api.module
edupage_api.parent
edupage_api.people
edupage_api.ringing
edupage_api.subjects
edupage_api.substitution
edupage_api.timeline
edupage_api.timetables
edupage_api.utils
Classes
class Edupage (request_timeout=5)
-
Initialize
Edupage
object.Args
request_timeout
:int
, optional- Length of request timeout in seconds.
If want to upload bigger files, you will have to increase its value.
Defaults to
5
.
Expand source code
class Edupage(EdupageModule): def __init__(self, request_timeout=5): """Initialize `Edupage` object. Args: request_timeout (int, optional): Length of request timeout in seconds. If want to upload bigger files, you will have to increase its value. Defaults to `5`. """ self.data = None self.is_logged_in = False self.subdomain = None self.gsec_hash = None self.username = None self.session = requests.session() self.session.request = functools.partial( self.session.request, timeout=request_timeout ) def login( self, username: str, password: str, subdomain: str ) -> Optional[TwoFactorLogin]: """Login while specifying the subdomain to log into. Args: username (str): Your username. password (str): Your password. subdomain (str): Subdomain of your school (https://{subdomain}.edupage.org). Returns: Optional[TwoFactorLogin]: Returns `None` if no second factor was needed to login, or the `TwoFactorLogin` object that is used to complete 2fa. """ return Login(self).login(username, password, subdomain) def login_auto(self, username: str, password: str) -> Optional[TwoFactorLogin]: """Login using https://portal.edupage.org. If this doesn't work, please use `Edupage.login`. Args: username (str): Your username. password (str): Your password. Returns: Optional[TwoFactorLogin]: Returns `None` if no second factor was needed to login, or the `TwoFactorLogin` object that is used to complete 2fa. """ return Login(self).login(username, password) def get_students(self) -> Optional[list[EduStudent]]: """Get list of all students in your class. Returns: Optional[list[EduStudent]]: List of `EduStudent`s. """ return People(self).get_students() def get_all_students(self) -> Optional[list[EduStudentSkeleton]]: """Get list of all students in your school. Returns: Optional[list[EduStudentSkeleton]]: List of `EduStudentSkeleton`s. """ return People(self).get_all_students() def get_teachers(self) -> Optional[list[EduTeacher]]: """Get list of all teachers in your school. Returns: Optional[list[EduTeacher]]: List of `EduTeacher`s. """ return People(self).get_teachers() def get_classrooms(self) -> Optional[list[Classroom]]: """Get list of all classrooms in your school. Returns: Optional[list[Classroom]]: List of `Classroom`s. """ return Classrooms(self).get_classrooms() def get_classes(self) -> Optional[list[Class]]: """Get list of all classes in your school. Returns: Optional[list[Class]]: List of `Class`es. """ return Classes(self).get_classes() def get_subjects(self) -> Optional[list[Subject]]: """Get list of all subjects in your school. Returns: Optional[list[Subject]]: List of `Subject`s. """ return Subjects(self).get_subjects() def send_message( self, recipients: Union[list[EduAccount], EduAccount], body: str ) -> int: """Send message. Args: recipients (Optional[list[EduAccount]]): Recipients of your message (list of `EduAccount`s). body (str): Body of your message. Returns: int: The timeline id of the new message. """ return Messages(self).send_message(recipients, body) def get_my_timetable(self, date: date) -> Optional[Timetable]: """Get timetable for the logged-in user on a specified date. Args: date (datetime.date): The date for which you want to get timetable Returns: Optional[Timetable]: `Timetable` object for the specified date, if available; otherwise, `None`. """ return Timetables(self).get_my_timetable(date) def get_lunches(self, date: date) -> Optional[Lunch]: """Get lunches. Args: date (datetime.date): Date from which you want to get lunches. Returns: Optional[Lunch]: Lunch object for entered date. """ return Lunches(self).get_lunch(date) def get_notifications(self) -> list[TimelineEvent]: """Get list of all available notifications. Returns: list[TimelineEvent]: List of `TimelineEvent`s. """ return TimelineEvents(self).get_notifications() def cloud_upload(self, fd: TextIOWrapper) -> EduCloudFile: """Upload file to EduPage cloud. Args: fd (TextIOWrapper): File you want to upload. Returns: EduCloudFile: Object of uploaded file. """ return Cloud(self).upload_file(fd) def get_grades(self) -> list[EduGrade]: """Get a list of all available grades. Returns: list[EduGrade]: List of `EduGrade`s. """ return Grades(self).get_grades(year=None, term=None) def get_grades_for_term(self, year: int, term: Term) -> list[EduGrade]: """Get a list of all available grades for a given year and term Returns: list[EduGrade]: List of `EduGrade`s """ return Grades(self).get_grades(year=year, term=term) def get_user_id(self) -> str: """Get your EduPage user ID. Returns: str: Your EduPage user ID. """ return self.data.get("userid") def custom_request( self, url: str, method: str, data: str = "", headers: dict = {} ) -> Response: """Send custom request to EduPage. Args: url (str): URL endpoint. method (str): Method (`GET` or `POST`). data (str, optional): Request data. Defaults to `""`. headers (dict, optional): Request headers. Defaults to `{}`. Returns: Response: Response. """ return CustomRequest(self).custom_request(url, method, data, headers) def get_missing_teachers(self, date: date) -> list[EduTeacher]: """Get missing teachers for a given date. Args: date (datetime.date): The date you want to get this information for. Returns: list[EduTeacher]: List of the missing teachers for `date`. """ return Substitution(self).get_missing_teachers(date) def get_timetable_changes(self, date: date) -> list[TimetableChange]: """Get the changes in the timetable for a given date. Args: date (datetime.date): The date you want to get this information for. Returns: list[TimetableChange]: List of changes in the timetable. """ return Substitution(self).get_timetable_changes(date) def get_school_year(self) -> int: """Returns the current school year. Returns: int: The starting year of the current school year. """ return Timetables(self).get_school_year() def get_timetable( self, target: Union[EduTeacher, EduStudent, Class, Classroom], date: date, ) -> Optional[Timetable]: """Get timetable of a teacher, student, class, or classroom for a specific date. Args: target (Union[EduTeacher, EduStudent, Class, Classroom]): The target entity whose timetable you want. date (datetime.date): The date for which you want the timetable. Returns: Optional[Timetable]: `Timetable` object for the specified date, if available; otherwise, `None`. """ return Timetables(self).get_timetable(target, date) def get_next_ringing_time(self, date_time: datetime) -> RingingTime: """Get the next lesson's ringing time for given `date_time`. Args: date_time (datetime.datetime): The (date)time you want to get this information for. Returns: RingingTime: The type (break or lesson) and time of the next ringing. """ return RingingTimes(self).get_next_ringing_time(date_time) def switch_to_child(self, child: Union[EduAccount, int]): """Switch to an account of a child - can only be used on parent accounts Args: child (EduAccount | int): The account or `person_id` of the child you want to switch to Note: When you switch to a child account, all other methods will return data as if you were logged in as `child` """ Parent(self).switch_to_child(child) def switch_to_parent(self): """Switches back to your parent account - can only be used on parent accounts""" Parent(self).switch_to_parent() @classmethod def from_session_id(cls, session_id: str, subdomain: str): """Create an `Edupage` instance with a session id and subdomain. Args: session_id (str): The `PHPSESSID` cookie. subdomain (str): Subdomain of the school which cookie is from. Returns: Edupage: A new `Edupage` instance. """ instance = cls() Login(instance).reload_data(subdomain, session_id) return instance
Ancestors
Class variables
var data : dict
var gsec_hash : str
var is_logged_in : bool
var session : requests.sessions.Session
var subdomain : str
var username : str
Static methods
def from_session_id(session_id: str, subdomain: str)
Methods
def cloud_upload(self, fd: _io.TextIOWrapper) ‑> EduCloudFile
-
Upload file to EduPage cloud.
Args
fd
:TextIOWrapper
- File you want to upload.
Returns
EduCloudFile
- Object of uploaded file.
def custom_request(self, url: str, method: str, data: str = '', headers: dict = {}) ‑> requests.models.Response
-
Send custom request to EduPage.
Args
url
:str
- URL endpoint.
method
:str
- Method (
GET
orPOST
). data
:str
, optional- Request data. Defaults to
""
. headers
:dict
, optional- Request headers. Defaults to
{}
.
Returns
Response
- Response.
def get_all_students(self) ‑> Optional[list[EduStudentSkeleton]]
-
Get list of all students in your school.
Returns
Optional[list[EduStudentSkeleton]]
- List of
EduStudentSkeleton
s.
def get_classes(self) ‑> Optional[list[Class]]
-
Get list of all classes in your school.
Returns
Optional[list[Class]]
- List of
Class
es.
def get_classrooms(self) ‑> Optional[list[Classroom]]
-
Get list of all classrooms in your school.
Returns
Optional[list[Classroom]]
- List of
Classroom
s.
def get_grades(self) ‑> list[EduGrade]
-
Get a list of all available grades.
Returns
list[EduGrade]
- List of
EduGrade
s.
def get_grades_for_term(self, year: int, term: Term) ‑> list[EduGrade]
-
Get a list of all available grades for a given year and term
Returns
list[EduGrade]
- List of
EduGrade
s
def get_lunches(self, date: datetime.date) ‑> Optional[Lunch]
-
Get lunches.
Args
date
:datetime.date
- Date from which you want to get lunches.
Returns
Optional[Lunch]
- Lunch object for entered date.
def get_missing_teachers(self, date: datetime.date) ‑> list[EduTeacher]
-
Get missing teachers for a given date.
Args
date
:datetime.date
- The date you want to get this information for.
Returns
list[EduTeacher]
- List of the missing teachers for
date
.
def get_my_timetable(self, date: datetime.date) ‑> Optional[Timetable]
-
Get timetable for the logged-in user on a specified date.
Args
date
:datetime.date
- The date for which you want to get timetable
Returns
Optional[Timetable]
Timetable
object for the specified date, if available; otherwise,None
.
def get_next_ringing_time(self, date_time: datetime.datetime) ‑> RingingTime
-
Get the next lesson's ringing time for given
date_time
.Args
date_time
:datetime.datetime
- The (date)time you want to get this information for.
Returns
RingingTime
- The type (break or lesson) and time of the next ringing.
def get_notifications(self) ‑> list[TimelineEvent]
-
Get list of all available notifications.
Returns
list[TimelineEvent]
- List of
TimelineEvent
s.
def get_school_year(self) ‑> int
-
Returns the current school year.
Returns
int
- The starting year of the current school year.
def get_students(self) ‑> Optional[list[EduStudent]]
-
Get list of all students in your class.
Returns
Optional[list[EduStudent]]
- List of
EduStudent
s.
def get_subjects(self) ‑> Optional[list[Subject]]
-
Get list of all subjects in your school.
Returns
Optional[list[Subject]]
- List of
Subject
s.
def get_teachers(self) ‑> Optional[list[EduTeacher]]
-
Get list of all teachers in your school.
Returns
Optional[list[EduTeacher]]
- List of
EduTeacher
s.
def get_timetable(self, target: Union[EduTeacher, EduStudent, Class, Classroom], date: datetime.date) ‑> Optional[Timetable]
-
Get timetable of a teacher, student, class, or classroom for a specific date.
Args
target
:Union[EduTeacher, EduStudent, Class, Classroom]
- The target entity whose timetable you want.
date
:datetime.date
- The date for which you want the timetable.
Returns
Optional[Timetable]
Timetable
object for the specified date, if available; otherwise,None
.
def get_timetable_changes(self, date: datetime.date) ‑> list[TimetableChange]
-
Get the changes in the timetable for a given date.
Args
date
:datetime.date
- The date you want to get this information for.
Returns
list[TimetableChange]
- List of changes in the timetable.
def get_user_id(self) ‑> str
-
Get your EduPage user ID.
Returns
str
- Your EduPage user ID.
def login(self, username: str, password: str, subdomain: str) ‑> Optional[TwoFactorLogin]
-
Login while specifying the subdomain to log into.
Args
username
:str
- Your username.
password
:str
- Your password.
subdomain
:str
- Subdomain of your school (https://{subdomain}.edupage.org).
Returns
Optional[TwoFactorLogin]
- Returns
None
if no second factor was needed to login,
or the
TwoFactorLogin
object that is used to complete 2fa. def login_auto(self, username: str, password: str) ‑> Optional[TwoFactorLogin]
-
Login using https://portal.edupage.org. If this doesn't work, please use
Edupage.login()
.Args
username
:str
- Your username.
password
:str
- Your password.
Returns
Optional[TwoFactorLogin]
- Returns
None
if no second factor was needed to login,
or the
TwoFactorLogin
object that is used to complete 2fa. def send_message(self, recipients: Union[list[EduAccount], EduAccount], body: str) ‑> int
-
Send message.
Args
recipients
:Optional[list[EduAccount]]
- Recipients of your message (list of
EduAccount
s). body
:str
- Body of your message.
Returns
int
- The timeline id of the new message.
def switch_to_child(self, child: Union[EduAccount, int])
-
Switch to an account of a child - can only be used on parent accounts
Args
child
:EduAccount | int
- The account or
person_id
of the child you want to switch to
Note: When you switch to a child account, all other methods will return data as if you were logged in as
child
def switch_to_parent(self)
-
Switches back to your parent account - can only be used on parent accounts