diff --git a/docs/changelog.rst b/docs/changelog.rst index 565b0521..62e14340 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1 +1,4 @@ -.. include:: ../CHANGELOG.rst +Changelog +========= + +Changes are tracked via `GitHub Releases `_. diff --git a/docs/conf.py b/docs/conf.py index 1e75f0ea..c14b2abd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -11,6 +11,7 @@ All configuration values have a default; values that are commented out serve to show the default. """ + import os import re import sys diff --git a/xblock_pdf/__init__.py b/xblock_pdf/__init__.py index ae2b9e92..f41b34bc 100644 --- a/xblock_pdf/__init__.py +++ b/xblock_pdf/__init__.py @@ -1,3 +1,3 @@ """Init for PDFBlock.""" -from .pdf import PDFBlock +from .pdf import PDFBlock as PDFBlock diff --git a/xblock_pdf/pdf.py b/xblock_pdf/pdf.py index 91a27c25..7266b25f 100644 --- a/xblock_pdf/pdf.py +++ b/xblock_pdf/pdf.py @@ -1,4 +1,5 @@ """pdfXBlock main Python class.""" + import json from django.utils.translation import gettext_noop as _ @@ -13,7 +14,7 @@ resource_loader = ResourceLoader(__name__) -@XBlock.needs('i18n') +@XBlock.needs("i18n") class PDFBlock(XBlock): """PDF XBlock. Allows authors to embed PDFs in their courses.""" @@ -23,21 +24,21 @@ class PDFBlock(XBlock): display_name=_("Display Name"), default=_("PDF"), scope=Scope.settings, - help=_("This name appears in the horizontal navigation at the top of the page.") + help=_("This name appears in the horizontal navigation at the top of the page."), ) url = String( display_name=_("PDF URL"), default=_("https://tutorial.math.lamar.edu/pdf/Trig_Cheat_Sheet.pdf"), scope=Scope.content, - help=_("The URL for your PDF.") + help=_("The URL for your PDF."), ) allow_download = Boolean( display_name=_("PDF Download Allowed"), default=True, scope=Scope.content, - help=_("Display a download button for this PDF.") + help=_("Display a download button for this PDF."), ) source_text = String( @@ -47,7 +48,7 @@ class PDFBlock(XBlock): help=_( "Add a download link for the source file of your PDF. " "Use it for example to provide the PowerPoint file used to create this PDF." - ) + ), ) source_url = String( @@ -57,38 +58,38 @@ class PDFBlock(XBlock): help=_( "Add a download link for the source file of your PDF. " "Use it for example to provide the PowerPoint file used to create this PDF." - ) + ), ) @property def raw_settings(self): """Get the raw settings of the XBlock as a dictionary.""" return { - 'display_name': self.display_name, - 'url': self.url, - 'allow_download': self.allow_download, - 'disable_all_download': is_all_download_disabled(), - 'source_text': self.source_text, - 'source_url': self.source_url, + "display_name": self.display_name, + "url": self.url, + "allow_download": self.allow_download, + "disable_all_download": is_all_download_disabled(), + "source_text": self.source_text, + "source_url": self.source_url, } def student_view(self, context=None): # pylint: disable=unused-argument """Primary view of the XBlock, shown to students when viewing courses.""" html = resource_loader.render_django_template( - 'templates/html/pdf_view.html', + "templates/html/pdf_view.html", context=self.raw_settings, i18n_service=self.runtime.service(self, "i18n"), ) - event_type = 'edx.pdf.loaded' + event_type = "edx.pdf.loaded" event_data = { - 'url': self.url, - 'source_url': self.source_url, + "url": self.url, + "source_url": self.source_url, } self.runtime.publish(self, event_type, event_data) frag = Fragment(html) frag.add_javascript(resource_loader.load_unicode("static/js/pdf_view.js")) - frag.initialize_js('pdfXBlockInitView') + frag.initialize_js("pdfXBlockInitView") return frag def studio_view(self, context=None): @@ -98,49 +99,49 @@ def studio_view(self, context=None): Shown to teachers when editing the XBlock. """ context = { - 'display_name': self.display_name, - 'url': self.url, - 'allow_download': self.allow_download, - 'disable_all_download': is_all_download_disabled(), - 'source_text': self.source_text, - 'source_url': self.source_url + "display_name": self.display_name, + "url": self.url, + "allow_download": self.allow_download, + "disable_all_download": is_all_download_disabled(), + "source_text": self.source_text, + "source_url": self.source_url, } html = resource_loader.render_django_template( - 'templates/html/pdf_edit.html', + "templates/html/pdf_edit.html", context=context, i18n_service=self.runtime.service(self, "i18n"), ) frag = Fragment(html) frag.add_javascript(resource_loader.load_unicode("static/js/pdf_edit.js")) - frag.initialize_js('pdfXBlockInitEdit') + frag.initialize_js("pdfXBlockInitEdit") return frag @XBlock.json_handler - def on_download(self, data, suffix=''): # pylint: disable=unused-argument + def on_download(self, data, suffix=""): # pylint: disable=unused-argument """Download file event handler.""" - event_type = 'edx.pdf.downloaded' + event_type = "edx.pdf.downloaded" event_data = { - 'url': self.url, - 'source_url': self.source_url, + "url": self.url, + "source_url": self.source_url, } self.runtime.publish(self, event_type, event_data) @XBlock.handler def load_pdf(self, *_args, **_kwargs): """Get the PDF block's settings in JSON format.""" - return Response(json.dumps(self.raw_settings), content_type='application/json', charset='utf8') + return Response(json.dumps(self.raw_settings), content_type="application/json", charset="utf8") @XBlock.json_handler - def save_pdf(self, data, suffix=''): # pylint: disable=unused-argument + def save_pdf(self, data, suffix=""): # pylint: disable=unused-argument """Save handler.""" - self.display_name = data['display_name'] - self.url = data['url'] + self.display_name = data["display_name"] + self.url = data["url"] if not is_all_download_disabled(): - self.allow_download = bool_from_str(data['allow_download']) - self.source_text = data['source_text'] - self.source_url = data['source_url'] + self.allow_download = bool_from_str(data["allow_download"]) + self.source_text = data["source_text"] + self.source_url = data["source_url"] return { - 'result': 'success', + "result": "success", } diff --git a/xblock_pdf/tests/test_pdf.py b/xblock_pdf/tests/test_pdf.py index f02ddd47..87fdb57c 100644 --- a/xblock_pdf/tests/test_pdf.py +++ b/xblock_pdf/tests/test_pdf.py @@ -1,9 +1,10 @@ """Tests for the PDF Block""" + import json from typing import Any, Optional from unittest.mock import MagicMock, patch -from django.test import TestCase, override_settings +from django.test import override_settings from xblock.field_data import DictFieldData from xblock.fields import ScopeIds from xblock.test.toy_runtime import ToyRuntime @@ -41,7 +42,6 @@ def mock_handle_request(data: Optional[dict[str, Any]] = None, method: str = "PO def test_defaults_render(): """Test the basic view loads.""" - scope_ids = ScopeIds("1", "2", "3", "4") block = make_block() content = get_student_content(block) assert '