Ejemplo n.º 1
0
    def get(self):
        try:
            user_id = get_jwt_identity()
            user = User.objects.get(id=user_id)

            ids = user.following
            ids.append(user)

            posts = Post.objects.filter(author__nin=ids,
                                        hashtags__in=user.interests)

            if len(posts) == 0:
                posts = Post.objects.filter(author__nin=ids)

            posts = [convert_post(ob) for ob in posts]
            posts.sort(key=operator.itemgetter('created_at'), reverse=True)

            return Response(JSONEncoder().encode(posts),
                            mimetype="application/json",
                            status=200)
        except InvalidQueryError:
            raise SchemaValidationError
        except DoesNotExist:
            raise DocumentMissing
        except Exception:
            raise InternalServerError
Ejemplo n.º 2
0
    def get(self, id):
        try:
            user_id = get_jwt_identity()
            user = User.objects.exclude('password').get(id=id)
            chat = Chat.objects.filter(type='public').first()
            clients = Chat.objects.filter(type='private')
            data = user.to_mongo()

            if user.mentor:
                data['mentor'] = user.mentor.to_mongo()
                data['posts'] = [
                    convert_post(ob) for ob in Post.objects.filter(author=id)
                ]
                data['posts'].sort(key=operator.itemgetter('created_at'),
                                   reverse=True)

                if chat:
                    data['chat_users'] = len(chat.admins) + len(chat.users)
                    data['clients'] = len(clients)

            return Response(JSONEncoder().encode(data),
                            mimetype="application/json",
                            status=200)
        except DoesNotExist:
            raise DocumentMissing
        except Exception:
            raise InternalServerError
Ejemplo n.º 3
0
    def get(self, search):
        try:
            user_id = get_jwt_identity()
            user = User.objects.get(id=user_id)

            regex = re.compile('.*' + search + '.*', re.IGNORECASE)

            posts = Post.objects.filter(title=regex)
            interests = Interest.objects.filter(title=regex)
            users = User.objects.filter(Q(name=regex) | Q(surname=regex))

            posts = [ob.title for ob in posts]
            interests = [ob.title for ob in interests]
            users = [ob.name + ' ' + ob.surname for ob in users]

            suggestions = interests + posts + users

            if len(suggestions) > 5:
                suggestions = suggestions[0:5]

            return Response(JSONEncoder().encode(suggestions),
                            mimetype="application/json",
                            status=200)
        except DoesNotExist:
            raise DocumentMissing
        except Exception as e:
            raise InternalServerError
Ejemplo n.º 4
0
    def get(self, user_id):
        try:
            products = Product.objects(user=user_id)
            products = [product.to_mongo() for product in products]

            return Response(JSONEncoder().encode(products),
                            mimetype="application/json",
                            status=200)
        except Exception:
            raise InternalServerError
Ejemplo n.º 5
0
 def get(self, id):
     try:
         post = Post.objects.get(id=id)
         return Response(JSONEncoder().encode(convert_post(post)),
                         mimetype="application/json",
                         status=200)
     except DoesNotExist:
         raise DocumentMissing
     except Exception:
         raise InternalServerError
Ejemplo n.º 6
0
    def get(self):
        user_id = get_jwt_identity()
        user = User.objects.get(id=user_id)
        if not user:
            return { 'error': True, 'payload': 'User not found' }, 404
        chats = Chat.objects.filter(Q(host=user) | Q(users__contains=user.id) | Q(admins__contains=user.id))

        chats = [convert_chat_basic(chat, user) for chat in chats]

        return Response(JSONEncoder().encode(chats), mimetype="application/json", status=200)
Ejemplo n.º 7
0
    def get(self):
        try:
            user_id = get_jwt_identity()
            calendar = Calendar.objects.get(user=user_id).to_mongo()

            return Response(JSONEncoder().encode(calendar), mimetype="application/json", status=200)
        except InvalidQueryError:
            raise SchemaValidationError
        except DoesNotExist:
            raise DocumentMissing
        except Exception:
            raise InternalServerError
Ejemplo n.º 8
0
    def get(self, id):
        try:
            user_id = get_jwt_identity()

            sessions = Session.objects.filter(chats__contains=id)
            sessions = [convert_session(session) for session in sessions]

            return Response(JSONEncoder().encode(sessions), mimetype="application/json", status=200)
        except DoesNotExist:
            raise DocumentMissing
        except Exception as e:
            raise InternalServerError
Ejemplo n.º 9
0
    def get(self, id):
        try:
            user_id = get_jwt_identity()
            body = request.get_json()
            chat = Chat.objects.get(id=id)

            actions = [convert_ob(action) for action in chat.actions]

            return Response(JSONEncoder().encode(actions), mimetype="application/json", status=200)
        except DoesNotExist:
            raise DocumentMissing
        except Exception as e:
            raise InternalServerError
Ejemplo n.º 10
0
    def get(self):
        try:
            user_id = get_jwt_identity()
            user = User.objects.get(id=user_id)
            chats = Chat.objects(type='private', users__contains=user)

            all_sessions = [convert_session(session) for session in Session.objects(host=user)]
            for chat in chats:
                sessions = Session.objects(chats__contains=chat)
                for session in sessions:
                    all_sessions.append(convert_session_chat(session, chat))

            return Response(JSONEncoder().encode(all_sessions), mimetype="application/json", status=200)
        except DoesNotExist:
            raise DocumentMissing
        except Exception as e:
            raise InternalServerError
Ejemplo n.º 11
0
    def get(self, search):
        try:
            user_id = get_jwt_identity()
            user = User.objects.get(id=user_id)

            regex = re.compile('.*' + search + '.*', re.IGNORECASE)

            posts = Post.objects.filter(
                Q(title=regex) | Q(content=regex)
                | Q(hashtags__icontains=search))
            posts = [convert_post(ob) for ob in posts]
            posts.sort(key=operator.itemgetter('created_at'), reverse=True)

            users = filter_users(User.objects(id__ne=user.id), regex)
            users = [convert_user(ob) for ob in users]

            result = {
                'users': users,
                'posts': posts,
                'following': [ob.id for ob in user.following]
            }

            if search not in user.recent_searches:
                print(user.recent_searches, search)
                if len(user.recent_searches) > 4:
                    user.recent_searches.pop(0)
                user.recent_searches.append(search)
                user.save()

            return Response(JSONEncoder().encode(result),
                            mimetype="application/json",
                            status=200)
        except DoesNotExist:
            raise DocumentMissing
        except Exception as e:
            raise InternalServerError
Ejemplo n.º 12
0
    def get(self, id):
        try:
            user_id = get_jwt_identity()
            user = User.objects.get(id=user_id)
            chat = Chat.objects.filter((Q(host=user) | Q(users__contains=user.id) | Q(admins__contains=user.id)) & Q(id=id)).first()

            if not chat:
                return { 'error': True, 'payload': 'Chat not found' }, 404

            product = chat.product
            chat_info = ChatInfo.objects(chat=chat, user=user).first()
            if chat_info:
                chat_info.message = get_last_message(chat)
                chat_info.save()

            chat = convert_chat_full(chat)
            if 'product' in chat:
                chat['product'] = product.to_mongo()

            return Response(JSONEncoder().encode(chat), mimetype="application/json", status=200)
        except DoesNotExist:
            raise DocumentMissing
        except Exception as e:
            raise InternalServerError