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),