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": [ "recommendations": [
"dbaeumer.vscode-eslint", "dbaeumer.vscode-eslint",
"esbenp.prettier-vscode", "esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"runem.lit-plugin", "runem.lit-plugin",
"bradlc.vscode-tailwindcss", "bradlc.vscode-tailwindcss",
"redhat.vscode-yaml", "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""" """Add new collection"""
crawl_ids = coll_in.crawlIds if coll_in.crawlIds else [] crawl_ids = coll_in.crawlIds if coll_in.crawlIds else []
coll_id = uuid4() coll_id = uuid4()
created = dt_now()
modified = dt_now() modified = dt_now()
coll = Collection( coll = Collection(
@ -118,6 +119,7 @@ class CollectionOps:
name=coll_in.name, name=coll_in.name,
description=coll_in.description, description=coll_in.description,
caption=coll_in.caption, caption=coll_in.caption,
created=created,
modified=modified, modified=modified,
access=coll_in.access, access=coll_in.access,
defaultThumbnailName=coll_in.defaultThumbnailName, defaultThumbnailName=coll_in.defaultThumbnailName,

View File

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

View File

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

View File

@ -479,16 +479,33 @@ export class CollectionDetail extends BtrixElement {
(col) => (col) =>
`${this.localize.number(col.pageCount)} ${pluralOf("pages", col.pageCount)}`, `${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( ${this.renderDetailItem(
msg("Last Updated"), msg("Last Updated"),
(col) => (col) =>
html`<btrix-format-date html`<btrix-format-date
date=${col.modified} date=${col.modified}
month="2-digit" month="long"
day="2-digit" day="numeric"
year="2-digit" year="numeric"
hour="2-digit" hour="numeric"
minute="2-digit" minute="numeric"
></btrix-format-date>`, ></btrix-format-date>`,
)} )}
</btrix-desc-list> </btrix-desc-list>

View File

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