Skip to content

Commit c90b858

Browse files
committed
cleanup airtable endpoint
1 parent 61b44fb commit c90b858

3 files changed

Lines changed: 36 additions & 28 deletions

File tree

File renamed without changes.

pybot/endpoints/airtable/requests.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@ async def mentor_request(request: dict, app: SirBot) -> None:
1919
Queries Airtable to find mentors matching the requested skillsets and posts a message
2020
in the Mentor slack channel.
2121
"""
22+
slack = app.plugins['slack'].api
23+
airtable = app.plugins['airtable'].api
24+
2225
id_fallback = f" [couldn't find user - email provided: {request['email']} ]"
23-
slack_id = await _slack_user_id_from_email(request['email'], app, fallback=id_fallback)
26+
slack_id = await _slack_user_id_from_email(request['email'], slack, fallback=id_fallback)
2427

2528
futures = [app.plugins['airtable'].api.translate_service_id(request['service']),
26-
_get_requested_mentor(request.get('requested_mentor'), app),
27-
_get_matching_skillset_mentors(request.get('skillsets'), app)]
29+
_get_requested_mentor(request.get('requested_mentor'), slack, airtable),
30+
_get_matching_skillset_mentors(request.get('skillsets'), slack, airtable)]
2831

2932
service_translation, requested_mentor_message, mentors = await asyncio.gather(*futures)
3033

pybot/endpoints/airtable/utils.py

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,63 @@
55
from slack import ROOT_URL, methods
66
from slack.events import Message
77
from slack.exceptions import SlackAPIError
8-
9-
from pybot.endpoints.airtable.messages import (claim_mentee_attachment,
10-
mentor_request_text)
8+
from slack.io.aiohttp import SlackAPI
9+
from pybot.plugins.airtable.api import AirtableAPI
10+
from .message_templates.messages import claim_mentee_attachment, mentor_request_text
1111

1212
MENTORS_CHANNEL = os.environ.get("MENTORS_CHANNEL") or "G1DRT62UC"
1313

1414

15-
async def _get_requested_mentor(requested_mentor: Optional[str], app: SirBot) -> Optional[str]:
15+
async def _get_requested_mentor(requested_mentor: Optional[str], slack: SlackAPI,
16+
airtable: AirtableAPI) -> Optional[str]:
1617
try:
1718
if not requested_mentor:
1819
return None
19-
mentor = await app.plugins['airtable'].api.get_mentor_from_record_id(requested_mentor)
20+
mentor = await airtable.get_mentor_from_record_id(requested_mentor)
2021
email = mentor['Email']
21-
slack_user_id = await _slack_user_id_from_email(email, app)
22+
slack_user_id = await _slack_user_id_from_email(email, slack)
2223
return f" Requested mentor: <@{slack_user_id}>"
2324
except SlackAPIError:
2425
return None
2526

2627

27-
async def _slack_user_id_from_email(email: str, app: SirBot, fallback: Optional[str] = None) -> str:
28-
response = Message()
29-
response['email'] = email
28+
async def _slack_user_id_from_email(email: str, slack: SlackAPI, fallback: Optional[str] = None) -> str:
3029
try:
31-
response = await app.plugins['slack'].api.query(url=ROOT_URL + 'users.lookupByEmail', data=response)
30+
response = await slack.query(url=ROOT_URL + 'users.lookupByEmail', data={'email': email})
3231
return response['user']['id']
3332
except SlackAPIError:
3433
# TODO: something better here
3534
return fallback or 'Slack User'
3635

3736

38-
async def _get_matching_skillset_mentors(skillsets: str, app: SirBot) -> List[str]:
37+
async def _get_matching_skillset_mentors(skillsets: str, slack: SlackAPI, airtable: AirtableAPI) -> List[str]:
3938
if not skillsets:
4039
return ['No skillset Given']
41-
mentors = await app.plugins['airtable'].api.find_mentors_with_matching_skillsets(skillsets)
42-
mentor_ids = [await _slack_user_id_from_email(mentor['Email'], app, fallback=mentor['Slack Name']) for mentor in
40+
mentors = await airtable.find_mentors_with_matching_skillsets(skillsets)
41+
mentor_ids = [await _slack_user_id_from_email(mentor['Email'], slack, fallback=mentor['Slack Name']) for mentor in
4342
mentors]
4443
return [f'<@{mentor}>' for mentor in mentor_ids]
4544

4645

4746
def _create_messages(mentors: List[str], request: dict, requested_mentor_message: str, service_translation: str,
48-
slack_id: str) -> Tuple[Message, Message, Message]:
49-
first_message = Message()
50-
first_message['text'] = mentor_request_text(slack_id, service_translation, request.get('skillsets', None),
51-
requested_mentor_message)
52-
first_message['attachments'] = claim_mentee_attachment(request['record'])
53-
first_message['channel'] = MENTORS_CHANNEL
54-
details_message = Message()
55-
details_message['text'] = f"Additional details: {request.get('details', 'None Given')}"
56-
details_message['channel'] = MENTORS_CHANNEL
57-
matching_mentors_message = Message()
58-
matching_mentors_message['text'] = "Mentors matching all or some of the requested skillsets: " + ' '.join(mentors)
59-
matching_mentors_message['channel'] = MENTORS_CHANNEL
47+
slack_id: str) -> Tuple[dict, dict, dict]:
48+
first_message = {
49+
'text': mentor_request_text(slack_id, service_translation, request.get('skillsets', None),
50+
requested_mentor_message),
51+
'attachments': claim_mentee_attachment(request['record']),
52+
'channel': MENTORS_CHANNEL
53+
}
54+
55+
details_message = {
56+
'text': f"Additional details: {request.get('details', 'None Given')}",
57+
'channel': MENTORS_CHANNEL
58+
}
59+
60+
matching_mentors_message = {
61+
'text': "Mentors matching all or some of the requested skillsets: " + ' '.join(mentors),
62+
'channel': MENTORS_CHANNEL
63+
}
64+
6065
return first_message, details_message, matching_mentors_message
6166

6267

0 commit comments

Comments
 (0)