diff --git a/google_classroom/endpoints/base.py b/google_classroom/endpoints/base.py index 9965ddf..28624ea 100644 --- a/google_classroom/endpoints/base.py +++ b/google_classroom/endpoints/base.py @@ -327,4 +327,14 @@ def sync_data(self, data=None): ) to_create = data[data.alias.isin(left_only.alias)].reset_index(drop=True) to_delete = db_df[db_df.alias.isin(right_only.alias)].reset_index(drop=True) + + for item in to_create.to_dict(orient="records"): + item["ownerId"] = item["teacher_email"] + item["id"] = item["alias"] + del item["teacher_email"] + del item["alias"] + request = self.create_new_item(item) + result = request.execute() + logging.info(f"{self.classname()}: Created class: {result}") + return (to_create, to_delete) diff --git a/google_classroom/endpoints/course.py b/google_classroom/endpoints/course.py index f0d7f02..3078d3a 100644 --- a/google_classroom/endpoints/course.py +++ b/google_classroom/endpoints/course.py @@ -39,3 +39,7 @@ def return_cleaned_sync_data(self): df = df.rename(columns={"id": "courseId"}) df = df[["courseId", "name", "section"]] return df.astype("str") + + def create_new_item(self, course): + course["courseState"] = "ACTIVE" + return self.service.courses().create(body=course) diff --git a/google_classroom/main.py b/google_classroom/main.py index 42f29c6..43a20ad 100644 --- a/google_classroom/main.py +++ b/google_classroom/main.py @@ -162,8 +162,7 @@ def pull_data(config, creds, sql): def sync_all_data(config, creds, sql): classroom_service = build("classroom", "v1", credentials=creds) - (to_create, to_delete) = Courses(classroom_service, sql, config).sync_data() - print("Data syncing is not yet available.") + Courses(classroom_service, sql, config).sync_data() if __name__ == "__main__": diff --git a/tests/mock_response.py b/tests/mock_response.py index dfba985..5e65ee0 100644 --- a/tests/mock_response.py +++ b/tests/mock_response.py @@ -56,6 +56,15 @@ def execute(self): return self.result +class FakeCreateRequest: + def __init__(self, *args, **kwargs): + self.args = args + self.kwargs = kwargs + + def execute(self): + pass + + class FakeEndpoint: def __init__(self, result): self.result = result @@ -66,6 +75,9 @@ def list(self, *args, **kwargs): def get(self, *args, **kwargs): return FakeRequest(self.result, *args, **kwargs) + def create(self, *args, **kwargs): + return FakeCreateRequest(*args, **kwargs) + class FakeService: class Courses(FakeEndpoint):