brynq-sdk-vplan 1.0.1__tar.gz → 1.2.0__tar.gz
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.
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/PKG-INFO +1 -1
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/__init__.py +2 -0
- brynq_sdk_vplan-1.2.0/brynq_sdk_vplan/leave.py +110 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/order.py +1 -1
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/project.py +2 -2
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan.egg-info/PKG-INFO +1 -1
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan.egg-info/SOURCES.txt +1 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/setup.py +1 -1
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/activity.py +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/get_data.py +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/item.py +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/resource.py +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/time_tracking.py +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan/user.py +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan.egg-info/dependency_links.txt +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan.egg-info/not-zip-safe +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan.egg-info/requires.txt +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan.egg-info/top_level.txt +0 -0
- {brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/setup.cfg +0 -0
|
@@ -8,6 +8,7 @@ from .project import Project
|
|
|
8
8
|
from .resource import Resource
|
|
9
9
|
from .time_tracking import TimeTracking
|
|
10
10
|
from .user import User
|
|
11
|
+
from .leave import Leave
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class VPlan(BrynQ):
|
|
@@ -27,6 +28,7 @@ class VPlan(BrynQ):
|
|
|
27
28
|
self.resource = Resource(self)
|
|
28
29
|
self.time_tracking = TimeTracking(self)
|
|
29
30
|
self.user = User(self)
|
|
31
|
+
self.leave = Leave(self)
|
|
30
32
|
|
|
31
33
|
def _get_credentials(self, label) -> dict:
|
|
32
34
|
"""
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
from typing import Union, List, Any
|
|
3
|
+
import warnings
|
|
4
|
+
import json
|
|
5
|
+
from .get_data import GetData
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Leave:
|
|
9
|
+
def __init__(self, vplan):
|
|
10
|
+
"""
|
|
11
|
+
Initialize the GetData class.
|
|
12
|
+
Args: vplan: contains the vplan object with the headers and base_url
|
|
13
|
+
"""
|
|
14
|
+
self.vplan = vplan
|
|
15
|
+
self.get_data = GetData(vplan)
|
|
16
|
+
|
|
17
|
+
def get_leave(self, resource_id: str) -> requests.Response:
|
|
18
|
+
"""
|
|
19
|
+
There is no documentation for this method available
|
|
20
|
+
|
|
21
|
+
This method constructs a request URL based on the endpoint and sends a GET request
|
|
22
|
+
to the vPlan API.
|
|
23
|
+
|
|
24
|
+
Args: resource_id (str): The id of the resource to get the leave from
|
|
25
|
+
|
|
26
|
+
Returns: requests.Response: The response from the vPlan API.
|
|
27
|
+
"""
|
|
28
|
+
url = f"{self.vplan.base_url}resource/{resource_id}/schedule_deviation"
|
|
29
|
+
response = requests.request('GET', url, headers=self.vplan.headers)
|
|
30
|
+
return response
|
|
31
|
+
|
|
32
|
+
def post_leave(self, resource_id: str, data: dict) -> requests.Response:
|
|
33
|
+
"""
|
|
34
|
+
There is no documentation for this method available
|
|
35
|
+
|
|
36
|
+
This method constructs a request URL based on the endpoint and sends a POST request
|
|
37
|
+
to the vPlan API with the provided data.
|
|
38
|
+
|
|
39
|
+
Args: resource_id (str): The resource id of the employee to add the leave to
|
|
40
|
+
data (dict): The data to create the new order with.
|
|
41
|
+
|
|
42
|
+
Returns: requests.Response: The response from the vPlan API.
|
|
43
|
+
"""
|
|
44
|
+
required_fields = ['type', 'time', 'description', 'start_date', 'end_date']
|
|
45
|
+
allowed_fields = []
|
|
46
|
+
self.__check_fields(data=data, required_fields=required_fields, allowed_fields=allowed_fields)
|
|
47
|
+
|
|
48
|
+
url = f"{self.vplan.base_url}resource/{resource_id}/schedule_deviation"
|
|
49
|
+
base_body = json.dumps({
|
|
50
|
+
"type": data['type'],
|
|
51
|
+
"time": data['time'],
|
|
52
|
+
"description": data['description'],
|
|
53
|
+
"start_date": data['start_date'],
|
|
54
|
+
"end_date": data['end_date']
|
|
55
|
+
})
|
|
56
|
+
response = requests.request('POST', url, headers=self.vplan.post_headers, data=base_body)
|
|
57
|
+
return response
|
|
58
|
+
|
|
59
|
+
def update_leave(self, resource_id: str, leave_id: str, data: dict) -> requests.Response:
|
|
60
|
+
"""
|
|
61
|
+
There is no documentation for this method available
|
|
62
|
+
|
|
63
|
+
This method constructs a request URL based on the endpoint and sends a POST request
|
|
64
|
+
to the vPlan API with the provided data.
|
|
65
|
+
|
|
66
|
+
Args: resource_id (str): The resource id of the employee to add the leave to
|
|
67
|
+
leave_id (str): The id of the leave to update
|
|
68
|
+
data (dict): The data to create the new order with.
|
|
69
|
+
|
|
70
|
+
Returns: requests.Response: The response from the vPlan API.
|
|
71
|
+
"""
|
|
72
|
+
required_fields = ['type', 'time', 'description', 'start_date', 'end_date']
|
|
73
|
+
allowed_fields = []
|
|
74
|
+
self.__check_fields(data=data, required_fields=required_fields, allowed_fields=allowed_fields)
|
|
75
|
+
|
|
76
|
+
url = f"{self.vplan.base_url}resource/{resource_id}/schedule_deviation/{leave_id}"
|
|
77
|
+
base_body = json.dumps({
|
|
78
|
+
"type": data['type'],
|
|
79
|
+
"time": data['time'],
|
|
80
|
+
"description": data['description'],
|
|
81
|
+
"start_date": data['start_date'],
|
|
82
|
+
"end_date": data['end_date']
|
|
83
|
+
})
|
|
84
|
+
response = requests.request('PUT', url, headers=self.vplan.post_headers, json=base_body)
|
|
85
|
+
return response
|
|
86
|
+
|
|
87
|
+
def delete_leave(self, resource_id: str, leave_id: str):
|
|
88
|
+
"""
|
|
89
|
+
There is no documentation for this method available
|
|
90
|
+
This method constructs a request URL based on the endpoint and sends a DELETE request to the vPlan API.
|
|
91
|
+
:param resource_id: The resource id of the employee to delete the the leave to
|
|
92
|
+
:param leave_id: The id of the leave to delete
|
|
93
|
+
"""
|
|
94
|
+
url = f"{self.vplan.base_url}resource/{resource_id}/schedule_deviation/{leave_id}"
|
|
95
|
+
response = requests.request('DELETE', url, headers=self.vplan.headers)
|
|
96
|
+
return response
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@staticmethod
|
|
100
|
+
def __check_fields(data: Union[dict, List], required_fields: List, allowed_fields: List):
|
|
101
|
+
if isinstance(data, dict):
|
|
102
|
+
data = data.keys()
|
|
103
|
+
|
|
104
|
+
for field in data:
|
|
105
|
+
if field not in allowed_fields and field not in required_fields:
|
|
106
|
+
warnings.warn('Field {field} is not implemented. Optional fields are: {allowed_fields}'.format(field=field, allowed_fields=tuple(allowed_fields)))
|
|
107
|
+
|
|
108
|
+
for field in required_fields:
|
|
109
|
+
if field not in data:
|
|
110
|
+
raise ValueError('Field {field} is required. Required fields are: {required_fields}'.format(field=field, required_fields=tuple(required_fields)))
|
|
@@ -92,7 +92,7 @@ class Order:
|
|
|
92
92
|
base_body.update({"external_ref": data['external_ref']}) if 'external_ref' in data else base_body
|
|
93
93
|
base_body.update({"board_id": data['board_id']}) if 'board_id' in data else base_body
|
|
94
94
|
|
|
95
|
-
response = requests.request('POST', url, headers=self.vplan.post_headers, data=base_body)
|
|
95
|
+
response = requests.request('POST', url, headers=self.vplan.post_headers, data=json.dumps(base_body))
|
|
96
96
|
return response
|
|
97
97
|
|
|
98
98
|
def update_order(self, order_id: str, data: dict) -> requests.Response:
|
|
@@ -74,7 +74,7 @@ class Project:
|
|
|
74
74
|
base_body.update({"description": data['description']}) if 'description' in data else base_body
|
|
75
75
|
base_body.update({"external_ref": data['external_ref']}) if 'external_ref' in data else base_body
|
|
76
76
|
|
|
77
|
-
response = requests.request('POST', url, headers=self.vplan.post_headers, data=base_body)
|
|
77
|
+
response = requests.request('POST', url, headers=self.vplan.post_headers, data=json.dumps(base_body))
|
|
78
78
|
return response
|
|
79
79
|
|
|
80
80
|
def update_project(self, project_id: str, data: dict) -> requests.Response:
|
|
@@ -103,7 +103,7 @@ class Project:
|
|
|
103
103
|
base_body.update({"description": data['description']}) if 'description' in data else base_body
|
|
104
104
|
base_body.update({"external_ref": data['external_ref']}) if 'external_ref' in data else base_body
|
|
105
105
|
|
|
106
|
-
response = requests.request('PUT', url, headers=self.vplan.post_headers, json=base_body)
|
|
106
|
+
response = requests.request('PUT', url, headers=self.vplan.post_headers, json=json.dumps(base_body))
|
|
107
107
|
return response
|
|
108
108
|
|
|
109
109
|
def delete_project(self, project_id):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brynq_sdk_vplan-1.0.1 → brynq_sdk_vplan-1.2.0}/brynq_sdk_vplan.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|