glpi-python-client 0.3.2__py3-none-any.whl → 0.3.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- glpi_python_client/__init__.py +1 -1
- glpi_python_client/clients/api/assistance/timeline/_document.py +21 -20
- glpi_python_client/clients/custom/_statistics.py +21 -16
- glpi_python_client/clients/custom/_statistics_async.py +19 -14
- glpi_python_client/clients/custom/tests/test_statistics.py +2 -2
- glpi_python_client/clients/tests/test_api_coverage.py +2 -2
- glpi_python_client/models/custom_schema/_ticket_context.py +12 -9
- glpi_python_client/models/custom_schema/tests/test_ticket_context.py +7 -7
- {glpi_python_client-0.3.2.dist-info → glpi_python_client-0.3.3.dist-info}/METADATA +1 -1
- {glpi_python_client-0.3.2.dist-info → glpi_python_client-0.3.3.dist-info}/RECORD +12 -12
- {glpi_python_client-0.3.2.dist-info → glpi_python_client-0.3.3.dist-info}/WHEEL +0 -0
- {glpi_python_client-0.3.2.dist-info → glpi_python_client-0.3.3.dist-info}/licenses/LICENSE +0 -0
glpi_python_client/__init__.py
CHANGED
|
@@ -7,11 +7,12 @@ Notes
|
|
|
7
7
|
-----
|
|
8
8
|
The live GLPI v2 server returns each entry of the list endpoint wrapped
|
|
9
9
|
in a ``{"type": "Document_Item", "item": {...}}`` envelope, even though
|
|
10
|
-
the OpenAPI contract documents a flat array of ``Document_Item``.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
:
|
|
14
|
-
helper and
|
|
10
|
+
the OpenAPI contract documents a flat array of ``Document_Item``. The
|
|
11
|
+
``item`` value is a full ``Document`` record (matching :class:`GetDocument`),
|
|
12
|
+
not a ``Document_Item`` link record — real behaviour wins over the contract.
|
|
13
|
+
:func:`list_ticket_timeline_documents` unwraps the envelope through the shared
|
|
14
|
+
``TransportMixin._resource_list`` helper and deserialises each inner object
|
|
15
|
+
as :class:`GetDocument`.
|
|
15
16
|
"""
|
|
16
17
|
|
|
17
18
|
from __future__ import annotations
|
|
@@ -24,19 +25,17 @@ from glpi_python_client.clients.commons._constants import (
|
|
|
24
25
|
from glpi_python_client.clients.commons._transport import TransportMixin
|
|
25
26
|
from glpi_python_client.models.api_schema.assistance.timeline._document import (
|
|
26
27
|
DeleteTimelineDocument,
|
|
27
|
-
GetTimelineDocument,
|
|
28
28
|
PatchTimelineDocument,
|
|
29
29
|
PostTimelineDocument,
|
|
30
30
|
)
|
|
31
|
+
from glpi_python_client.models.api_schema.management._document import GetDocument
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
class TimelineDocumentMixin(TransportMixin):
|
|
34
35
|
"""Synchronous CRUD helpers for the ticket document timeline endpoint."""
|
|
35
36
|
|
|
36
|
-
def list_ticket_timeline_documents(
|
|
37
|
-
|
|
38
|
-
) -> list[GetTimelineDocument]:
|
|
39
|
-
"""List all timeline documents linked to one ticket.
|
|
37
|
+
def list_ticket_timeline_documents(self, ticket_id: GlpiId) -> list[GetDocument]:
|
|
38
|
+
"""List all documents linked to one ticket timeline.
|
|
40
39
|
|
|
41
40
|
Parameters
|
|
42
41
|
----------
|
|
@@ -45,14 +44,16 @@ class TimelineDocumentMixin(TransportMixin):
|
|
|
45
44
|
|
|
46
45
|
Returns
|
|
47
46
|
-------
|
|
48
|
-
list[
|
|
49
|
-
Document
|
|
50
|
-
|
|
47
|
+
list[GetDocument]
|
|
48
|
+
Document records returned by the GLPI server. The live API
|
|
49
|
+
wraps each entry in a ``{"type": "Document_Item", "item": {...}}``
|
|
50
|
+
envelope whose ``item`` value is a full ``Document`` record; the
|
|
51
|
+
envelope is unwrapped automatically.
|
|
51
52
|
"""
|
|
52
53
|
|
|
53
54
|
return self._resource_list(
|
|
54
55
|
f"{TICKET_ENDPOINT}/{ticket_id}/{TIMELINE_DOCUMENT_SUFFIX}",
|
|
55
|
-
|
|
56
|
+
GetDocument,
|
|
56
57
|
failure_message=(
|
|
57
58
|
f"Failed to list timeline documents for ticket {ticket_id}"
|
|
58
59
|
),
|
|
@@ -61,20 +62,20 @@ class TimelineDocumentMixin(TransportMixin):
|
|
|
61
62
|
|
|
62
63
|
def get_ticket_timeline_document(
|
|
63
64
|
self, ticket_id: GlpiId, document_link_id: GlpiId
|
|
64
|
-
) ->
|
|
65
|
-
"""Fetch one
|
|
65
|
+
) -> GetDocument:
|
|
66
|
+
"""Fetch one document linked to the ticket timeline by its document ID.
|
|
66
67
|
|
|
67
68
|
Parameters
|
|
68
69
|
----------
|
|
69
70
|
ticket_id : GlpiId
|
|
70
71
|
Numeric identifier of the parent ticket.
|
|
71
72
|
document_link_id : GlpiId
|
|
72
|
-
Numeric identifier of the
|
|
73
|
+
Numeric identifier of the linked document to retrieve.
|
|
73
74
|
|
|
74
75
|
Returns
|
|
75
76
|
-------
|
|
76
|
-
|
|
77
|
-
Validated document
|
|
77
|
+
GetDocument
|
|
78
|
+
Validated document payload.
|
|
78
79
|
|
|
79
80
|
Raises
|
|
80
81
|
------
|
|
@@ -85,7 +86,7 @@ class TimelineDocumentMixin(TransportMixin):
|
|
|
85
86
|
return self._resource_get(
|
|
86
87
|
f"{TICKET_ENDPOINT}/{ticket_id}/"
|
|
87
88
|
f"{TIMELINE_DOCUMENT_SUFFIX}/{document_link_id}",
|
|
88
|
-
|
|
89
|
+
GetDocument,
|
|
89
90
|
failure_message=(
|
|
90
91
|
f"Failed to get timeline document {document_link_id} on "
|
|
91
92
|
f"ticket {ticket_id}"
|
|
@@ -95,10 +95,12 @@ class StatisticsMixin(TransportMixin):
|
|
|
95
95
|
Parameters
|
|
96
96
|
----------
|
|
97
97
|
start_date : str | None, optional
|
|
98
|
-
ISO ``YYYY-MM-DD`` start of the window
|
|
99
|
-
``end_date - default_days + 1``
|
|
98
|
+
ISO ``YYYY-MM-DD`` start of the window (inclusive from
|
|
99
|
+
00:00:00). Defaults to ``end_date - default_days + 1``
|
|
100
|
+
when omitted.
|
|
100
101
|
end_date : str | None, optional
|
|
101
|
-
ISO ``YYYY-MM-DD`` end of the window
|
|
102
|
+
ISO ``YYYY-MM-DD`` end of the window (inclusive through
|
|
103
|
+
23:59:59). Defaults to today.
|
|
102
104
|
default_days : int, optional
|
|
103
105
|
Span in days used when ``start_date`` is omitted (defaults
|
|
104
106
|
to 30 and must be a positive integer).
|
|
@@ -147,9 +149,10 @@ class StatisticsMixin(TransportMixin):
|
|
|
147
149
|
entity_filter = rsql_any_filter(
|
|
148
150
|
*(f"entities_id=={e.id}" for e in entities if e.id is not None)
|
|
149
151
|
)
|
|
150
|
-
|
|
152
|
+
date_filter = f"date_creation=ge={start.isoformat()};"
|
|
153
|
+
date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
|
|
151
154
|
query = rsql_all_filter(
|
|
152
|
-
|
|
155
|
+
date_filter,
|
|
153
156
|
entity_filter,
|
|
154
157
|
extra_filter,
|
|
155
158
|
)
|
|
@@ -226,10 +229,12 @@ class StatisticsMixin(TransportMixin):
|
|
|
226
229
|
Parameters
|
|
227
230
|
----------
|
|
228
231
|
start_date : str | None, optional
|
|
229
|
-
ISO ``YYYY-MM-DD`` start of the window
|
|
230
|
-
``end_date - default_days + 1``
|
|
232
|
+
ISO ``YYYY-MM-DD`` start of the window (inclusive from
|
|
233
|
+
00:00:00). Defaults to ``end_date - default_days + 1``
|
|
234
|
+
when omitted.
|
|
231
235
|
end_date : str | None, optional
|
|
232
|
-
ISO ``YYYY-MM-DD`` end of the window
|
|
236
|
+
ISO ``YYYY-MM-DD`` end of the window (inclusive through
|
|
237
|
+
23:59:59). Defaults to today.
|
|
233
238
|
default_days : int, optional
|
|
234
239
|
Span in days used when ``start_date`` is omitted (defaults
|
|
235
240
|
to 30 and must be a positive integer).
|
|
@@ -269,9 +274,8 @@ class StatisticsMixin(TransportMixin):
|
|
|
269
274
|
end_date=end_date,
|
|
270
275
|
default_days=default_days,
|
|
271
276
|
)
|
|
272
|
-
date_filter = (
|
|
273
|
-
|
|
274
|
-
)
|
|
277
|
+
date_filter = f"date_creation=ge={start.isoformat()};"
|
|
278
|
+
date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
|
|
275
279
|
|
|
276
280
|
entity_filter: str | None = None
|
|
277
281
|
if entity_id is not None:
|
|
@@ -399,9 +403,11 @@ class StatisticsMixin(TransportMixin):
|
|
|
399
403
|
firstname : str | None, optional
|
|
400
404
|
Filter by given name (substring match).
|
|
401
405
|
start_date : str | None, optional
|
|
402
|
-
ISO ``YYYY-MM-DD`` start of the activity window
|
|
406
|
+
ISO ``YYYY-MM-DD`` start of the activity window (inclusive
|
|
407
|
+
from 00:00:00).
|
|
403
408
|
end_date : str | None, optional
|
|
404
|
-
ISO ``YYYY-MM-DD`` end of the activity window
|
|
409
|
+
ISO ``YYYY-MM-DD`` end of the activity window (inclusive
|
|
410
|
+
through 23:59:59). Defaults to today.
|
|
405
411
|
default_days : int, optional
|
|
406
412
|
Span in days used when ``start_date`` is omitted (default 30).
|
|
407
413
|
|
|
@@ -460,9 +466,8 @@ class StatisticsMixin(TransportMixin):
|
|
|
460
466
|
if u.id is not None
|
|
461
467
|
}
|
|
462
468
|
|
|
463
|
-
date_range = (
|
|
464
|
-
|
|
465
|
-
)
|
|
469
|
+
date_range = f"date_creation=ge={start.isoformat()};"
|
|
470
|
+
date_range += f"date_creation=le={end.isoformat()} 23:59:59"
|
|
466
471
|
|
|
467
472
|
users_output: dict[str, UserActivityEntry] = {}
|
|
468
473
|
for uid in resolved_user_ids:
|
|
@@ -102,9 +102,11 @@ class AsyncStatisticsMixin(StatisticsMixin):
|
|
|
102
102
|
Parameters
|
|
103
103
|
----------
|
|
104
104
|
start_date : str | None, optional
|
|
105
|
-
ISO ``YYYY-MM-DD`` start of the window
|
|
105
|
+
ISO ``YYYY-MM-DD`` start of the window (inclusive from
|
|
106
|
+
00:00:00).
|
|
106
107
|
end_date : str | None, optional
|
|
107
|
-
ISO ``YYYY-MM-DD`` end of the window
|
|
108
|
+
ISO ``YYYY-MM-DD`` end of the window (inclusive through
|
|
109
|
+
23:59:59). Defaults to today.
|
|
108
110
|
default_days : int, optional
|
|
109
111
|
Span in days used when ``start_date`` is omitted (default 30).
|
|
110
112
|
entity_id : int | None, optional
|
|
@@ -143,10 +145,8 @@ class AsyncStatisticsMixin(StatisticsMixin):
|
|
|
143
145
|
end_date=end_date,
|
|
144
146
|
default_days=default_days,
|
|
145
147
|
)
|
|
146
|
-
date_filter = (
|
|
147
|
-
|
|
148
|
-
)
|
|
149
|
-
|
|
148
|
+
date_filter = f"date_creation=ge={start.isoformat()};"
|
|
149
|
+
date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
|
|
150
150
|
entity_filter: str | None = None
|
|
151
151
|
if entity_id is not None:
|
|
152
152
|
entity_filter = f"entities_id=={entity_id}"
|
|
@@ -274,9 +274,11 @@ class AsyncStatisticsMixin(StatisticsMixin):
|
|
|
274
274
|
Parameters
|
|
275
275
|
----------
|
|
276
276
|
start_date : str | None, optional
|
|
277
|
-
ISO ``YYYY-MM-DD`` start of the window
|
|
277
|
+
ISO ``YYYY-MM-DD`` start of the window (inclusive from
|
|
278
|
+
00:00:00).
|
|
278
279
|
end_date : str | None, optional
|
|
279
|
-
ISO ``YYYY-MM-DD`` end of the window
|
|
280
|
+
ISO ``YYYY-MM-DD`` end of the window (inclusive through
|
|
281
|
+
23:59:59). Defaults to today.
|
|
280
282
|
default_days : int, optional
|
|
281
283
|
Span in days used when ``start_date`` is omitted (default 30).
|
|
282
284
|
entity_id : int | None, optional
|
|
@@ -328,8 +330,10 @@ class AsyncStatisticsMixin(StatisticsMixin):
|
|
|
328
330
|
*(f"entities_id=={e.id}" for e in entities if e.id is not None)
|
|
329
331
|
)
|
|
330
332
|
|
|
333
|
+
date_filter = f"date_creation=ge={start.isoformat()};"
|
|
334
|
+
date_filter += f"date_creation=le={end.isoformat()} 23:59:59"
|
|
331
335
|
query = rsql_all_filter(
|
|
332
|
-
|
|
336
|
+
date_filter,
|
|
333
337
|
entity_filter,
|
|
334
338
|
extra_filter,
|
|
335
339
|
)
|
|
@@ -369,9 +373,11 @@ class AsyncStatisticsMixin(StatisticsMixin):
|
|
|
369
373
|
firstname : str | None, optional
|
|
370
374
|
Filter by given name (substring match).
|
|
371
375
|
start_date : str | None, optional
|
|
372
|
-
ISO ``YYYY-MM-DD`` start of the activity window
|
|
376
|
+
ISO ``YYYY-MM-DD`` start of the activity window (inclusive
|
|
377
|
+
from 00:00:00).
|
|
373
378
|
end_date : str | None, optional
|
|
374
|
-
ISO ``YYYY-MM-DD`` end of the activity window
|
|
379
|
+
ISO ``YYYY-MM-DD`` end of the activity window (inclusive
|
|
380
|
+
through 23:59:59). Defaults to today.
|
|
375
381
|
default_days : int, optional
|
|
376
382
|
Span in days used when ``start_date`` is omitted (default 30).
|
|
377
383
|
|
|
@@ -438,9 +444,8 @@ class AsyncStatisticsMixin(StatisticsMixin):
|
|
|
438
444
|
if u.id is not None
|
|
439
445
|
}
|
|
440
446
|
|
|
441
|
-
date_range = (
|
|
442
|
-
|
|
443
|
-
)
|
|
447
|
+
date_range = f"date_creation=ge={start.isoformat()};"
|
|
448
|
+
date_range += f"date_creation=le={end.isoformat()} 23:59:59"
|
|
444
449
|
|
|
445
450
|
users_output: dict[str, UserActivityEntry] = {}
|
|
446
451
|
for uid in resolved_user_ids:
|
|
@@ -130,7 +130,7 @@ def test_get_ticket_statistics_default_window_uses_today(
|
|
|
130
130
|
end = date.today()
|
|
131
131
|
start = end - timedelta(days=6)
|
|
132
132
|
assert f"date_creation=ge={start.isoformat()}" in captured["filter"]
|
|
133
|
-
assert f"date_creation=le={end.isoformat()}" in captured["filter"]
|
|
133
|
+
assert f"date_creation=le={end.isoformat()} 23:59:59" in captured["filter"]
|
|
134
134
|
|
|
135
135
|
|
|
136
136
|
def test_get_ticket_statistics_rejects_invalid_window(client: GlpiClient) -> None:
|
|
@@ -306,7 +306,7 @@ def test_get_ticket_statistics_default_days_window(client: GlpiClient) -> None:
|
|
|
306
306
|
end = date.today()
|
|
307
307
|
start = end - timedelta(days=13)
|
|
308
308
|
assert f"date_creation=ge={start.isoformat()}" in captured["filter"]
|
|
309
|
-
assert f"date_creation=le={end.isoformat()}" in captured["filter"]
|
|
309
|
+
assert f"date_creation=le={end.isoformat()} 23:59:59" in captured["filter"]
|
|
310
310
|
|
|
311
311
|
|
|
312
312
|
# ---------------------------------------------------------------------------
|
|
@@ -570,7 +570,7 @@ def test_list_get_update_unlink_timeline_documents(client: GlpiClient) -> None:
|
|
|
570
570
|
|
|
571
571
|
rec = _Recorder(
|
|
572
572
|
get_payload=[
|
|
573
|
-
{"type": "Document_Item", "item": {"id": 1, "
|
|
573
|
+
{"type": "Document_Item", "item": {"id": 1, "filename": "report.txt"}},
|
|
574
574
|
]
|
|
575
575
|
)
|
|
576
576
|
rec.install(client)
|
|
@@ -578,7 +578,7 @@ def test_list_get_update_unlink_timeline_documents(client: GlpiClient) -> None:
|
|
|
578
578
|
assert items[0].id == 1
|
|
579
579
|
assert rec.calls[0]["endpoint"] == "Assistance/Ticket/7/Timeline/Document"
|
|
580
580
|
|
|
581
|
-
rec._get_payload = {"id": 1, "
|
|
581
|
+
rec._get_payload = {"id": 1, "filename": "report.txt"} # type: ignore[attr-defined]
|
|
582
582
|
doc = client.get_ticket_timeline_document(7, 1)
|
|
583
583
|
assert doc.id == 1
|
|
584
584
|
|
|
@@ -18,9 +18,6 @@ from pydantic import Field
|
|
|
18
18
|
from glpi_python_client.models._base import GlpiModel
|
|
19
19
|
from glpi_python_client.models.api_schema._common import IdNameRef
|
|
20
20
|
from glpi_python_client.models.api_schema.assistance._ticket import GetTicket
|
|
21
|
-
from glpi_python_client.models.api_schema.assistance.timeline._document import (
|
|
22
|
-
GetTimelineDocument,
|
|
23
|
-
)
|
|
24
21
|
from glpi_python_client.models.api_schema.assistance.timeline._followup import (
|
|
25
22
|
GetFollowup,
|
|
26
23
|
)
|
|
@@ -30,6 +27,7 @@ from glpi_python_client.models.api_schema.assistance.timeline._solution import (
|
|
|
30
27
|
from glpi_python_client.models.api_schema.assistance.timeline._task import (
|
|
31
28
|
GetTicketTask,
|
|
32
29
|
)
|
|
30
|
+
from glpi_python_client.models.api_schema.management._document import GetDocument
|
|
33
31
|
|
|
34
32
|
_MAX_DATETIME = datetime.max
|
|
35
33
|
|
|
@@ -184,15 +182,15 @@ class GlpiTicketContext(GlpiModel):
|
|
|
184
182
|
Linked followup records.
|
|
185
183
|
solutions : list[GetSolution], optional
|
|
186
184
|
Linked solution records.
|
|
187
|
-
documents : list[
|
|
188
|
-
Linked
|
|
185
|
+
documents : list[GetDocument], optional
|
|
186
|
+
Linked document records.
|
|
189
187
|
"""
|
|
190
188
|
|
|
191
189
|
ticket: GetTicket
|
|
192
190
|
tasks: list[GetTicketTask] = Field(default_factory=list)
|
|
193
191
|
followups: list[GetFollowup] = Field(default_factory=list)
|
|
194
192
|
solutions: list[GetSolution] = Field(default_factory=list)
|
|
195
|
-
documents: list[
|
|
193
|
+
documents: list[GetDocument] = Field(default_factory=list)
|
|
196
194
|
|
|
197
195
|
def to_markdown(
|
|
198
196
|
self,
|
|
@@ -331,9 +329,14 @@ class GlpiTicketContext(GlpiModel):
|
|
|
331
329
|
lines.append("")
|
|
332
330
|
lines.append("## Documents")
|
|
333
331
|
for document in self.documents:
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
332
|
+
label = (
|
|
333
|
+
document.filename
|
|
334
|
+
or document.name
|
|
335
|
+
or (
|
|
336
|
+
f"document #{document.id}"
|
|
337
|
+
if document.id is not None
|
|
338
|
+
else "document"
|
|
339
|
+
)
|
|
337
340
|
)
|
|
338
341
|
lines.append(f"- {label}")
|
|
339
342
|
|
|
@@ -38,11 +38,11 @@ def test_ticket_context_accepts_timeline_records() -> None:
|
|
|
38
38
|
"tasks": [{"id": 11, "content": "<p>do</p>"}],
|
|
39
39
|
"followups": [{"id": 12, "content": "<p>note</p>"}],
|
|
40
40
|
"solutions": [{"id": 13, "content": "<p>fix</p>"}],
|
|
41
|
-
"documents": [{"id": 14, "
|
|
41
|
+
"documents": [{"id": 14, "filename": "report.pdf"}],
|
|
42
42
|
}
|
|
43
43
|
context = GlpiTicketContext.model_validate(payload)
|
|
44
44
|
assert context.tasks[0].id == 11
|
|
45
|
-
assert context.documents[0].
|
|
45
|
+
assert context.documents[0].filename == "report.pdf"
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
def test_to_markdown_renders_header_and_status() -> None:
|
|
@@ -151,8 +151,8 @@ def test_to_markdown_renders_solution_and_documents() -> None:
|
|
|
151
151
|
"ticket": {"id": 7, "name": "Reset"},
|
|
152
152
|
"solutions": [{"id": 4, "content": "All fixed"}],
|
|
153
153
|
"documents": [
|
|
154
|
-
{"id": 11, "
|
|
155
|
-
{"id": 12
|
|
154
|
+
{"id": 11, "filename": "run.txt"},
|
|
155
|
+
{"id": 12},
|
|
156
156
|
],
|
|
157
157
|
}
|
|
158
158
|
)
|
|
@@ -160,8 +160,8 @@ def test_to_markdown_renders_solution_and_documents() -> None:
|
|
|
160
160
|
assert "### Solution #4" in rendered
|
|
161
161
|
assert "All fixed" in rendered
|
|
162
162
|
assert "## Documents" in rendered
|
|
163
|
-
assert "-
|
|
164
|
-
assert "- document #
|
|
163
|
+
assert "- run.txt" in rendered
|
|
164
|
+
assert "- document #12" in rendered
|
|
165
165
|
|
|
166
166
|
|
|
167
167
|
def test_to_markdown_handles_empty_timeline() -> None:
|
|
@@ -232,7 +232,7 @@ _FULL_PAYLOAD = {
|
|
|
232
232
|
"followups": [{"id": 10, "content": "followup body"}],
|
|
233
233
|
"tasks": [{"id": 20, "content": "task body", "duration": 600}],
|
|
234
234
|
"solutions": [{"id": 30, "content": "solution body"}],
|
|
235
|
-
"documents": [{"id": 40, "
|
|
235
|
+
"documents": [{"id": 40, "filename": "file.txt"}],
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: glpi-python-client
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: A typed Python client for GLPI ITSM APIs.
|
|
5
5
|
Project-URL: Homepage, https://github.com/baraline/glpi_python_client
|
|
6
6
|
Project-URL: Documentation, https://glpi-python-client.readthedocs.io/en/latest/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
glpi_python_client/__init__.py,sha256=
|
|
1
|
+
glpi_python_client/__init__.py,sha256=L2Js7OyaIUdZygG-B1h_T3w-ePdI3iMs6HqCJxuXZ1E,2924
|
|
2
2
|
glpi_python_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
glpi_python_client/auth/__init__.py,sha256=rvvca0KTgvI2bkTSYX-h5KxpPpHQd2n9UFYl0nHAJ_Y,457
|
|
4
4
|
glpi_python_client/auth/_v1_session.py,sha256=R_SlKBrFJXCmXF0K3rmGAqkxH8cjaltItOJstcd-GVY,10263
|
|
@@ -16,7 +16,7 @@ glpi_python_client/clients/api/assistance/__init__.py,sha256=HCvaeTmmPeaU1FVIerC
|
|
|
16
16
|
glpi_python_client/clients/api/assistance/_team.py,sha256=jWTZfRZOdfB2bpVtl7A_eYT9KEpnuNH4TpJ_-4hCmBM,3848
|
|
17
17
|
glpi_python_client/clients/api/assistance/_ticket.py,sha256=_DPbTsXvhdDY5RmIMvm0Q6Bnzvkqpe_5Tu0QZMFueZQ,7455
|
|
18
18
|
glpi_python_client/clients/api/assistance/timeline/__init__.py,sha256=ANN-7VCllLJjNBxfn4xvFBpobtRVby-GFZHc5_lF6tU,598
|
|
19
|
-
glpi_python_client/clients/api/assistance/timeline/_document.py,sha256=
|
|
19
|
+
glpi_python_client/clients/api/assistance/timeline/_document.py,sha256=JFeYHAHvGIGIxe_1Jb6HGpEVYilZg1zgdIosK9iLg94,7197
|
|
20
20
|
glpi_python_client/clients/api/assistance/timeline/_followup.py,sha256=E03icdCrcLL1aW_QUWZXD1-pc97XIeJqlI8BzEo35SU,6077
|
|
21
21
|
glpi_python_client/clients/api/assistance/timeline/_solution.py,sha256=FraEVi_1ms-oNc2FdA94qZYeSu-xG7u_ZZmoUBSeJmE,6012
|
|
22
22
|
glpi_python_client/clients/api/assistance/timeline/_task.py,sha256=VIU0m1KLB6fFrEAwH_qCQkKv-_QN-8DYOgQyQfKEJ7A,5725
|
|
@@ -41,15 +41,15 @@ glpi_python_client/clients/commons/tests/test_payloads.py,sha256=6vGSg1fQ_-wgt9b
|
|
|
41
41
|
glpi_python_client/clients/commons/tests/test_transport.py,sha256=gccXa-gL8vmlpgUcA4eSSoTqVAgcz1kkPTfoAik_6Fg,4807
|
|
42
42
|
glpi_python_client/clients/custom/__init__.py,sha256=vKkUt_zgahHC0ZC-68fZAdez1-K2ahFZCZofI9rpfFA,1416
|
|
43
43
|
glpi_python_client/clients/custom/_pagination_async.py,sha256=ivRAznT1nqsmZuN2kwonR_NXti877wztFVwjzMUfSb4,5857
|
|
44
|
-
glpi_python_client/clients/custom/_statistics.py,sha256=
|
|
45
|
-
glpi_python_client/clients/custom/_statistics_async.py,sha256=
|
|
44
|
+
glpi_python_client/clients/custom/_statistics.py,sha256=Nc-QZf-R4UHSMlW-Op4xqI6lvgQziS5qNEJ4Y7JVzow,25663
|
|
45
|
+
glpi_python_client/clients/custom/_statistics_async.py,sha256=4KojIL7AOoM4vDif1VgXAVLUO2rSOCSvU4kUo-2Mvm0,19237
|
|
46
46
|
glpi_python_client/clients/custom/_ticket_context.py,sha256=OhHG_HHuHP97V9-SRo49QmHgnUKMtZDWxlyUC8aFtWk,2438
|
|
47
47
|
glpi_python_client/clients/custom/_ticket_context_async.py,sha256=S1oKYtTLHuOz7lypgzytqItKnlwISIAhUMNYqenZxro,2685
|
|
48
|
-
glpi_python_client/clients/custom/tests/test_statistics.py,sha256=
|
|
48
|
+
glpi_python_client/clients/custom/tests/test_statistics.py,sha256=Sb328gPnRGq6yJdAe6EBpdZ5WlMyUwzGeInEJ6R6GZY,19271
|
|
49
49
|
glpi_python_client/clients/custom/tests/test_statistics_async.py,sha256=I5EQnC4yiMTGjtiHRs2MGXgZp94qmGz35xGcAB7dneQ,7595
|
|
50
50
|
glpi_python_client/clients/custom/tests/test_ticket_context.py,sha256=JdfZ0sKCLVx30-TWa0ZwSdbxdHLGMy1UTzGR4gNjFDc,1977
|
|
51
51
|
glpi_python_client/clients/tests/__init__.py,sha256=3_krQG_d1e51Agj54B-dzQtCEya3BdaSOemvczXCk4Q,53
|
|
52
|
-
glpi_python_client/clients/tests/test_api_coverage.py,sha256=
|
|
52
|
+
glpi_python_client/clients/tests/test_api_coverage.py,sha256=bNvXr5huXsg9LgeMYHA9EqYyJzmJeerFgCLcPQJuxHc,29504
|
|
53
53
|
glpi_python_client/clients/tests/test_async_branches.py,sha256=fjnCEbmBAENZyY4o2MLl6tEy_thGgymZvNJasMQk25I,23558
|
|
54
54
|
glpi_python_client/clients/tests/test_async_smoke.py,sha256=9yfjkrgvm7JZZAvds6hW96vWb0L7YR6kFochosne_Fc,4948
|
|
55
55
|
glpi_python_client/clients/tests/test_glpi_client.py,sha256=e8OklDWV4mJhTsqyNUh0LvgQ_zxkt3HFKXR1WyPSlrc,8227
|
|
@@ -92,13 +92,13 @@ glpi_python_client/models/api_schema/management/_document.py,sha256=RzKF-rNlz8Cs
|
|
|
92
92
|
glpi_python_client/models/api_schema/management/tests/__init__.py,sha256=c_aRMSPAlwOgz_YlkII5mvYgr780F4Du4eSnZn5ITpM,63
|
|
93
93
|
glpi_python_client/models/api_schema/management/tests/test_management_schemas.py,sha256=wMM8287WBhDUezKezCgINMyxqwjtYxpYRTKkRpmRNTI,1473
|
|
94
94
|
glpi_python_client/models/custom_schema/__init__.py,sha256=Usp592x9OWws30vU1rEXbkkRBhcgytM5nxRPTB1gqhY,500
|
|
95
|
-
glpi_python_client/models/custom_schema/_ticket_context.py,sha256=
|
|
95
|
+
glpi_python_client/models/custom_schema/_ticket_context.py,sha256=bf0nUUcIwGjTPHNeecWX8RPepeK1UW1YghEBWU1OcYM,13591
|
|
96
96
|
glpi_python_client/models/custom_schema/tests/__init__.py,sha256=62-bctnIbC39LbL18mCX10ItpxeqFvpORXslREcqjzs,55
|
|
97
|
-
glpi_python_client/models/custom_schema/tests/test_ticket_context.py,sha256=
|
|
97
|
+
glpi_python_client/models/custom_schema/tests/test_ticket_context.py,sha256=MbJIRFp9PZ4rNZ-VwUy1CoIn6hmTcybKNalpu5oIppY,13963
|
|
98
98
|
glpi_python_client/testing/__init__.py,sha256=ilUPAUlbMa2NuXiRGZjC97argNKMnJ-heK_kf7fotkE,512
|
|
99
99
|
glpi_python_client/testing/fixtures.py,sha256=EYj0cKjlM6eCgnNHLHrsZhcwFAfwifVyZihB6Pv2u4s,764
|
|
100
100
|
glpi_python_client/testing/utils.py,sha256=GJxsFNTB64JDmaPS6ox2t36vAbzOGVBGuEHSMjs4fsI,3574
|
|
101
|
-
glpi_python_client-0.3.
|
|
102
|
-
glpi_python_client-0.3.
|
|
103
|
-
glpi_python_client-0.3.
|
|
104
|
-
glpi_python_client-0.3.
|
|
101
|
+
glpi_python_client-0.3.3.dist-info/METADATA,sha256=Zqt2bHNRaEG8feqD8wm_yqhT_4UEka1ouP2RHfdd6ts,7641
|
|
102
|
+
glpi_python_client-0.3.3.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
103
|
+
glpi_python_client-0.3.3.dist-info/licenses/LICENSE,sha256=nL8re-TIKkxCoL7OkSBja6EB4NsQR1HoOJgxv_MEhtc,1088
|
|
104
|
+
glpi_python_client-0.3.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|