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_at = models.DateTimeField(null=True, blank=True)
|
||||||
hidden_reason = models.TextField(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:
|
def __str__(self) -> str:
|
||||||
"""Return string representation of the domain."""
|
"""Return string representation of the domain."""
|
||||||
if_hidden: Literal[" (hidden)", ""] = " (hidden)" if self.hidden else ""
|
if_hidden: Literal[" (hidden)", ""] = " (hidden)" if self.hidden else ""
|
||||||
|
|
@ -37,13 +44,21 @@ class Author(models.Model):
|
||||||
href = models.TextField(blank=True)
|
href = models.TextField(blank=True)
|
||||||
email = 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:
|
def __str__(self) -> str:
|
||||||
"""Return string representation of the author."""
|
"""Return string representation of the author."""
|
||||||
return f"{self.name} - {self.email} - {self.href}"
|
return f"{self.name} - {self.email} - {self.href}"
|
||||||
|
|
||||||
|
|
||||||
class Generator(models.Model):
|
class Generator(models.Model):
|
||||||
"""A generator of a feed."""
|
"""What program or service generated the feed."""
|
||||||
|
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
modified_at = models.DateTimeField(auto_now=True)
|
modified_at = models.DateTimeField(auto_now=True)
|
||||||
|
|
@ -55,6 +70,9 @@ class Generator(models.Model):
|
||||||
"""Meta information for the generator model."""
|
"""Meta information for the generator model."""
|
||||||
|
|
||||||
unique_together: typing.ClassVar[list[str]] = ["name", "version", "href"]
|
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:
|
def __str__(self) -> str:
|
||||||
"""Return string representation of the generator."""
|
"""Return string representation of the generator."""
|
||||||
|
|
@ -71,6 +89,14 @@ class Links(models.Model):
|
||||||
href = models.TextField(blank=True)
|
href = models.TextField(blank=True)
|
||||||
title = 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:
|
def __str__(self) -> str:
|
||||||
"""Return string representation of the links."""
|
"""Return string representation of the links."""
|
||||||
return self.href
|
return self.href
|
||||||
|
|
@ -85,6 +111,14 @@ class Publisher(models.Model):
|
||||||
href = models.TextField(blank=True)
|
href = models.TextField(blank=True)
|
||||||
email = 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:
|
def __str__(self) -> str:
|
||||||
"""Return string representation of the publisher."""
|
"""Return string representation of the publisher."""
|
||||||
return self.name
|
return self.name
|
||||||
|
|
@ -169,14 +203,17 @@ class Feed(models.Model):
|
||||||
updated = models.TextField(blank=True)
|
updated = models.TextField(blank=True)
|
||||||
updated_parsed = models.DateTimeField(null=True, 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:
|
def __str__(self) -> str:
|
||||||
"""Return string representation of the feed."""
|
"""Return string representation of the feed."""
|
||||||
return f"{self.domain} - {self.title}"
|
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):
|
class Entry(models.Model):
|
||||||
"""Each feed has multiple entries."""
|
"""Each feed has multiple entries."""
|
||||||
|
|
@ -225,10 +262,13 @@ class Entry(models.Model):
|
||||||
updated = models.TextField(blank=True)
|
updated = models.TextField(blank=True)
|
||||||
updated_parsed = models.DateTimeField(null=True, 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:
|
def __str__(self) -> str:
|
||||||
"""Return string representation of the entry."""
|
"""Return string representation of the entry."""
|
||||||
return f"{self.feed} - {self.title}"
|
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" %}
|
{% extends "base.html" %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>{{ feed.feed_url }}</h2>
|
<h2>{{ feed.feed_url }}</h2>
|
||||||
<dl>
|
<p>{{ feed.description }}</p>
|
||||||
{% for field_name, field_value in feed.get_fields %}
|
|
||||||
{% if field_value %}
|
|
||||||
<dt>{{ field_name }}</dt>
|
|
||||||
<dd>
|
|
||||||
{{ field_value }}
|
|
||||||
</dd>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</dl>
|
|
||||||
<h3>Entries</h3>
|
<h3>Entries</h3>
|
||||||
<dl>
|
<ul>
|
||||||
{% for entry in entries %}
|
{% for entry in entries %}
|
||||||
{% for field_name, field_value in entry.get_fields %}
|
<li>
|
||||||
{% if field_value %}
|
<a href="{{ entry.link }}">{{ entry.title }}</a>
|
||||||
<dt>{{ field_name }}</dt>
|
<p>{{ entry.summary }}</p>
|
||||||
<dd>
|
</li>
|
||||||
{{ field_value }}
|
|
||||||
</dd>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</dl>
|
</ul>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue