diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 58e22b19..72bafac5 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -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"
]
}
diff --git a/backend/btrixcloud/colls.py b/backend/btrixcloud/colls.py
index 8bc02e68..f6c13dad 100644
--- a/backend/btrixcloud/colls.py
+++ b/backend/btrixcloud/colls.py
@@ -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,
diff --git a/backend/btrixcloud/models.py b/backend/btrixcloud/models.py
index 31a6e475..512e3cd4 100644
--- a/backend/btrixcloud/models.py
+++ b/backend/btrixcloud/models.py
@@ -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
diff --git a/backend/test/test_collections.py b/backend/test/test_collections.py
index c2999bb5..7b274bf8 100644
--- a/backend/test/test_collections.py
+++ b/backend/test/test_collections.py
@@ -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"]
diff --git a/frontend/src/pages/org/collection-detail.ts b/frontend/src/pages/org/collection-detail.ts
index c98cf2fc..7e9472d7 100644
--- a/frontend/src/pages/org/collection-detail.ts
+++ b/frontend/src/pages/org/collection-detail.ts
@@ -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``,
+ )
+ : nothing,
+ )}
${this.renderDetailItem(
msg("Last Updated"),
(col) =>
html``,
)}
diff --git a/frontend/src/types/collection.ts b/frontend/src/types/collection.ts
index 9f3ecf5f..47968031 100644
--- a/frontend/src/types/collection.ts
+++ b/frontend/src/types/collection.ts
@@ -34,6 +34,7 @@ export type PublicCollection = z.infer;
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),