Example #1
0
 def post(self, request, id):
     # reminding someone
     t_u = ResourceUser.objects.get(id=id)
     t_u.reminded = datetime.now()
     t_u.save()
     if t_u.user.slack_user_id:
         s = SlackBot()
         s.set_user(t_u.user)
         blocks = s.format_resource_block(pre_message=_('Don\'t forget this to do item!'), items=[t_u])
         s.send_message(blocks=blocks)
     else:
         send_reminder_email(t_u)
     return Response()
Example #2
0
 def sync_slack(self, request):
     s = SlackBot()
     users = s.get_all_users()
     for i in users:
         if i['id'] != 'USLACKBOT' and not i[
                 'is_bot'] and 'first_name' in i['profile']:
             get_user_model().objects.get_or_create(
                 email=i['profile']['email'],
                 defaults={
                     'position': i['profile']['title'],
                     'phone': i['profile']['phone'],
                     'first_name': i['profile']['first_name'],
                     'last_name': i['profile']['last_name']
                 })
     return Response()
Example #3
0
 def put(self, request, id):
     # reopen task
     t_u = ResourceUser.objects.get(id=id)
     t_u.completed_course = False
     t_u.answers.clear()
     t_u.save()
     if t_u.user.slack_user_id:
         s = SlackBot()
         s.set_user(t_u.user)
         blocks = s.format_resource_block(
             pre_message=_('This task has just been reopened! ' + request.data['message']), items=[t_u])
         s.send_message(blocks=blocks)
     else:
         email_reopen_task(t_u, request.data['message'], t_u.user)
     return Response()
Example #4
0
 def access(self, request, pk=None):
     new_hire = self.get_object()
     if request.method == 'PUT':
         ScheduledAccess.objects.create(
             new_hire=new_hire,
             integration=request.data['integration'],
             email=request.data['email'])
         return Response({'status': 'pending'})
     s = SlackBot() if request.data['integration'] == 1 else Google()
     if s.find_by_email(new_hire.email):
         return Response({'status': 'exists'})
     items = ScheduledAccess.objects.filter(
         new_hire=new_hire,
         integration=request.data['integration']).exclude(status=1)
     if items.exists():
         return Response({'status': 'pending'})
     return Response({'status': 'not_found'})
Example #5
0
 def give_slack_access(self, request, pk):
     user = self.get_object()
     s = SlackBot()
     response = s.find_by_email(user.email)
     if response:
         user.slack_user_id = response['user']['id']
         user.save()
         translation.activate(user.language)
         blocks = [{
             "type": "section",
             "text": {
                 "type":
                 "mrkdwn",
                 "text":
                 _("Click on the button to see all the categories that are available to you!"
                   )
             }
         }, {
             "type":
             "actions",
             "elements": [{
                 "type": "button",
                 "text": {
                     "type": "plain_text",
                     "text": _("resources")
                 },
                 "style": "primary",
                 "value": "show:resources"
             }]
         }]
         s.set_user(user)
         res = s.send_message(blocks=blocks)
         user.slack_channel_id = res['channel']
         user.save()
         return Response()
     return Response(
         {
             "error":
             _('We couldn\'t find anyone in Slack with the same email address.'
               )
         },
         status=status.HTTP_400_BAD_REQUEST)
Example #6
0
 def sync_slack(self, request):
     s = SlackBot()
     users = s.get_all_users()
     for i in users:
         if i['id'] != 'USLACKBOT' and not i['is_bot'] and 'real_name' in i[
                 'profile']:
             if len(i['profile']['real_name'].split()) > 1:
                 first_name = i['profile']['real_name'].split()[0]
                 last_name = i['profile']['real_name'].split()[1]
             else:
                 first_name = i['profile']['real_name']
                 last_name = ''
             get_user_model().objects.get_or_create(
                 email=i['profile']['email'],
                 defaults={
                     'position': i['profile']['title'],
                     'phone': i['profile']['phone'],
                     'first_name': first_name,
                     'last_name': last_name
                 })
     return Response()