"""Class for Barcode Checksum Poster resource generator."""

from PIL import Image
from utils.BaseResourceGenerator import BaseResourceGenerator


class BarcodeChecksumPosterResourceGenerator(BaseResourceGenerator):
    """Class for Grid resource generator."""

    additional_valid_options = {
        "barcode_length": ["12", "13"]
    }

    def data(self):
        """Create data for a copy of the Grid resource.

        Returns:
            A dictionary of the one page for the resource.
        """
        image_path = "static/img/resources/barcode-checksum-poster/{}-digits.png"
        image_path = image_path.format(self.requested_options["barcode_length"])
        image = Image.open(image_path)
        return {"type": "image", "data": image}

    @property
    def subtitle(self):
        """Return the subtitle string of the resource.

        Used after the resource name in the filename, and
        also on the resource image.

        Returns:
            text for subtitle (str).
        """
        barcode_length = self.requested_options["barcode_length"]
        return "{} digits - {}".format(barcode_length, super().subtitle)

"""Class for Barcode Checksum Poster resource generator."""

from PIL import Image, ImageDraw
from utils.BaseResourceGenerator import BaseResourceGenerator
from utils.TextBoxDrawer import TextBoxDrawer
from django.utils.translation import ugettext as _


class BarcodeChecksumPosterResourceGenerator(BaseResourceGenerator):
    """Class for Grid resource generator."""

    additional_valid_options = {
        "barcode_length": ["12", "13"]
    }

    def data(self):
        """Create data for a copy of the Grid resource.

        Returns:
            A dictionary of the one page for the resource.
        """
        path = "static/img/resources/barcode-checksum-poster/{}-digits"
        path = path.format(self.requested_options["barcode_length"])
        image_path = "{}.png".format(path)
        svg_path = "{}.svg".format(path)
        image = Image.open(image_path)

        draw = ImageDraw.Draw(image)
        textbox_drawer = TextBoxDrawer(image, draw, svg_path)

        textbox_drawer.write_text_box(
            "title",
            _("13 Digit Barcode"),
            horiz_just="center",
            vert_just="center",
        )

        headings = {
            "heading1": _("Separate!"),
            "heading2": _("Operate!"),
            "heading3": _("Calculate!")
        }

        for heading_id, heading in headings.items():
            textbox_drawer.write_text_box(
                heading_id,
                heading,
            )

        textbox_drawer.write_text_box(
            "paragraph",
            _("Remember that this algorithm uses modulo 10, so we are only "
              "interested in the number in the one's column."),
        )

        return {"type": "image", "data": image}

    @property
    def subtitle(self):
        """Return the subtitle string of the resource.

        Used after the resource name in the filename, and
        also on the resource image.

        Returns:
            text for subtitle (str).
        """
        barcode_length = self.requested_options["barcode_length"]
        return "{} digits - {}".format(barcode_length, super().subtitle)

Modify Barcode Checksum Poster resource to dynamically overlay text
Modify Barcode Checksum Poster resource to dynamically overlay text

  """Class for Barcode Checksum Poster resource generator."""
  
- from PIL import Image
+ from PIL import Image, ImageDraw
  from utils.BaseResourceGenerator import BaseResourceGenerator
+ from utils.TextBoxDrawer import TextBoxDrawer
+ from django.utils.translation import ugettext as _
  
  
  class BarcodeChecksumPosterResourceGenerator(BaseResourceGenerator):
      """Class for Grid resource generator."""
  
      additional_valid_options = {
          "barcode_length": ["12", "13"]
      }
  
      def data(self):
          """Create data for a copy of the Grid resource.
  
          Returns:
              A dictionary of the one page for the resource.
          """
-         image_path = "static/img/resources/barcode-checksum-poster/{}-digits.png"
+         path = "static/img/resources/barcode-checksum-poster/{}-digits"
-         image_path = image_path.format(self.requested_options["barcode_length"])
+         path = path.format(self.requested_options["barcode_length"])
+         image_path = "{}.png".format(path)
+         svg_path = "{}.svg".format(path)
          image = Image.open(image_path)
+ 
+         draw = ImageDraw.Draw(image)
+         textbox_drawer = TextBoxDrawer(image, draw, svg_path)
+ 
+         textbox_drawer.write_text_box(
+             "title",
+             _("13 Digit Barcode"),
+             horiz_just="center",
+             vert_just="center",
+         )
+ 
+         headings = {
+             "heading1": _("Separate!"),
+             "heading2": _("Operate!"),
+             "heading3": _("Calculate!")
+         }
+ 
+         for heading_id, heading in headings.items():
+             textbox_drawer.write_text_box(
+                 heading_id,
+                 heading,
+             )
+ 
+         textbox_drawer.write_text_box(
+             "paragraph",
+             _("Remember that this algorithm uses modulo 10, so we are only "
+               "interested in the number in the one's column."),
+         )
+ 
          return {"type": "image", "data": image}
  
      @property
      def subtitle(self):
          """Return the subtitle string of the resource.
  
          Used after the resource name in the filename, and
          also on the resource image.
  
          Returns:
              text for subtitle (str).
          """
          barcode_length = self.requested_options["barcode_length"]
          return "{} digits - {}".format(barcode_length, super().subtitle)
  
Modify Barcode Checksum Poster resource to dynamically overlay text
## Code Before:
"""Class for Barcode Checksum Poster resource generator."""

from PIL import Image
from utils.BaseResourceGenerator import BaseResourceGenerator


class BarcodeChecksumPosterResourceGenerator(BaseResourceGenerator):
    """Class for Grid resource generator."""

    additional_valid_options = {
        "barcode_length": ["12", "13"]
    }

    def data(self):
        """Create data for a copy of the Grid resource.

        Returns:
            A dictionary of the one page for the resource.
        """
        image_path = "static/img/resources/barcode-checksum-poster/{}-digits.png"
        image_path = image_path.format(self.requested_options["barcode_length"])
        image = Image.open(image_path)
        return {"type": "image", "data": image}

    @property
    def subtitle(self):
        """Return the subtitle string of the resource.

        Used after the resource name in the filename, and
        also on the resource image.

        Returns:
            text for subtitle (str).
        """
        barcode_length = self.requested_options["barcode_length"]
        return "{} digits - {}".format(barcode_length, super().subtitle)

## Instruction:
Modify Barcode Checksum Poster resource to dynamically overlay text
## Code After:
"""Class for Barcode Checksum Poster resource generator."""

from PIL import Image, ImageDraw
from utils.BaseResourceGenerator import BaseResourceGenerator
from utils.TextBoxDrawer import TextBoxDrawer
from django.utils.translation import ugettext as _


class BarcodeChecksumPosterResourceGenerator(BaseResourceGenerator):
    """Class for Grid resource generator."""

    additional_valid_options = {
        "barcode_length": ["12", "13"]
    }

    def data(self):
        """Create data for a copy of the Grid resource.

        Returns:
            A dictionary of the one page for the resource.
        """
        path = "static/img/resources/barcode-checksum-poster/{}-digits"
        path = path.format(self.requested_options["barcode_length"])
        image_path = "{}.png".format(path)
        svg_path = "{}.svg".format(path)
        image = Image.open(image_path)

        draw = ImageDraw.Draw(image)
        textbox_drawer = TextBoxDrawer(image, draw, svg_path)

        textbox_drawer.write_text_box(
            "title",
            _("13 Digit Barcode"),
            horiz_just="center",
            vert_just="center",
        )

        headings = {
            "heading1": _("Separate!"),
            "heading2": _("Operate!"),
            "heading3": _("Calculate!")
        }

        for heading_id, heading in headings.items():
            textbox_drawer.write_text_box(
                heading_id,
                heading,
            )

        textbox_drawer.write_text_box(
            "paragraph",
            _("Remember that this algorithm uses modulo 10, so we are only "
              "interested in the number in the one's column."),
        )

        return {"type": "image", "data": image}

    @property
    def subtitle(self):
        """Return the subtitle string of the resource.

        Used after the resource name in the filename, and
        also on the resource image.

        Returns:
            text for subtitle (str).
        """
        barcode_length = self.requested_options["barcode_length"]
        return "{} digits - {}".format(barcode_length, super().subtitle)
