예제 #1
0
파일: photo.py 프로젝트: ganap/so
    def post(self, request, *args, **kwargs):
        if not request.user.is_authenticated():
            return Response({}, status.HTTP_401_UNAUTHORIZED)
        data = dict(request.data)
        photo = data['photo'][0]
        name = photo.name
        ext = os.path.splitext(name)[-1]
        user_pk = data.get('user_pk', [0])
        user_pk = int(user_pk[0])
        if not user_pk:
            user_pk = request.user.pk
            user = request.user
        else:
            user = models.MainUser.objects.get(pk=user_pk)
            if request.user.pk != user_pk:
                if request.user.pk not in user.pk_can_edit:
                    if not request.user.is_admin:
                        return Response({}, status.HTTP_403_FORBIDDEN)

        filepath = "profile_photos/" + \
            helpers.id_generator() + str(helpers.timestamp_sec() / 100) + ext

        helpers.fs.save_file(filepath, photo)
        helpers.fs.generate_single_avatar(filepath, user.pk)
        if not user.is_organization and not user.is_expert:
            patient = users.Patient.objects.get(pk=user.patient)
            patient.photo = [filepath]
            patient.save()
        elif user.is_expert:
            expert = users.Expert.objects.get(pk=user.expert)
            expert.photo = [filepath]
            expert.save()

        return Response({'path': filepath})
예제 #2
0
 def callback_call(self, obj):
     room = str(helpers.timestamp_sec())
     print(obj)
     self.sendMsgToAll('incoming_call', {'user': self.user.owner,
                                         'room': room},
                       user_pk=obj['to_user_pk'])
     self.sendMsgToSelf("call", {'room': room})
예제 #3
0
파일: photo.py 프로젝트: ganap/so
    def post(self, request, *args, **kwargs):
        if not request.user.is_authenticated():
            return Response({}, status.HTTP_401_UNAUTHORIZED)
        data = dict(request.data)
        photo = data['photo'][0]
        name = photo.name
        ext = os.path.splitext(name)[-1]
        user_pk = data.get('user_pk', [0])
        user_pk = int(user_pk[0])
        if not user_pk:
            user_pk = request.user.pk
            user = request.user
        else:
            user = models.MainUser.objects.get(pk=user_pk)
            if request.user.pk != user_pk:
                if request.user.pk not in user.pk_can_edit:
                    if not request.user.is_admin:
                        return Response({}, status.HTTP_403_FORBIDDEN)

        filepath = "profile_photos/" + \
            helpers.id_generator() + str(helpers.timestamp_sec() / 100) + ext

        helpers.fs.save_file(filepath, photo)
        helpers.fs.generate_single_avatar(filepath, user.pk)
        if not user.is_organization and not user.is_expert:
            patient = users.Patient.objects.get(pk=user.patient)
            patient.photo = [filepath]
            patient.save()
        elif user.is_expert:
            expert = users.Expert.objects.get(pk=user.expert)
            expert.photo = [filepath]
            expert.save()

        return Response({'path': filepath})
예제 #4
0
 def callback_call(self, obj):
     room = str(helpers.timestamp_sec())
     print(obj)
     self.sendMsgToAll('incoming_call', {
         'user': self.user.owner,
         'room': room
     },
                       user_pk=obj['to_user_pk'])
     self.sendMsgToSelf("call", {'room': room})
예제 #5
0
 def callback_call(self, obj):
     room = str(int(helpers.timestamp_sec() / 10)) + self.user.username
     self.sendMsgToAll('incoming_call', {'user': self.user.owner,
                                         'username': self.user.username,
                                         'room': room},
                       user_pk=int(obj['to_user_pk']))
     user = models.User.objects.get(owner=int(obj['to_user_pk']))
     self.sendMsgToSelf(
         "call", {'room': room, 'user': int(obj['to_user_pk']),
                  'username': user.username})
예제 #6
0
파일: websocket_so.py 프로젝트: ganap/so
    def callback_admin_msg(self, obj):
        if 'remove_opened_in_progress' in obj.keys():
                user_pk = obj['remove_opened_in_progress']['user_pk']
                so_pk = obj['remove_opened_in_progress']['so_pk']
                queue = self.get_or_create_SOQueue()
                for so in queue.opened:
                    if so['so_pk'] == so_pk:
                        queue.opened.remove(so)
                        queue.save()
                        self.signal_MoveSo('opened', None, so)
                        break
                queue = self.get_or_create_SOQueue()
                for so in queue.in_progress:
                    if so['so_pk'] == so_pk:
                        queue.in_progress.remove(so)
                        queue.save()
                        self.signal_MoveSo('in_progress', None, so)
                        break
        if 'open_so' in obj.keys():
                print("Open SO")
                so_pk = obj['open_so']['so_pk']
                so_obj = {
                    'user': obj['open_so']['user_pk'],
                    'so_pk': so_pk,
                    'assigned_by': 0,
                    'assigned_to': 0,
                    'date': helpers.timestamp_sec(),
                    'assigned_date': None,
                    'closed_date': None,
                    'reopen_date': None,
                }
                self.queue = self.get_or_create_SOQueue()
                if self.check_is_user_in(self.user.owner, 'opened'):
                    return

                self.queue.opened.append(so_obj)
                self.queue.save()
                self.signal_MoveSo(None, 'opened', so_obj)
        if 'close_so' in obj.keys():
                so_pk = obj['close_so']['so_pk']
                queue = self.get_or_create_SOQueue()
                for so in queue.processed_:
                    if so['so_pk'] == so_pk:
                        queue.processed_.remove(so)
                        queue.closed.append(so)
                        queue.save()
                        self.signal_MoveSo('processed_', 'closed', so)
                        break
예제 #7
0
    def callback_admin_msg(self, obj):
        if 'remove_opened_in_progress' in obj.keys():
            user_pk = obj['remove_opened_in_progress']['user_pk']
            so_pk = obj['remove_opened_in_progress']['so_pk']
            queue = self.get_or_create_SOQueue()
            for so in queue.opened:
                if so['so_pk'] == so_pk:
                    queue.opened.remove(so)
                    queue.save()
                    self.signal_MoveSo('opened', None, so)
                    break
            queue = self.get_or_create_SOQueue()
            for so in queue.in_progress:
                if so['so_pk'] == so_pk:
                    queue.in_progress.remove(so)
                    queue.save()
                    self.signal_MoveSo('in_progress', None, so)
                    break
        if 'open_so' in obj.keys():
            print("Open SO")
            so_pk = obj['open_so']['so_pk']
            so_obj = {
                'user': obj['open_so']['user_pk'],
                'so_pk': so_pk,
                'assigned_by': 0,
                'assigned_to': 0,
                'date': helpers.timestamp_sec(),
                'assigned_date': None,
                'closed_date': None,
                'reopen_date': None,
            }
            self.queue = self.get_or_create_SOQueue()
            if self.check_is_user_in(self.user.owner, 'opened'):
                return

            self.queue.opened.append(so_obj)
            self.queue.save()
            self.signal_MoveSo(None, 'opened', so_obj)
        if 'close_so' in obj.keys():
            so_pk = obj['close_so']['so_pk']
            queue = self.get_or_create_SOQueue()
            for so in queue.processed_:
                if so['so_pk'] == so_pk:
                    queue.processed_.remove(so)
                    queue.closed.append(so)
                    queue.save()
                    self.signal_MoveSo('processed_', 'closed', so)
                    break
예제 #8
0
파일: websocket_so.py 프로젝트: ganap/so
    def callback_open_so(self, obj):
        if self.user.is_admin or self.user.is_moderator or self.user.is_expert:
            return
        so_obj = {
            'user': self.user.owner,
            'so_pk': obj['so_pk'],
            'assigned_by': 0,
            'assigned_to': 0,
            'date': helpers.timestamp_sec(),
            'assigned_date': None,
            'closed_date': None,
            'reopen_date': None,
        }
        self.queue = self.get_or_create_SOQueue()
        if self.check_is_user_in(self.user.owner, 'opened'):
            return

        self.queue.opened.append(so_obj)
        self.queue.save()
        self.signal_MoveSo(None, 'opened', so_obj)
예제 #9
0
 def callback_assign_to(self, obj):
     if self.user.is_admin or self.user.is_moderator:
         to_user_pk = obj['to_user_pk']
         obj = obj['so']
         self.queue = self.get_or_create_SOQueue()
         print(obj)
         del obj['$$hashKey']
         print(self.queue.opened)
         self.queue.opened.remove(obj)
         obj['assigned_by'] = self.user.owner
         obj['assigned_to'] = to_user_pk
         obj['assigned_date'] = helpers.timestamp_sec()
         self.queue.opened.append(obj)
         self.queue.save()
         self.signal_MoveSo('opened', 'opened', obj)
         # добавляем доктора к людям, которые могут просматривать
         # профиль
         url = "/api/v1/patients/" + str(obj['user']) + "/permissions/"
         data = {'user': to_user_pk, 'action': 'append'}
         helpers.http_put(url, data)
예제 #10
0
    def callback_open_so(self, obj):
        if self.user.is_admin or self.user.is_moderator or self.user.is_expert:
            return
        so_obj = {
            'user': self.user.owner,
            'so_pk': obj['so_pk'],
            'assigned_by': 0,
            'assigned_to': 0,
            'date': helpers.timestamp_sec(),
            'assigned_date': None,
            'closed_date': None,
            'reopen_date': None,
        }
        self.queue = self.get_or_create_SOQueue()
        if self.check_is_user_in(self.user.owner, 'opened'):
            return

        self.queue.opened.append(so_obj)
        self.queue.save()
        self.signal_MoveSo(None, 'opened', so_obj)
예제 #11
0
파일: websocket_so.py 프로젝트: ganap/so
 def callback_assign_to(self, obj):
     if self.user.is_admin or self.user.is_moderator:
         to_user_pk = obj['to_user_pk']
         obj = obj['so']
         self.queue = self.get_or_create_SOQueue()
         print(obj)
         del obj['$$hashKey']
         print(self.queue.opened)
         self.queue.opened.remove(obj)
         obj['assigned_by'] = self.user.owner
         obj['assigned_to'] = to_user_pk
         obj['assigned_date'] = helpers.timestamp_sec()
         self.queue.opened.append(obj)
         self.queue.save()
         self.signal_MoveSo('opened', 'opened', obj)
         # добавляем доктора к людям, которые могут просматривать
         # профиль
         url = "/api/v1/patients/" + str(obj['user']) + "/permissions/"
         data = {
             'user': to_user_pk,
             'action': 'append'
         }
         helpers.http_put(url, data)