{"id":24844,"library":"xblock-google-drive","title":"xblock-google-drive","description":"An XBlock for embedding Google Documents (Docs, Sheets, Slides, Forms) and Google Calendar within an Open edX course. Current version 0.8.2, requires Python >=3.12, follows Open edX release cadence.","status":"active","version":"0.8.2","language":"python","source_language":"en","source_url":"https://github.com/openedx/xblock-google-drive","tags":["xblock","openedx","google-drive","google-calendar","edx"],"install":[{"cmd":"pip install xblock-google-drive","lang":"bash","label":"PyPI install"}],"dependencies":[{"reason":"Core dependency for all XBlocks","package":"XBlock","optional":false},{"reason":"Web framework used by edX platform","package":"Django","optional":false}],"imports":[{"note":"Class is inside google_drive module, not package __init__","wrong":"from xblock_google_drive import GoogleDriveBlock","symbol":"GoogleDriveBlock","correct":"from xblock_google_drive.google_drive import GoogleDriveBlock"},{"note":"Separate block class in its own module","wrong":"from xblock_google_drive.google_drive import GoogleCalendarBlock","symbol":"GoogleCalendarBlock","correct":"from xblock_google_drive.google_calendar import GoogleCalendarBlock"}],"quickstart":{"code":"from xblock_google_drive.google_drive import GoogleDriveBlock\nfrom xblock_google_drive.google_calendar import GoogleCalendarBlock\n\n# Typically used within an edX modulestore; direct instantiation is rare.\n# Example configuration:\nblock = GoogleDriveBlock()\nblock.document_id = '1abc...'  # Google Doc ID from URL\nblock.display_name = 'My Doc'","lang":"python","description":"Import the block classes and configure with Google document ID or calendar ID."},"warnings":[{"fix":"Downgrade: pip install 'xblock-google-drive<=0.8.1'","message":"Requires Python >=3.12 as of v0.8.2. If your edX platform runs Python 3.8-3.11, pin to <=0.8.1 or use v0.8.0 which supports Python 3.8-3.11.","severity":"gotcha","affected_versions":">=0.8.2"},{"fix":"Use Atlas-compatible translation workflow; remove locale files from repo if previously used.","message":"Removed locale files and Transifex integration in v0.7.0 (OEP-58). Translations now managed via Atlas; custom translation overrides may break.","severity":"breaking","affected_versions":">=0.7.0"},{"fix":"Migrate to direct XBlock base class or include xblockutils explicitly if needed.","message":"Removed xblockutils dependency in v0.5.0. Code that relied on xblockutils compat wrappers (e.g., XBlockWithMixins) may need adaptation.","severity":"breaking","affected_versions":">=0.5.0"},{"fix":"Upgrade Python environment to 3.12; or pin to older releases.","message":"Python 3.8 support dropped in v0.8.0. Python 3.11 support dropped in v0.8.2. Ensure your Python versions are compatible.","severity":"deprecated","affected_versions":">=0.8.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Install: pip install xblock-google-drive. Then import with underscores: from xblock_google_drive import ...","cause":"Package not installed or import path incorrect (underscore vs hyphen).","error":"ModuleNotFoundError: No module named 'xblock_google_drive'"},{"fix":"Use correct import: from xblock_google_drive.google_drive import GoogleDriveBlock","cause":"GoogleDriveBlock is not exported from package __init__.py.","error":"AttributeError: module 'xblock_google_drive' has no attribute 'GoogleDriveBlock'"},{"fix":"Configure Django settings before importing block: import django; django.conf.settings.configure(); django.setup()","cause":"Trying to use block outside an edX environment without setting up Django settings.","error":"django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured."}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}