API Reference
- class lectio.Lectio(inst_id: int, username: str, password: str, **kwargs)
The main Lectio class.
A Lectio object is your gateway to manipulating and getting data from Lectio.
- Parameters
inst_id (int) –
Your Lectio institution id.
You can find this by going to your institution’s Lectio login page and it should be in the URL like this:
https://www.lectio.dk/lectio/123/login.aspx
Here, the
123would be my institution id.username (str) – Lectio username for the given institution id.
password (str) – Lectio password for the given institution id.
Models
- class lectio.models.school.School(lectio: Lectio)
A school object.
Represents a school.
Note
This class should not be instantiated directly, but rather through the
lectio.Lectio.get_school()method.Example
import lectio lectio = lectio.Lectio(123, "username", "password") school = lectio.get_school() print(school.name)
- groups: List[None]
List of groups in the school (TODO
- name: str
Name of the school
- get_user_by_id(user_id: int, user_type: Optional[UserType] = None, lazy=False) User
Gets a user by their id
- Parameters
user_id (int) – The id of the user
user_type (
UserType) – The type of the user (student or teacher)lazy (bool) – Whether to return a lazy user object or not (default: False)
- Returns
User object
- Return type
- Raises
exceptions.UserDoesNotExistError – When the user does not exist
- search_for_teachers_by_name(query: str) Generator[User, None, None]
Search for teachers by name or initials
- Parameters
query (str) – Name to search for
- Yields
lectio.models.user.User– Teacher object
- search_for_teachers_by_initials(query: str) Generator[User, None, None]
Search for teachers by initials
- Parameters
query (str) – Initials to search for
- Yields
User – Teacher user object
- search_for_students(query: str) Generator[User, None, None]
Search for user
- Parameters
query (str) – Name to search for
- Yields
User – Student user object
- search_for_users(query: str) Generator[User, None, None]
Search for user
- Parameters
query (str) – Name to search for
- Yields
User – User object
- get_room_by_id(room_id: int) Room
Gets a room by its id
- Parameters
room_id (int) – The id of the room
- Returns
Room object
- Return type
- Raises
exceptions.RoomDoesNotExistError – When the room does not exist
- class lectio.models.user.User(lectio: Lectio, user_id: int, user_type: UserType = UserType.STUDENT, name: str = None, *, lazy=True, **kwargs)
Lectio user object
Represents a lectio user
Note
This class should not be instantiated directly, but rather through the
lectio.Lectio.meorlectio.models.school.School.search_for_users()methods or similar.Note
A
lectio.models.user.Userobject is a lazy object by default, which means that no data is fetched from lectio on instantiation.When you access any non-lazy attribute, the user object will be populated with data from lectio.
- Parameters
lectio (
lectio.Lectio) – Lectio objectuser_id (int) – User id
user_type (
lectio.models.user.UserType) – User type (UserType.STUDENT or UserType.TEACHER)lazy (bool) – Whether to not populate user object on instantiation (default: True)
- id: int
User id
- populated: bool
Whether user object has been populated with data from lectio
If this is False, the user object is a lazy object and only contains available data (often just name and id)
- populate() None
Populate user object
Populates the user object with data from lectio, such as name, class name, etc.
- get_schedule(start_date: datetime, end_date: datetime, strip_time: bool = True) List[Module]
Get schedule for user
Note
As lectio is weird, you can only get a schedule for a range that is less than one month. If you specify a range greater than one month, you will get an empty return list.
TODO: Make this work for ranges greater than one month
- Parameters
start_date (
datetime.datetime) – Start dateend_date (
datetime.datetime) – End datestrip_time (bool) – Whether to remove hours, minutes and seconds from date info, also adds 1 day to end time. Basically just allows you to put in a random time of two days, and still get all modules from all the days including start and end date.
- Returns
List of modules
- Return type
List[Module]
- property url: str
User’s lectio url
- Type
str
- get_image_url() str
Get user’s image url
- Returns
User’s image url
- Return type
str
- get_class_name() Optional[str]
Get user’s class name
Only for
UserType.STUDENT.- Returns
Class name or
Noneif user isUserType.TEACHER.- Return type
str|None
- class lectio.models.user.Me(lectio: Lectio, user_type: UserType = UserType.STUDENT)
Class that represents the logged in user
This method extends the
lectio.models.user.Userclass, and therefore has all the same methods and attributes.Note
This method can be created with the
lectio.Lectio.me()method.- populate() None
Populate user object
Populates the user object with data from lectio, such as name, class name, etc.
- class lectio.models.module.Module(lectio: Lectio, **kwargs)
Lectio module object
Represents a lectio module
- title: Optional[str]
Description of module
- subject: Optional[str]
“Hold” from lectio, bascially which subject.
- teacher: Optional[str]
Initials of teacher.
- room: Optional[str]
Room name of module.
- extra_info: Optional[str]
Extra info from module, includes homework and other info.
- start_time: datetime.datetime
Start time of module
- end_time: datetime.datetime
End time of module
- status: ModuleStatus
Module status
- url: Optional[str]
Url for more info for the module
- get_homework() str
- get_extra_info() str
- get_team() None
Get team
- Returns
Team name
- Return type
TODO
- class lectio.models.room.Room(lectio: Lectio, room_id: int, name: str)
A room object.
Represents a room.
Note
This class should not be instantiated directly, but rather through the
lectio.school.School.get_rooms()method.- Parameters
lectio (Lectio) – Lectio object
id (int) – Room id
name (str) – Room name
- get_schedule(start_date: datetime, end_date: datetime, strip_time: bool) List[Module]
Get schedule for room
Note
As lectio is weird, you can only get a schedule for a range that is less than one month. If you specify a range greater than one month, you will get an empty return list.
- Parameters
start_date (
datetime.datetime) – Start dateend_date (
datetime.datetime) – End datestrip_time (bool) – Whether to remove hours, minutes and seconds from date info, also adds 1 day to end time. Basically just allows you to put in a random time of two days, and still get all modules from all the days including start and end date.
- Returns
List of modules
- Return type
List[Module]
- is_available(date: Optional[datetime] = None) bool
Check if room is available at a given time
- Parameters
datetime (
datetime.datetime) – Datetime to check (defaults to now)
- class lectio.models.absence.Absence(lectio: Lectio)
Class for representing a user’s absences
Note
This class should not be instantiated directly, but rather through the
lectio.models.user.Me.get_absences()method- subjects: List[SubjectAbsenceData]
List of absence data for each subject
- total_absences: AbsenceData
Total absence data (all subjects combined
- toJSON() str
Return a JSON representation of all the absence data
- Returns
JSON string of all the absence data in the following format:
{ "subjects": [...] "total": {...} }
- Return type
str
Misc
- class lectio.models.user.UserType(value)
User types enum
Example
>>> from lectio import Lectio >>> from lectio.models.user import UserType >>> lec = Lectio(123, "username", "password") >>> me = lec.me() >>> print(me.type) <UserType.STUDENT: 0> >>> print(me.type == UserType.STUDENT) True
- STUDENT = 0
Student user type
- TEACHER = 1
Teacher user type
- get_str() str
Get string representation of user type for lectio interface in english
- Returns
String representation of user type
- Return type
str
- class lectio.helpers.schedule.ModuleStatus(value)
Module status enum
- NORMAL = 0
Module has not been changed
- CHANGED = 1
Module has been changed (is green in lectio)
- CANCELLED = 2
Module has been cancelled (is red in lectio)
- class lectio.models.absence.AbsenceData(physical_total: int, physical_absent: int, physical_percentage: float, physical_calculated_total: int, physical_calculated_absent: int, physical_calculated_percentage: float, assignment_total: int, assignment_absent: int, assignment_percentage: float, assignment_calculated_total: int, assignment_calculated_absent: int, assignment_calculated_percentage: float)
Class for representing a subject absence
- physical_total: int
Total number of modules for the entire year
- physical_absent: int
Number of modules absent for the entire year
- physical_percentage: float
Percentage of modules absent for the entire year
- physical_calculated_total: int
Total number of modules until the current date
- physical_calculated_absent: int
Total number of modules absent until the current date
- physical_calculated_percentage: float
Percentage of modules absent until the current date
- assignment_total: int
Total number of student hours (elevtimer) for the entire year
- assignment_absent: int
Total number of student hours absent for the entire year
- assignment_percentage: float
Percentage of student hours absent for the entire year
- assignment_calculated_total: int
Total number of student hours until the current date
- assignment_calculated_absent: int
Total number of student hours absent until the current date
- assignment_calculated_percentage: float
Percentage of student hours absent until the current date
- class lectio.models.absence.SubjectAbsenceData(subject: str, group_id: int, absence_data: AbsenceData)
Class for representing a subject absence
- subject: str
Subject name
- group_id: int
Group id
- absence_data: AbsenceData
Absence data
- property group: None
Return group object
- Type
TODO
Exceptions
Here are all the custom Lectio.py exceptions as well as their explanation
- exception lectio.exceptions.LectioError
Base lectio.py exception
- exception lectio.exceptions.UnauthenticatedError
Throws when trying to get data while unauthenticated or session expired
- exception lectio.exceptions.IncorrectCredentialsError
Incorrect credentials error, mostly thrown in auto-login on session expired
- exception lectio.exceptions.InstitutionDoesNotExistError
The institution with the id you provided does not exist.
- exception lectio.exceptions.UserDoesNotExistError
The user does not exist.
- exception lectio.exceptions.RoomDoesNotExistError
The room does not exist.