diff options
author | Matthew Lemon <y@yulqen.org> | 2024-10-15 21:01:31 +0100 |
---|---|---|
committer | Matthew Lemon <y@yulqen.org> | 2024-10-15 21:01:31 +0100 |
commit | eeaddb27560d723ca7d61359744ceb2709fccd2d (patch) | |
tree | 04ddbc49ae7b73d5f5a9e1716d7227aecd3b9f85 /pyblackbird_cc/resources/models.py | |
parent | 7a3044c859043837e6c7c95bb4894d04e9b2cbc2 (diff) |
Renamed from pyblackbird_cc to alphabetlearning - everywhere
Diffstat (limited to 'pyblackbird_cc/resources/models.py')
-rw-r--r-- | pyblackbird_cc/resources/models.py | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/pyblackbird_cc/resources/models.py b/pyblackbird_cc/resources/models.py deleted file mode 100644 index 3dfad06..0000000 --- a/pyblackbird_cc/resources/models.py +++ /dev/null @@ -1,201 +0,0 @@ -from django.conf import settings -from django.db import models -from django.urls import reverse - -from .s3 import get_presigned_obj_url - -CURRICULUM_CHOICES = [ - ("No curriculum", "No curriculum"), - ("English", "English"), - ("Scottish", "Scottish"), -] - -AGE_RANGE_CHOICES = [ - ("Preschool (3-4yrs)", "Preschool (3-4yrs)"), - ("Nursery (2-5yrs)", "Nursery (2-5yrs)"), - ("Reception (4-5yrs)", "Reception (4-5yrs)"), - ("Year 1 (5-6yrs)", "Year 1 (5-6yrs)"), - ("Year 2 (6-7yrs)", "Year 2 (6-7yrs)"), - ("Early Years (0-5yrs)", "Early Years (0-5yrs)"), - ("Keystage 1 (5-7yrs)", "Keystage 1 (5-7yrs)"), - ("Keystage 2 (7-11yrs)", "Keystage 2 (7-11yrs)"), - ("Age not applicable", "Age not applicable"), -] - -DESC_HELP_TEXT = """ - <strong>Markdown acceptable here!</strong>This is your opportunity to clearly explain what - your resource is all about! It’s worth remembering that you are using the space to - communicate to two different audiences. Firstly, think about what fellow teachers - would like to know, such as exactly what the resource contains and how it could be used in - the classroom. Secondly, the words you include on this page are also talking to internal and - external search engines. External search engines, like Google, show the first 155 characters - of the resource description, so make sure you take advantage - of these characters by using lots of relevant keywords as part of an enticing pitch. -""" - - -# Create your models here. -class Resource(models.Model): - name = models.CharField(max_length=255, null=False) - price = models.DecimalField( - max_digits=6, - decimal_places=2, - default=0.00, - null=False, - blank=False, - ) - thumbnail_filenames = models.JSONField( - null=False, - verbose_name="Thumbnail filenames", - default=list, - ) - resource_type = models.ForeignKey("ResourceType", on_delete=models.CASCADE) - main_resource_category = models.ForeignKey( - "ResourceCategory", - on_delete=models.CASCADE, - null=False, - related_name="main_resource_category", - ) - subcategories = models.ManyToManyField( - "ResourceSubcategory", - blank=True, - related_name="additional_resource_category", - ) - description = models.TextField( - max_length=5000, - null=False, - blank=False, - help_text=DESC_HELP_TEXT, - ) - card_description = models.TextField( - max_length=1000, - blank=True, - default="", - help_text=( - "If you enter text here, it will be used in the 'card' " - "description box on the home page. Max 1000 characters." - ), - ) - age_range = models.CharField( - max_length=20, - null=False, - default="5-7", - blank=False, - choices=AGE_RANGE_CHOICES, - ) - curriculum = models.CharField( - max_length=20, - default="English", - blank=True, - null=True, - choices=[ - ("No curriculum", "No curriculum"), - ("English", "English"), - ("Scottish", "Scottish"), - ], - ) - feature_slot = models.IntegerField( - choices=((1, 1), (2, 2), (3, 3)), - unique=True, - null=True, - blank=True, - default=0, - ) - created_at = models.DateTimeField(auto_now_add=True) - updated_at = models.DateTimeField(auto_now=True) - - def __str__(self): - return self.name - - def get_pdf_file_names(self): - return [p.file_name for p in self.pdf_resources.all()] - - def get_pdf_snapshot_file_names(self): - rs = self.pdf_resources.all() - sh = [sh for sh in rs.values_list("pdf_page_snapshots__file_name", flat=True)] - return [s for s in sh if s] - - def get_absolute_url(self): - return reverse("resources:resource_detail", kwargs={"resource_id": self.pk}) - - def thumbnail_urls(self) -> list[str]: - return [ - get_presigned_obj_url(settings.AWS_STORAGE_BUCKET_NAME, f"thumbnails/{f}") - for f in self.thumbnail_filenames - ] - - -class ResourceType(models.Model): - name = models.CharField(max_length=255, null=False) - created_at = models.DateTimeField(auto_now_add=True) - updated_at = models.DateTimeField(auto_now=True) - - class Meta: - verbose_name_plural = "Resource Types" - - def __str__(self): - return self.name - - -class ResourceSubcategory(models.Model): - name = models.CharField(max_length=255, null=False) - created_at = models.DateTimeField(auto_now_add=True) - updated_at = models.DateTimeField(auto_now=True) - - class Meta: - verbose_name_plural = "Resource Subcategories" - - def __str__(self): - return self.name - - -class ResourceCategory(models.Model): - name = models.CharField(max_length=255, null=False) - created_at = models.DateTimeField(auto_now_add=True) - updated_at = models.DateTimeField(auto_now=True) - colour_css_class = models.CharField(max_length=56, blank=True, null=True) - badge_foreground_colour = models.CharField(max_length=56, blank=True, null=True) - - class Meta: - verbose_name_plural = "Resource Categories" - - def __str__(self): - return self.name - - -class PDFResource(models.Model): - resource = models.ForeignKey( - "Resource", - on_delete=models.CASCADE, - null=False, - related_name="pdf_resources", - ) - file_name = models.CharField(max_length=255, null=False) - file_size = models.IntegerField(null=False) - - class Meta: - verbose_name_plural = "PDF Resources" - unique_together = ("resource", "file_name") - - def __str__(self): - return self.resource.name - - def snapshot_file_names(self): - return [f.file_name for f in self.pdf_page_snapshots.all()] - - -class PDFPageSnapshot(models.Model): - name = models.CharField(max_length=255, null=False) - file_name = models.CharField(max_length=255, null=False) - pdf_file = models.ForeignKey( - "PDFResource", - on_delete=models.CASCADE, - null=False, - related_name="pdf_page_snapshots", - ) - - class Meta: - verbose_name_plural = "PDF Page Snapshots" - - def __str__(self): - return self.name |