mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-13 14:44:29 -04:00
rename model Page to Snapshot
This commit is contained in:
parent
c82651a0b0
commit
cb2dd1ee28
7 changed files with 38 additions and 54 deletions
|
@ -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")')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -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),
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -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)
|
||||||
|
|
|
@ -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}
|
||||||
|
|
|
@ -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}
|
||||||
|
snapshot.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:
|
else:
|
||||||
page.delete()
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue