예제 #1
0
 def test_general_page_str(self):
     page = GeneralPage(
         slug="page",
         name="Page",
         template="template.html",
         url_name="url",
     )
     self.assertEqual(page.__str__(), "Page")
예제 #2
0
 def test_general_page_model_get_absolute_url(self):
     page = GeneralPage(
         slug="page",
         name="Page",
         template="template.html",
         url_name="url",
     )
     self.assertEqual(page.get_absolute_url(), "/valid-url")
예제 #3
0
 def test_general_page_model_type(self):
     page = GeneralPage(
         slug="page",
         name="Page",
         template="template.html",
         url_name="url",
     )
     self.assertEqual(page.model_type(), "General page")
예제 #4
0
 def test_rebuild_index_command_general_page_model(self):
     page = GeneralPage(
         slug="page",
         name="Page",
         template="template.html",
         url_name="url",
     )
     page.save()
     management.call_command("rebuild_index", "--noinput")
예제 #5
0
 def test_rebuild_index_command_general_page_with_invalid_template(self):
     page = GeneralPage(
         slug="page",
         name="Page",
         template="template_without_id.html",
         url_name="url",
     )
     page.save()
     self.assertRaises(TemplateSyntaxError, management.call_command,
                       "rebuild_index", "--noinput")
예제 #6
0
    def load(self):
        """Load general pages.

        Raise:
            MissingRequiredFieldError: when no object can be found with the matching
                attribute.
        """
        general_pages = self.load_yaml_file(self.structure_file_path)

        for (slug, page_data) in general_pages.items():
            try:
                name = page_data["name"]
                template = page_data["template"]
                url_name = page_data["url-name"]
            except (TypeError, KeyError):
                raise MissingRequiredFieldError(self.structure_file_path, [
                    "name",
                    "template",
                    "url-name",
                ], "General page")

            # Check template is valid
            try:
                get_template(template)
            except TemplateDoesNotExist:
                raise InvalidYAMLValueError(self.structure_file_path,
                                            "template",
                                            "A valid template file path")

            # Check URL name is valid
            try:
                reverse(url_name)
            except NoReverseMatch:
                raise InvalidYAMLValueError(
                    self.structure_file_path, "url-name",
                    "A URL name listed in 'csunplugged/general/urls.py'")

            general_page = GeneralPage(
                slug=slug,
                name=name,
                template=template,
                url_name=url_name,
            )
            general_page.save()
            self.log("Added general page: {}".format(name))
        self.log("All general pages loaded!\n")