{"id":20037834,"url":"https://github.com/openedx/xblock-google-drive","last_synced_at":"2026-03-17T20:04:23.198Z","repository":{"id":23083804,"uuid":"26437605","full_name":"openedx/xblock-google-drive","owner":"openedx","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-16T14:55:28.000Z","size":279,"stargazers_count":14,"open_issues_count":0,"forks_count":41,"subscribers_count":26,"default_branch":"master","last_synced_at":"2026-03-17T02:32:28.003Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openedx.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-11-10T13:34:07.000Z","updated_at":"2026-03-16T14:55:42.000Z","dependencies_parsed_at":"2024-02-27T02:29:40.960Z","dependency_job_id":"fbd24386-e652-464f-8d65-a48661658dc5","html_url":"https://github.com/openedx/xblock-google-drive","commit_stats":null,"previous_names":["edx-solutions/xblock-google-drive"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/openedx/xblock-google-drive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxblock-google-drive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxblock-google-drive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxblock-google-drive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxblock-google-drive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openedx","download_url":"https://codeload.github.com/openedx/xblock-google-drive/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openedx%2Fxblock-google-drive/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30630034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T17:32:55.572Z","status":"ssl_error","status_checked_at":"2026-03-17T17:32:38.732Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T10:23:14.286Z","updated_at":"2026-03-17T20:04:23.183Z","avatar_url":"https://github.com/openedx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Google Drive \u0026 Calendar XBlock |Build Status|\n---------------------------------------------\n\nThis XBlock allows embedding of Google documents and calendar, within an\nedX course.\n\nInstallation\n------------\n\nInstall the requirements into the python virtual environment of your\n``edx-platform`` installation by running the following command from the\nroot folder:\n\n.. code:: bash\n\n    $ make requirements\n\nEnabling in Studio\n------------------\n\nYou can enable the Google Drive \u0026 Calendar XBlock in studio through the\nadvanced settings.\n\n1. From the main page of a specific course, navigate to\n   ``Settings -\u003e    Advanced Settings`` from the top menu.\n2. Check for the ``advanced_modules`` policy key, and add\n   ``\"google-document\"`` and ``\"google-calendar\"`` to the policy value\n   list.\n3. Click the \"Save changes\" button.\n\nWorkbench installation and settings\n-----------------------------------\n\nInstall to the workbench's virtualenv by running the following command\nform the google-drive repo root:\n\n.. code:: bash\n\n    pip install -r requirements/base.in\n    pip install -e .\n\nRunning the workbench\n---------------------\n\n.. code:: bash\n\n    $ ./manage.py runserver 8000\n\nAccess it at `http://localhost:8000/ \u003chttp://localhost:8000\u003e`__.\n\nRunning tests\n-------------\n\nFrom google-drive directory, run the tests with the following command:\n\n.. code:: bash\n\n    $ pytest\n\nIf you want to run only the integration or the unit tests, append the\ndirectory to the command. You can also run separate modules in this\nmanner.\n\n.. code:: bash\n\n    $ pytest tests/unit\n\nTo see the coverage report in HTML format, run the tests using the\nfollowing command:\n\n.. code:: bash\n\n    $ make coverage\n\nIf you have not installed the xblock-sdk in the active virtualenv, you\nmight also have to prepend ``PYTHONPATH=\".:/path/to/xblock\"`` to the\ncommand above. (``/path/to/xblock`` is the path to the xblock-sdk, where\nthe workbench resides).\n\n.. _Internationalization Support: https://docs.openedx.org/en/latest/developers/references/developer_guide/internationalization/i18n.html\n.. _Open edX XBlock Tutorial: https://xblock-tutorial.readthedocs.io/en/latest/\n.. _Transifex authentication file: https://openedx.atlassian.net/wiki/display/OpenOPS/Running+Fullstack\n\nChanges to be documented\n------------------------\n\n1. Calendar width is set to 100% of parent element's width; this\n   optimizes the display of google document content within the LMS user\n   interface\n2. Max width of Google images is set to 100% to prevent images from\n   overflowing outside the parent element's boundaries\n3. Since Google WordProcessing documents and Spreadsheets don't allow\n   users to explicitly define width and height, their width is set to\n   100%. Also, min height is set to 450px, so that documents and/or\n   spreadsheets with larger number of rows are displayed in their\n   natural size. Overflow scroll is automatically turned on when the\n   height of the document becomes larger than the height of the parent.\n\nValidation\n----------\n\nEach time a character is added to or removed from Google Calendar ID,\nvalidation takes place. Analogically, validation takes place for\nembedded code of Google Drive File.\n\n1. Google calendar IDs are being validated against a regular expression.\n   IDs must contain at least one '@' character, with at least one\n   character on each side of it, ie. 'a@a'.\n\n2. Embedded code of Google Drive file is being validated on the server\n   side, by checking the status code of the HTTP response. Since error\n   status codes start with 400, it's assumed that each status code\n   that's larger than or equal to 400 states that file is invalid. If\n   for any reason exception occurs while getting an HTTP response, error\n   code is returned, thus overriding default signalization that is\n   invoked by edx platform when the 500 status code is reported.\n\nAccessibility (a11y)\n--------------------\n\nFor users with a visual impairment:\n\n1. Iframes in which Google calendars and Google Drive files (except\n   images) are shown now have title attribute with alternative text\n   content which describes what the iframe contains.\n2. Images have alt attribute which contains alternative text that has\n   the same purpose as the title attribute of an iframe has\n\nAnalytics\n---------\n\nFor analytics purposes, each time an image or iframe containing a\ncalendar or Google Drive file is loaded, an event will be triggered.\n\nThere are two types of events:\n\n1. edx.googlecomponent.calendar.displayed (if an iframe containing a\n   Google calendar is loaded)\n2. edx.googlecomponent.document.displayed (if an image or an iframe\n   containing a Google Drive File is loaded)\n\nLicense\n-------\n\nThe Google Drive \u0026 Calendar XBlocks are available under the GNU Affero\nGeneral Public License (AGPLv3).\n\n.. |Build Status| image:: https://travis-ci.org/edx-solutions/xblock-google-drive.svg?branch=master\n   :target: https://travis-ci.org/edx-solutions/xblock-google-drive\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fxblock-google-drive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenedx%2Fxblock-google-drive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenedx%2Fxblock-google-drive/lists"}