-
Notifications
You must be signed in to change notification settings - Fork 0
/
engineer_removal.py
59 lines (49 loc) · 1.96 KB
/
engineer_removal.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
""" This code is triggered when an Engineer Removal ticket is created """
import shared.shared_sd as shared_sd
import shared.shared_ldap as shared_ldap
import shared.custom_fields as custom_fields
import shared.globals
import linaro_shared
CAPABILITIES = [
"COMMENT",
"CREATE"
]
def comment(ticket_data):
""" Triggered when a comment is posted """
_, keyword = shared_sd.central_comment_handler(
[], ["help", "retry"])
if keyword == "help":
shared_sd.post_comment(("All bot commands must be internal comments and the first word/phrase in the comment.\r\n\r\n"
"Valid commands are:\r\n"
"* retry to ask the bot to process the request again after issues have been resolved."), False)
elif keyword == "retry":
print("engineer_removal processing retry keyword & triggering create function")
create(ticket_data)
def create(ticket_data):
linaro_shared.check_approval_assignee_member_engineer(ticket_data)
cf_engineer = custom_fields.get("Assignee/Member Engineer")
ldap_dn = linaro_shared.get_dn_from_account_id(ticket_data, cf_engineer)
if ldap_dn is None:
return
ldap_search = shared_ldap.get_object(
ldap_dn,
['employeeType', 'secretary'])
if ldap_search is None:
return
print("engineer_removal:")
print(ldap_search)
employee_type = ldap_search.employeeType.value
if employee_type not in [
"Assignee",
"Member Engineer",
"Affiliate Engineer"
]:
return
# If there is a "secretary" record for this person, add them as a request
# participant.
secretary = ldap_search.secretary.value
if secretary is not None:
secretary = shared_ldap.get_email_address(secretary)
print(f"engineer_removal: secretary is {secretary}")
if secretary is not None and secretary != shared.globals.REPORTER:
shared_sd.add_request_participant(secretary)