Document Paging¶
Document Paging¶
1ot = impact.gui.output_toolbox
2db = impact.active_database
3doc_settings = db.settings.document_settings
4
5
6def describe_docs(docs):
7 ot.add("Document Count: " + str(docs.count))
8 ot.add("Using Paging: " + str(docs.using_paging))
9
10 if (docs.using_paging):
11 ot.add("Page Size: " + str(docs.page_size))
12 ot.add("Page Count: " + str(docs.page_count))
13 ot.add("Page Number: " + str(docs.page_number))
14 ot.add("Total Document Count: " + str(docs.total_count))
15
16 for doc in docs:
17 ot.add(" Document: '" + doc.name + "', Modified: " + str(doc.modified_date_time))
18
19
20ot.clear()
21
22
23if (not doc_settings.supports_searching) or (not doc_settings.supports_paging):
24 ot.add("Document searching or paging is not supported")
25
26else:
27 ot.add("Document searching is supported")
28
29 name_column = doc_settings.types.default_document_type.columns.known_item(ipDocumentKnownColumn.dkcName)
30 mod_time_column = doc_settings.types.default_document_type.columns.known_item(ipDocumentKnownColumn.dkcModifiedDateTime)
31
32 ot.add("Setting up document context")
33
34 context = db.document_context
35
36 # initial paging values
37 context.documents_page_size = 3
38 context.initial_page_number = 1
39
40 if doc_settings.supports_searching_all_versions:
41 context.search_all_versions = True
42
43 # we intend to access each IDocument in the collection
44 context.load_documents = True
45
46 # specify sort columns
47 context.add_sort_column(mod_time_column, False, Empty)
48 context.add_sort_column(name_column, True, Empty)
49
50 # specify statuses to respect
51 context.include_status(ipDocumentStatus.dsNormal)
52 context.include_status(ipDocumentStatus.dsDeleted)
53
54 ot.add("=== Searching using IDocumentContext ===")
55
56 search = db.document_search
57
58 name_criterion = search.add(name_column)
59
60 name_criterion.criterion_operator = ipDocumentCriterionOperator.dcoLike
61 name_criterion.string_search = ipDocumentStringSearch.dssContains
62 name_criterion.values = "ACME"
63
64 docs = search.execute()
65
66 if docs is not None:
67 ot.add("Search executed successfully")
68
69 describe_docs(docs)
70
71 ot.add("=== Changing sort order ===")
72
73 context.add_sort_column(name_column, False, Empty)
74 context.add_sort_column(mod_time_column, True, Empty)
75
76 docs.refresh()
77 describe_docs(docs)
78
79 ot.add("=== Changing statuses ===")
80
81 context.include_status(ipDocumentStatus.dsNormal)
82
83 docs.refresh()
84 describe_docs(docs)
85
86 ot.add("=== Changing page number forwards ===")
87
88 docs.page_number = docs.page_number + 1
89 describe_docs(docs)
90
91 if not doc_settings.supports_paging_forward_only:
92 ot.add("=== Changing page number backwards ===")
93
94 docs.page_number = docs.page_number - 1
95 describe_docs(docs)
96
97 ot.add("=== Changing page size ===")
98 docs.page_size = 10
99 describe_docs(docs)
100
101 else:
102 ot.add("Search failed")