Exemplo n.º 1
0
    def get_age(model):
        from crowdsourcing.utils import get_relative_time

        if model.status == models.Project.STATUS_DRAFT:
            return get_relative_time(model.updated_at)
        else:
            return get_relative_time(model.published_at)
Exemplo n.º 2
0
    def get_age(model):
        from crowdsourcing.utils import get_relative_time

        if model.status == models.Project.STATUS_DRAFT:
            return get_relative_time(model.updated_at)
        else:
            return get_relative_time(model.published_at)
Exemplo n.º 3
0
    def create(self, request, *args, **kwargs):
        serializer = RedisMessageSerializer(data=request.data)
        provider = RedisProvider()
        conversation_key = provider.build_key('conversation',
                                              request.data['conversation'])
        conversation_raw = provider.get_list(conversation_key)

        if len(conversation_raw):
            recipients = ast.literal_eval(conversation_raw[0])

            if request.user.username not in recipients or request.data[
                    'recipient'] not in recipients:
                raise serializers.ValidationError(
                    detail=daemo_error("Invalid recipient for this thread"))
        else:
            raise serializers.ValidationError(
                detail=daemo_error("Invalid conversation"))

        if serializer.is_valid():
            redis_publisher = RedisPublisher(facility='notifications',
                                             users=[request.data['recipient']])

            message = RedisMessage(
                json.dumps({
                    "body": request.data['message'],
                    "time_relative": get_relative_time(timezone.now()),
                    "conversation": request.data['conversation'],
                    "sender": request.user.username
                }))

            redis_publisher.publish_message(message)

            message_data = {
                "conversation": request.data['conversation'],
                "body": request.data['message']
            }

            serializer = MessageSerializer(data=message_data,
                                           context={'request': request})

            if serializer.is_valid():
                obj = serializer.create(sender=request.user)
                response_data = MessageSerializer(instance=obj,
                                                  context={
                                                      "request": request
                                                  }).data
                return Response(data=response_data,
                                status=status.HTTP_201_CREATED)
            raise serializers.ValidationError(detail=serializer.errors)
        else:
            raise serializers.ValidationError(detail=serializer.errors)
Exemplo n.º 4
0
    def create(self, request, *args, **kwargs):
        serializer = RedisMessageSerializer(data=request.data)
        provider = RedisProvider()
        conversation_key = provider.build_key('conversation', request.data['conversation'])
        conversation_raw = provider.get_list(conversation_key)

        if len(conversation_raw):
            recipients = ast.literal_eval(conversation_raw[0])

            if request.user.username not in recipients or request.data['recipient'] not in recipients:
                return Response(data={"message": "Invalid recipient for this thread"},
                                status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response(data={"message": "Invalid conversation"}, status=status.HTTP_400_BAD_REQUEST)

        if serializer.is_valid():
            redis_publisher = RedisPublisher(facility='inbox', users=[request.data['recipient']])

            message = RedisMessage(json.dumps({"body": request.data['message'],
                                               "time_relative": get_relative_time(timezone.now()),
                                               "conversation": request.data['conversation'],
                                               "sender": request.user.username}))

            redis_publisher.publish_message(message)

            message_data = {
                "conversation": request.data['conversation'],
                "body": request.data['message']
            }

            serializer = MessageSerializer(data=message_data, context={'request': request})

            if serializer.is_valid():
                obj = serializer.create(sender=request.user)
                response_data = MessageSerializer(instance=obj, context={"request": request}).data
                return Response(data=response_data, status=status.HTTP_201_CREATED)
            return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Exemplo n.º 5
0
 def get_time_relative(self, obj):
     return get_relative_time(obj.created_at)
Exemplo n.º 6
0
 def get_time_relative(self, obj):
     return get_relative_time(obj.created_at)