1
0
Fork 0
mirror of synced 2024-06-28 11:00:35 +12:00

rename model Page to Snapshot

This commit is contained in:
Nick Sweeting 2019-04-30 23:44:51 -04:00
parent c82651a0b0
commit cb2dd1ee28
7 changed files with 38 additions and 54 deletions

View file

@ -218,6 +218,7 @@ def log_archiving_paused(num_links: int, idx: int, timestamp: str):
timestamp=timestamp, timestamp=timestamp,
total=num_links, total=num_links,
)) ))
print()
print(' To view your archive, open:') print(' To view your archive, open:')
print(' {}/index.html'.format(OUTPUT_DIR)) print(' {}/index.html'.format(OUTPUT_DIR))
print(' Continue archiving where you left off by running:') print(' Continue archiving where you left off by running:')
@ -244,8 +245,11 @@ def log_archiving_finished(num_links: int):
print(' - {} links skipped'.format(_LAST_RUN_STATS.skipped)) print(' - {} links skipped'.format(_LAST_RUN_STATS.skipped))
print(' - {} links updated'.format(_LAST_RUN_STATS.succeeded)) print(' - {} links updated'.format(_LAST_RUN_STATS.succeeded))
print(' - {} links had errors'.format(_LAST_RUN_STATS.failed)) print(' - {} links had errors'.format(_LAST_RUN_STATS.failed))
print()
print(' To view your archive, open:') print(' To view your archive, open:')
print(' {}/index.html'.format(OUTPUT_DIR)) print(' {}/index.html'.format(OUTPUT_DIR))
print(' Or run the built-in webserver:')
print(' archivebox server')
def log_link_archiving_started(link: Link, link_dir: str, is_new: bool): def log_link_archiving_started(link: Link, link_dir: str, is_new: bool):
@ -378,15 +382,15 @@ def log_shell_welcome_msg():
from . import list_subcommands from . import list_subcommands
print('{green}# ArchiveBox Imports{reset}'.format(**ANSI)) print('{green}# ArchiveBox Imports{reset}'.format(**ANSI))
print('{green}from archivebox.core.models import Page, User{reset}'.format(**ANSI)) print('{green}from archivebox.core.models import Snapshot, User{reset}'.format(**ANSI))
print('{green}from archivebox import *\n {}{reset}'.format("\n ".join(list_subcommands().keys()), **ANSI)) print('{green}from archivebox import *\n {}{reset}'.format("\n ".join(list_subcommands().keys()), **ANSI))
print() print()
print('[i] Welcome to the ArchiveBox Shell!') print('[i] Welcome to the ArchiveBox Shell!')
print(' https://github.com/pirate/ArchiveBox/wiki/Usage#Shell-Usage') print(' https://github.com/pirate/ArchiveBox/wiki/Usage#Shell-Usage')
print() print()
print(' {lightred}Hint:{reset} Example use:'.format(**ANSI)) print(' {lightred}Hint:{reset} Example use:'.format(**ANSI))
print(' print(Page.objects.filter(is_archived=True).count())') print(' print(Snapshot.objects.filter(is_archived=True).count())')
print(' Page.objects.get(url="https://example.com").as_json()') print(' Snapshot.objects.get(url="https://example.com").as_json()')
print(' add("https://example.com/some/new/url")') print(' add("https://example.com/some/new/url")')

View file

@ -1,9 +1,9 @@
from django.contrib import admin from django.contrib import admin
from core.models import Page from core.models import Snapshot
class PageAdmin(admin.ModelAdmin): class SnapshotAdmin(admin.ModelAdmin):
list_display = ('timestamp', 'short_url', 'title', 'is_archived', 'num_outputs', 'added', 'updated', 'url_hash') list_display = ('timestamp', 'short_url', 'title', 'is_archived', 'num_outputs', 'added', 'updated', 'url_hash')
readonly_fields = ('num_outputs', 'is_archived', 'added', 'updated', 'bookmarked') readonly_fields = ('num_outputs', 'is_archived', 'added', 'updated', 'bookmarked')
fields = ('url', 'timestamp', 'title', 'tags', *readonly_fields) fields = ('url', 'timestamp', 'title', 'tags', *readonly_fields)
@ -14,4 +14,4 @@ class PageAdmin(admin.ModelAdmin):
def updated(self, obj): def updated(self, obj):
return obj.isoformat() return obj.isoformat()
admin.site.register(Page, PageAdmin) admin.site.register(Snapshot, SnapshotAdmin)

View file

@ -1,4 +1,4 @@
# Generated by Django 2.2 on 2019-04-17 06:46 # Generated by Django 2.2 on 2019-05-01 03:27
from django.db import migrations, models from django.db import migrations, models
import uuid import uuid
@ -13,15 +13,14 @@ class Migration(migrations.Migration):
operations = [ operations = [
migrations.CreateModel( migrations.CreateModel(
name='Page', name='Snapshot',
fields=[ fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('url', models.URLField()), ('url', models.URLField(unique=True)),
('timestamp', models.CharField(default=None, max_length=32, null=True)), ('timestamp', models.CharField(default=None, max_length=32, null=True, unique=True)),
('title', models.CharField(default=None, max_length=128, null=True)), ('title', models.CharField(default=None, max_length=128, null=True)),
('tags', models.CharField(default=None, max_length=256, null=True)), ('tags', models.CharField(default=None, max_length=256, null=True)),
('added', models.DateTimeField(auto_now_add=True)), ('added', models.DateTimeField(auto_now_add=True)),
('bookmarked', models.DateTimeField()),
('updated', models.DateTimeField(default=None, null=True)), ('updated', models.DateTimeField(default=None, null=True)),
], ],
), ),

View file

@ -1,27 +0,0 @@
# Generated by Django 2.2 on 2019-04-17 07:39
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='page',
name='bookmarked',
),
migrations.AlterField(
model_name='page',
name='timestamp',
field=models.CharField(default=None, max_length=32, null=True, unique=True),
),
migrations.AlterField(
model_name='page',
name='url',
field=models.URLField(unique=True),
),
]

View file

@ -8,7 +8,7 @@ from ..util import parse_date
from ..index.schema import Link from ..index.schema import Link
class Page(models.Model): class Snapshot(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
url = models.URLField(unique=True) url = models.URLField(unique=True)

View file

@ -5,7 +5,7 @@ from django.shortcuts import render, redirect
from django.http import HttpResponse from django.http import HttpResponse
from django.views import View, static from django.views import View, static
from core.models import Page from core.models import Snapshot
from ..index import load_main_index, load_main_index_meta from ..index import load_main_index, load_main_index_meta
from ..config import OUTPUT_DIR, VERSION, FOOTER_INFO from ..config import OUTPUT_DIR, VERSION, FOOTER_INFO
@ -59,7 +59,7 @@ class LinkDetails(View):
except (IndexError, ValueError): except (IndexError, ValueError):
slug, archivefile = path.split('/', 1)[0], 'index.html' slug, archivefile = path.split('/', 1)[0], 'index.html'
all_pages = list(Page.objects.all()) all_pages = list(Snapshot.objects.all())
# slug is a timestamp # slug is a timestamp
by_ts = {page.timestamp: page for page in all_pages} by_ts = {page.timestamp: page for page in all_pages}

View file

@ -13,30 +13,38 @@ from ..config import setup_django, OUTPUT_DIR
@enforce_types @enforce_types
def parse_sql_main_index(out_dir: str=OUTPUT_DIR) -> Iterator[Link]: def parse_sql_main_index(out_dir: str=OUTPUT_DIR) -> Iterator[Link]:
setup_django(out_dir, check_db=True) setup_django(out_dir, check_db=True)
from core.models import Page from core.models import Snapshot
return ( return (
Link.from_json(page.as_json(*Page.keys)) Link.from_json(page.as_json(*Snapshot.keys))
for page in Page.objects.all() for page in Snapshot.objects.all()
) )
@enforce_types @enforce_types
def write_sql_main_index(links: List[Link], out_dir: str=OUTPUT_DIR) -> None: def write_sql_main_index(links: List[Link], out_dir: str=OUTPUT_DIR) -> None:
setup_django(out_dir, check_db=True) setup_django(out_dir, check_db=True)
from core.models import Page from core.models import Snapshot
from django.db import transaction
all_urls = {link.url: link for link in links} all_urls = {link.url: link for link in links}
all_ts = {link.timestamp: link for link in links}
for page in Page.objects.all(): with transaction.atomic():
if page.url in all_urls: for snapshot in Snapshot.objects.all():
info = {k: v for k, v in all_urls.pop(page.url)._asdict().items() if k in Page.keys} if snapshot.timestamp in all_ts:
Page.objects.update(**info) info = {k: v for k, v in all_urls.pop(snapshot.url)._asdict().items() if k in Snapshot.keys}
else: snapshot.delete()
page.delete() Snapshot.objects.create(**info)
if snapshot.url in all_urls:
info = {k: v for k, v in all_urls.pop(snapshot.url)._asdict().items() if k in Snapshot.keys}
snapshot.delete()
Snapshot.objects.create(**info)
else:
snapshot.delete()
for url, link in all_urls.items(): for url, link in all_urls.items():
info = {k: v for k, v in link._asdict().items() if k in Page.keys} info = {k: v for k, v in link._asdict().items() if k in Snapshot.keys}
Page.objects.update_or_create(url=url, defaults=info) Snapshot.objects.update_or_create(url=url, defaults=info)