From 024357a8797e64a19aa4b92c226d1748f6bfa7e5 Mon Sep 17 00:00:00 2001 From: Tomas Pecka <peckato1@fit.cvut.cz> Date: Sat, 30 Jun 2018 19:26:34 +0200 Subject: [PATCH] Move resource to another package --- kosapi/client/kosapi_client.py | 2 +- kosapi/{ => client}/resource/__init__.py | 0 .../{ => client}/resource/resource_builder.py | 0 .../resource/resource_entity_getter.py | 0 .../client/resource/resources_definitions.py | 121 ++++++++++++++++++ .../{ => client}/resource/result_iterator.py | 1 - 6 files changed, 122 insertions(+), 2 deletions(-) rename kosapi/{ => client}/resource/__init__.py (100%) rename kosapi/{ => client}/resource/resource_builder.py (100%) rename kosapi/{ => client}/resource/resource_entity_getter.py (100%) create mode 100644 kosapi/client/resource/resources_definitions.py rename kosapi/{ => client}/resource/result_iterator.py (95%) diff --git a/kosapi/client/kosapi_client.py b/kosapi/client/kosapi_client.py index cbdcd97..c5c9404 100644 --- a/kosapi/client/kosapi_client.py +++ b/kosapi/client/kosapi_client.py @@ -1,4 +1,4 @@ -from kosapi.resource import ResultIterator, ResourceBuilder +from kosapi.client.resource import ResultIterator, ResourceBuilder from .http_client import HttpClient diff --git a/kosapi/resource/__init__.py b/kosapi/client/resource/__init__.py similarity index 100% rename from kosapi/resource/__init__.py rename to kosapi/client/resource/__init__.py diff --git a/kosapi/resource/resource_builder.py b/kosapi/client/resource/resource_builder.py similarity index 100% rename from kosapi/resource/resource_builder.py rename to kosapi/client/resource/resource_builder.py diff --git a/kosapi/resource/resource_entity_getter.py b/kosapi/client/resource/resource_entity_getter.py similarity index 100% rename from kosapi/resource/resource_entity_getter.py rename to kosapi/client/resource/resource_entity_getter.py diff --git a/kosapi/client/resource/resources_definitions.py b/kosapi/client/resource/resources_definitions.py new file mode 100644 index 0000000..ccb9537 --- /dev/null +++ b/kosapi/client/resource/resources_definitions.py @@ -0,0 +1,121 @@ +from kosapi.utils.trie import Trie, TrieNode + + +class ResourceNode(TrieNode): + pass + + +class ResourceDefinitions(Trie): + def add(self, path, *, type=None, feed=False): + if path[0] != "/": + return + path = path[1:] + data = path.split('/') + return super().add(data, type=type, feed=feed) + + def _str_node(self, it): + return str(it.data) + +# ---------------------------------------------------------------------------------------------------------------------- + + +resources = ResourceDefinitions() +resources.add("/branches", type="Branch", feed=True) +resources.add("/branches/{id}", type="Branch") +resources.add("/branches/{id}/studyPlans", type="StudyPlan", feed=True) + +resources.add("/courseEvents", type="CourseEvent", feed=True) +resources.add("/courseEvents/{id}", type="CourseEvent") +resources.add("/courseEvents/{id}/attendees", type="Student", feed=True) + +resources.add("/courses", type="Course", feed=True) +resources.add("/courses/{code}", type="Course") +resources.add("/courses/{code}/events", type="CourseEvent", feed=True) +resources.add("/courses/{code}/exams", type="Exam", feed=True) +resources.add("/courses/{code}/parallels", type="Parallel", feed=True) +resources.add("/courses/{code}/students", type="Student", feed=True) +resources.add("/courses/{code}/instances", type="Coursin", feed=True) +resources.add("/courses/{code}/branches", type="Branch", feed=True) + +resources.add("/coursesGroups", type="CoursesGroup", feed=True) +resources.add("/coursesGroups/{code}", type="CoursesGroup") + +resources.add("/divisions", type="Division", feed=True) +resources.add("/divisions/{code}", type="Division") +resources.add("/divisions/{code}/courses", type="Course", feed=True) +resources.add("/divisions/{code}/subdivisions", type="Division", feed=True) +resources.add("/divisions/{code}/teachers", type="Teacher", feed=True) + +resources.add("/exams", type="Exam", feed=True) +resources.add("/exams/{id}", type="Exam") +resources.add("/exams/{id}/attendees", type="Student", feed=True) + +resources.add("/parallels", type="Parallel", feed=True) +resources.add("/parallels/{id}", type="Parallel") +resources.add("/parallels/{id}/related", type="Parallel", feed=True) +resources.add("/parallels/{id}/students", type="Student", feed=True) + +resources.add("/parameters", type="Parameter", feed=True) +resources.add("/parameters/{key}", type="Parameter") + +resources.add("/pathways", type="Pathway", feed=True) +resources.add("/pathways/{id}", type="Pathway") + +resources.add("/people", type="Person", feed=True) +resources.add("/people/{usernameOrId}", type="Person") + +resources.add("/programmes", type="Programme", feed=True) +resources.add("/programmes/{code}", type="Programme") +resources.add("/programmes/{code}/branches", type="Branch", feed=True) +resources.add("/programmes/{code}/courses", type="Course", feed=True) +resources.add("/programmes/{code}/coursesGroups", type="CoursesGroup", feed=True) +resources.add("/programmes/{code}/studyPlans", type="StudyPlan", feed=True) + +resources.add("/rooms", type="Room", feed=True) +resources.add("/rooms/{code}", type="Room") + +resources.add("/semesters", type="Semester", feed=True) +resources.add("/semesters/{code}", type="Semester") +resources.add("/semesters/current", type="Semester") +resources.add("/semesters/next", type="Semester") +resources.add("/semesters/prev", type="Semester") +resources.add("/semesters/scheduling", type="Semester") + +resources.add("/stateExams", type="StateExam", feed=True) +resources.add("/stateExams/{id}", type="StateExam") + +resources.add("/students", type="Student", feed=True) +resources.add("/students/{studyCodeOrId}", type="Student") +resources.add("/students/{studyCodeOrId}/enrolledCourses", type="CourseEnrollment", feed=True) +resources.add("/students/{studyCodeOrId}/parallels", type="Parallel", feed=True) +resources.add("/students/{studyCodeOrId}/registeredExams", feed=True) +resources.add("/students/{studyCodeOrId}/exams", type="Exam", feed=True) + +resources.add("/studyPlans", type="StudyPlan", feed=True) +resources.add("/studyPlans/{code}", type="StudyPlan") +resources.add("/studyPlans/{code}/coursesGroups", type="CoursesGroup", feed=True) +resources.add("/studyPlans/{code}/pathways", type="Pathway", feed=True) + +resources.add("/teachers", type="Teacher", feed=True) +resources.add("/teachers/{usernameOrId}", type="Teacher") +resources.add("/teachers/{usernameOrId}/courses", type="Course", feed=True) +resources.add("/teachers/{usernameOrId}/parallels", type="Parallel", feed=True) +resources.add("/teachers/{usernameOrId}/exams", type="Exam", feed=True) +resources.add("/teachers/{usernameOrId}/timetable", type="TeacherTimetableSlot", feed=True) + +resources.add("/theses", type="Thesis", feed=True) +resources.add("/theses/{id}", type="Thesis") +resources.add("/theses/{id}/reviews", type="ThesisReview", feed=True) +resources.add("/theses/{id}/files", type="DSpaceFile", feed=True) +resources.add("/theses/{id}/files/main") + +resources.add("/thesesDrafts", type="ThesisDraft", feed=True) +resources.add("/thesesDrafts/{id}", type="ThesisDraft") +resources.add("/thesesDrafts/{id}/applicants", type="Student", feed=True) + +resources.add("/thesesReviews", type="ThesisReview", feed=True) +resources.add("/thesesReviews/{id}", type="ThesisReview") +resources.add("/thesesReviews/{id}/file") + +if __name__ == '__main__': + resources.print() \ No newline at end of file diff --git a/kosapi/resource/result_iterator.py b/kosapi/client/resource/result_iterator.py similarity index 95% rename from kosapi/resource/result_iterator.py rename to kosapi/client/resource/result_iterator.py index 7c85555..64fa233 100644 --- a/kosapi/resource/result_iterator.py +++ b/kosapi/client/resource/result_iterator.py @@ -1,4 +1,3 @@ -from collections import deque from .resource_entity_getter import ResourceEntityGetter -- GitLab