clearer sql parsing and dumping

This commit is contained in:
Nick Sweeting 2019-04-17 03:50:41 -04:00
parent cdb70c73df
commit 35aa8c8902
2 changed files with 5 additions and 8 deletions

View file

@ -18,15 +18,15 @@ class Page(models.Model):
updated = models.DateTimeField(null=True, default=None) updated = models.DateTimeField(null=True, default=None)
# bookmarked = models.DateTimeField() # bookmarked = models.DateTimeField()
sql_args = ('url', 'timestamp', 'title', 'tags', 'updated') keys = ('url', 'timestamp', 'title', 'tags', 'updated')
@classmethod @classmethod
def from_json(cls, info: dict): def from_json(cls, info: dict):
info = {k: v for k, v in info.items() if k in cls.sql_args} info = {k: v for k, v in info.items() if k in cls.keys}
return cls(**info) return cls(**info)
def as_json(self, *args) -> dict: def as_json(self, *args) -> dict:
args = args or self.sql_args args = args or self.keys
return { return {
key: getattr(self, key) key: getattr(self, key)
for key in args for key in args

View file

@ -9,16 +9,13 @@ from ..config import setup_django
### Main Links Index ### Main Links Index
sql_keys = ('url', 'timestamp', 'title', 'tags', 'updated')
@enforce_types @enforce_types
def parse_sql_main_index() -> Iterator[Link]: def parse_sql_main_index() -> Iterator[Link]:
setup_django() setup_django()
from core.models import Page from core.models import Page
return ( return (
page.as_json(*sql_keys) page.as_json(*Page.keys)
for page in Page.objects.all() for page in Page.objects.all()
) )
@ -28,5 +25,5 @@ def write_sql_main_index(links: List[Link]) -> None:
from core.models import Page from core.models import Page
for link in links: for link in links:
info = {k: v for k, v in link._asdict().items() if k in sql_keys} info = {k: v for k, v in link._asdict().items() if k in Page.keys}
Page.objects.update_or_create(url=link.url, defaults=info) Page.objects.update_or_create(url=link.url, defaults=info)