feat: Show collection created date (#2302)

- Shows collection created date in detail view (if present)
- Adds `black` formatter to vscode extension recommendations

---------

Co-authored-by: Tessa Walsh <tessa@bitarchivist.net>
This commit is contained in:
sua yoo 2025-01-14 08:22:00 -08:00 committed by GitHub
parent cbcf087a48
commit 4347fcdba5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 42 additions and 8 deletions

View File

@ -2,10 +2,10 @@
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"runem.lit-plugin",
"bradlc.vscode-tailwindcss",
"redhat.vscode-yaml",
"streetsidesoftware.code-spell-checker"
"streetsidesoftware.code-spell-checker",
"ms-python.black-formatter"
]
}

View File

@ -110,6 +110,7 @@ class CollectionOps:
"""Add new collection"""
crawl_ids = coll_in.crawlIds if coll_in.crawlIds else []
coll_id = uuid4()
created = dt_now()
modified = dt_now()
coll = Collection(
@ -118,6 +119,7 @@ class CollectionOps:
name=coll_in.name,
description=coll_in.description,
caption=coll_in.caption,
created=created,
modified=modified,
access=coll_in.access,
defaultThumbnailName=coll_in.defaultThumbnailName,

View File

@ -1239,6 +1239,8 @@ class Collection(BaseMongoModel):
oid: UUID
description: Optional[str] = None
caption: Optional[str] = None
created: Optional[datetime] = None
modified: Optional[datetime] = None
crawlCount: Optional[int] = 0
@ -1286,6 +1288,7 @@ class CollOut(BaseMongoModel):
oid: UUID
description: Optional[str] = None
caption: Optional[str] = None
created: Optional[datetime] = None
modified: Optional[datetime] = None
crawlCount: Optional[int] = 0
@ -1319,6 +1322,8 @@ class PublicCollOut(BaseMongoModel):
oid: UUID
description: Optional[str] = None
caption: Optional[str] = None
created: Optional[datetime] = None
modified: Optional[datetime] = None
crawlCount: Optional[int] = 0
pageCount: Optional[int] = 0

View File

@ -17,7 +17,6 @@ CAPTION = "Short caption"
UPDATED_CAPTION = "Updated caption"
NON_PUBLIC_COLL_FIELDS = (
"modified",
"tags",
"homeUrlPageId",
)
@ -887,6 +886,8 @@ def test_list_public_collections(
assert collection["oid"]
assert collection["access"] == "public"
assert collection["name"]
assert collection["created"]
assert collection["modified"]
assert collection["dateEarliest"]
assert collection["dateLatest"]
assert collection["crawlCount"] > 0
@ -1070,6 +1071,8 @@ def test_list_public_colls_home_url_thumbnail():
assert coll["oid"]
assert coll["access"] == "public"
assert coll["name"]
assert coll["created"]
assert coll["modified"]
assert coll["resources"]
assert coll["dateEarliest"]
assert coll["dateLatest"]
@ -1117,6 +1120,8 @@ def test_get_public_collection(default_org_id):
assert coll["oid"] == default_org_id
assert coll["access"] == "public"
assert coll["name"]
assert coll["created"]
assert coll["modified"]
assert coll["resources"]
assert coll["dateEarliest"]
assert coll["dateLatest"]
@ -1193,6 +1198,8 @@ def test_get_public_collection_unlisted(crawler_auth_headers, default_org_id):
assert coll["oid"] == default_org_id
assert coll["access"] == "unlisted"
assert coll["name"]
assert coll["created"]
assert coll["modified"]
assert coll["resources"]
assert coll["dateEarliest"]
assert coll["dateLatest"]
@ -1231,6 +1238,8 @@ def test_get_public_collection_unlisted_org_profile_disabled(
assert coll["oid"] == default_org_id
assert coll["access"] == "unlisted"
assert coll["name"]
assert coll["created"]
assert coll["modified"]
assert coll["resources"]
assert coll["dateEarliest"]
assert coll["dateLatest"]

View File

@ -479,16 +479,33 @@ export class CollectionDetail extends BtrixElement {
(col) =>
`${this.localize.number(col.pageCount)} ${pluralOf("pages", col.pageCount)}`,
)}
${when(this.collection?.created, (created) =>
// Collections created before 49516bc4 is released may not have date in db
created
? this.renderDetailItem(
msg("Date Created"),
() =>
html`<btrix-format-date
date=${created}
month="long"
day="numeric"
year="numeric"
hour="numeric"
minute="numeric"
></btrix-format-date>`,
)
: nothing,
)}
${this.renderDetailItem(
msg("Last Updated"),
(col) =>
html`<btrix-format-date
date=${col.modified}
month="2-digit"
day="2-digit"
year="2-digit"
hour="2-digit"
minute="2-digit"
month="long"
day="numeric"
year="numeric"
hour="numeric"
minute="numeric"
></btrix-format-date>`,
)}
</btrix-desc-list>

View File

@ -34,6 +34,7 @@ export type PublicCollection = z.infer<typeof publicCollectionSchema>;
export const collectionSchema = publicCollectionSchema.extend({
id: z.string(),
created: z.string().datetime(),
modified: z.string().datetime(),
tags: z.array(z.string()),
access: z.nativeEnum(CollectionAccess),