Add Meta to models
This commit is contained in:
parent
09ad44f247
commit
06964a5761
3 changed files with 109 additions and 29 deletions
|
|
@ -0,0 +1,53 @@
|
|||
# Generated by Django 5.0.2 on 2024-02-23 05:27
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('feeds', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='author',
|
||||
options={'ordering': ['name'], 'verbose_name': 'Author', 'verbose_name_plural': 'Authors'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='domain',
|
||||
options={'ordering': ['name'], 'verbose_name': 'Domain', 'verbose_name_plural': 'Domains'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='entry',
|
||||
options={'ordering': ['-created_parsed'], 'verbose_name': 'Entry', 'verbose_name_plural': 'Entries'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='feed',
|
||||
options={'ordering': ['-created_at'], 'verbose_name': 'Feed', 'verbose_name_plural': 'Feeds'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='generator',
|
||||
options={'ordering': ['name'], 'verbose_name': 'Feed generator', 'verbose_name_plural': 'Feed generators'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='links',
|
||||
options={'ordering': ['href'], 'verbose_name': 'Link', 'verbose_name_plural': 'Links'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='publisher',
|
||||
options={'ordering': ['name'], 'verbose_name': 'Publisher', 'verbose_name_plural': 'Publishers'},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='author',
|
||||
unique_together={('name', 'email', 'href')},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='links',
|
||||
unique_together={('href', 'rel')},
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='publisher',
|
||||
unique_together={('name', 'email', 'href')},
|
||||
),
|
||||
]
|
||||
|
|
@ -22,6 +22,13 @@ class Domain(models.Model):
|
|||
hidden_at = models.DateTimeField(null=True, blank=True)
|
||||
hidden_reason = models.TextField(blank=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta information for the domain model."""
|
||||
|
||||
ordering: typing.ClassVar[list[str]] = ["name"] # Example: Orders by name alphabetically
|
||||
verbose_name: str = "Domain"
|
||||
verbose_name_plural: str = "Domains"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return string representation of the domain."""
|
||||
if_hidden: Literal[" (hidden)", ""] = " (hidden)" if self.hidden else ""
|
||||
|
|
@ -37,13 +44,21 @@ class Author(models.Model):
|
|||
href = models.TextField(blank=True)
|
||||
email = models.TextField(blank=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta information for the author model."""
|
||||
|
||||
unique_together: typing.ClassVar[list[str]] = ["name", "email", "href"]
|
||||
ordering: typing.ClassVar[list[str]] = ["name"] # Example: Orders by name alphabetically
|
||||
verbose_name: str = "Author"
|
||||
verbose_name_plural: str = "Authors"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return string representation of the author."""
|
||||
return f"{self.name} - {self.email} - {self.href}"
|
||||
|
||||
|
||||
class Generator(models.Model):
|
||||
"""A generator of a feed."""
|
||||
"""What program or service generated the feed."""
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
modified_at = models.DateTimeField(auto_now=True)
|
||||
|
|
@ -55,6 +70,9 @@ class Generator(models.Model):
|
|||
"""Meta information for the generator model."""
|
||||
|
||||
unique_together: typing.ClassVar[list[str]] = ["name", "version", "href"]
|
||||
ordering: typing.ClassVar[list[str]] = ["name"] # Example: Orders by name alphabetically
|
||||
verbose_name: str = "Feed generator"
|
||||
verbose_name_plural: str = "Feed generators"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return string representation of the generator."""
|
||||
|
|
@ -71,6 +89,14 @@ class Links(models.Model):
|
|||
href = models.TextField(blank=True)
|
||||
title = models.TextField(blank=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta information for the links model."""
|
||||
|
||||
unique_together: typing.ClassVar[list[str]] = ["href", "rel"]
|
||||
ordering: typing.ClassVar[list[str]] = ["href"]
|
||||
verbose_name: str = "Link"
|
||||
verbose_name_plural: str = "Links"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return string representation of the links."""
|
||||
return self.href
|
||||
|
|
@ -85,6 +111,14 @@ class Publisher(models.Model):
|
|||
href = models.TextField(blank=True)
|
||||
email = models.TextField(blank=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta information for the publisher model."""
|
||||
|
||||
unique_together: typing.ClassVar[list[str]] = ["name", "email", "href"]
|
||||
ordering: typing.ClassVar[list[str]] = ["name"]
|
||||
verbose_name: str = "Publisher"
|
||||
verbose_name_plural: str = "Publishers"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return string representation of the publisher."""
|
||||
return self.name
|
||||
|
|
@ -169,14 +203,17 @@ class Feed(models.Model):
|
|||
updated = models.TextField(blank=True)
|
||||
updated_parsed = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta information for the feed model."""
|
||||
|
||||
ordering: typing.ClassVar[list[str]] = ["-created_at"]
|
||||
verbose_name: str = "Feed"
|
||||
verbose_name_plural: str = "Feeds"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return string representation of the feed."""
|
||||
return f"{self.domain} - {self.title}"
|
||||
|
||||
def get_fields(self) -> list:
|
||||
"""Return the fields of the feed."""
|
||||
return [(field.name, field.value_from_object(self)) for field in Feed._meta.fields]
|
||||
|
||||
|
||||
class Entry(models.Model):
|
||||
"""Each feed has multiple entries."""
|
||||
|
|
@ -225,10 +262,13 @@ class Entry(models.Model):
|
|||
updated = models.TextField(blank=True)
|
||||
updated_parsed = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta information for the entry model."""
|
||||
|
||||
ordering: typing.ClassVar[list[str]] = ["-created_parsed"]
|
||||
verbose_name: str = "Entry"
|
||||
verbose_name_plural: str = "Entries"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""Return string representation of the entry."""
|
||||
return f"{self.feed} - {self.title}"
|
||||
|
||||
def get_fields(self) -> list:
|
||||
"""Return the fields of the entry."""
|
||||
return [(field.name, field.value_from_object(self)) for field in Entry._meta.fields]
|
||||
|
|
|
|||
|
|
@ -1,27 +1,14 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<h2>{{ feed.feed_url }}</h2>
|
||||
<dl>
|
||||
{% for field_name, field_value in feed.get_fields %}
|
||||
{% if field_value %}
|
||||
<dt>{{ field_name }}</dt>
|
||||
<dd>
|
||||
{{ field_value }}
|
||||
</dd>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</dl>
|
||||
<p>{{ feed.description }}</p>
|
||||
<h3>Entries</h3>
|
||||
<dl>
|
||||
<ul>
|
||||
{% for entry in entries %}
|
||||
{% for field_name, field_value in entry.get_fields %}
|
||||
{% if field_value %}
|
||||
<dt>{{ field_name }}</dt>
|
||||
<dd>
|
||||
{{ field_value }}
|
||||
</dd>
|
||||
{% endif %}
|
||||
<li>
|
||||
<a href="{{ entry.link }}">{{ entry.title }}</a>
|
||||
<p>{{ entry.summary }}</p>
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</dl>
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue