|
10 | 10 | from .message_templates.messages import claim_mentee_attachment, mentor_request_text |
11 | 11 |
|
12 | 12 |
|
13 | | -async def _get_requested_mentor(requested_mentor: Optional[str], slack: SlackAPI, |
14 | | - airtable: AirtableAPI) -> Optional[str]: |
| 13 | +async def _get_requested_mentor( |
| 14 | + requested_mentor: Optional[str], slack: SlackAPI, airtable: AirtableAPI |
| 15 | +) -> Optional[str]: |
15 | 16 | try: |
16 | 17 | if not requested_mentor: |
17 | 18 | return None |
18 | | - mentor = await airtable.get_row_from_record_id('Mentors', requested_mentor) |
19 | | - email = mentor['Email'] |
| 19 | + mentor = await airtable.get_row_from_record_id("Mentors", requested_mentor) |
| 20 | + email = mentor["Email"] |
20 | 21 | slack_user_id = await _slack_user_id_from_email(email, slack) |
21 | 22 | return f" Requested mentor: <@{slack_user_id}>" |
22 | 23 | except SlackAPIError: |
23 | 24 | return None |
24 | 25 |
|
25 | 26 |
|
26 | | -async def _slack_user_id_from_email(email: str, slack: SlackAPI, fallback: Optional[str] = None) -> str: |
| 27 | +async def _slack_user_id_from_email( |
| 28 | + email: str, slack: SlackAPI, fallback: Optional[str] = None |
| 29 | +) -> str: |
27 | 30 | try: |
28 | | - response = await slack.query(url=ROOT_URL + 'users.lookupByEmail', data={'email': email}) |
29 | | - return response['user']['id'] |
| 31 | + response = await slack.query( |
| 32 | + url=ROOT_URL + "users.lookupByEmail", data={"email": email} |
| 33 | + ) |
| 34 | + return response["user"]["id"] |
30 | 35 | except SlackAPIError: |
31 | | - # TODO: something better here |
32 | | - return fallback or 'Slack User' |
| 36 | + return fallback or "Slack User" |
33 | 37 |
|
34 | 38 |
|
35 | | -async def _get_matching_skillset_mentors(skillsets: str, slack: SlackAPI, airtable: AirtableAPI) -> List[str]: |
| 39 | +async def _get_matching_skillset_mentors( |
| 40 | + skillsets: str, slack: SlackAPI, airtable: AirtableAPI |
| 41 | +) -> List[str]: |
36 | 42 | if not skillsets: |
37 | | - return ['No skillset Given'] |
| 43 | + return ["No skillset Given"] |
38 | 44 | mentors = await airtable.find_mentors_with_matching_skillsets(skillsets) |
39 | | - mentor_ids = [await _slack_user_id_from_email(mentor['Email'], slack, fallback=mentor['Slack Name']) for mentor in |
40 | | - mentors] |
41 | | - return [f'<@{mentor}>' for mentor in mentor_ids] |
| 45 | + mentor_ids = [ |
| 46 | + await _slack_user_id_from_email( |
| 47 | + mentor["Email"], slack, fallback=mentor["Slack Name"] |
| 48 | + ) |
| 49 | + for mentor in mentors |
| 50 | + ] |
| 51 | + return [f"<@{mentor}>" for mentor in mentor_ids] |
42 | 52 |
|
43 | 53 |
|
44 | | -def _create_messages(mentors: List[str], request: dict, requested_mentor_message: str, service_translation: str, |
45 | | - slack_id: str) -> Tuple[dict, dict, dict]: |
| 54 | +def _create_messages( |
| 55 | + mentors: List[str], |
| 56 | + request: dict, |
| 57 | + requested_mentor_message: str, |
| 58 | + service_translation: str, |
| 59 | + slack_id: str, |
| 60 | +) -> Tuple[dict, dict, dict]: |
46 | 61 | first_message = { |
47 | | - 'text': mentor_request_text(slack_id, service_translation, request.get('skillsets', None), |
48 | | - requested_mentor_message), |
49 | | - 'attachments': claim_mentee_attachment(request['record']), |
50 | | - 'channel': MENTOR_CHANNEL |
| 62 | + "text": mentor_request_text( |
| 63 | + slack_id, |
| 64 | + service_translation, |
| 65 | + request.get("skillsets", None), |
| 66 | + requested_mentor_message, |
| 67 | + ), |
| 68 | + "attachments": claim_mentee_attachment(request["record"]), |
| 69 | + "channel": MENTOR_CHANNEL, |
51 | 70 | } |
52 | 71 |
|
53 | 72 | details_message = { |
54 | | - 'text': f"Additional details: {request.get('details', 'None Given')}", |
55 | | - 'channel': MENTOR_CHANNEL |
| 73 | + "text": f"Additional details: {request.get('details', 'None Given')}", |
| 74 | + "channel": MENTOR_CHANNEL, |
56 | 75 | } |
57 | 76 |
|
58 | 77 | matching_mentors_message = { |
59 | | - 'text': "Mentors matching all or some of the requested skillsets: " + ' '.join(mentors), |
60 | | - 'channel': MENTOR_CHANNEL |
| 78 | + "text": "Mentors matching all or some of the requested skillsets: " |
| 79 | + + " ".join(mentors), |
| 80 | + "channel": MENTOR_CHANNEL, |
61 | 81 | } |
62 | 82 |
|
63 | 83 | return first_message, details_message, matching_mentors_message |
64 | 84 |
|
65 | 85 |
|
66 | 86 | async def _post_messages(parent: Message, children: List[Message], app: SirBot) -> None: |
67 | | - response = await app.plugins['slack'].api.query(url=methods.CHAT_POST_MESSAGE, data=parent) |
68 | | - timestamp = response['ts'] |
| 87 | + response = await app.plugins["slack"].api.query( |
| 88 | + url=methods.CHAT_POST_MESSAGE, data=parent |
| 89 | + ) |
| 90 | + timestamp = response["ts"] |
69 | 91 |
|
70 | 92 | for child in children: |
71 | | - child['thread_ts'] = timestamp |
72 | | - await app.plugins['slack'].api.query(url=methods.CHAT_POST_MESSAGE, data=child) |
| 93 | + child["thread_ts"] = timestamp |
| 94 | + await app.plugins["slack"].api.query(url=methods.CHAT_POST_MESSAGE, data=child) |
0 commit comments