Пример #1
0
    def get(self, id):
        int_or_notfound(id)
        business = DBSession.query(Business), get(id)
        if business is None:
            HTTPNotFound()

        return business
Пример #2
0
    def get(self, id):
        id = int_or_notfound(id)
        member = DBSession.query(Member).get(id)
        if member is None:
            raise HTTPNotFound()

        return member
Пример #3
0
    def update(self, id):
        id = int_or_notfound(id)
        user_name = context.form.get('userName')
        email = context.form.get('email')

        member = DBSession.query(Member) \
            .filter(Member.id == id) \
            .one_or_none()

        if member is None:
            raise HTTPNotFound()

        username_exists = DBSession.query(Member) \
            .filter(Member.user_name == user_name) \
            .filter(Member.id != id) \
            .one_or_none()

        if username_exists:
            raise StatusRepetitiveUsername()

        email_exist = DBSession.query(Member) \
            .filter(Member.email == email) \
            .filter(Member.id != id) \
            .one_or_none()

        if email_exist:
            raise StatusRepetitiveEmail()

        member.update_from_request()
        return member
Пример #4
0
    def see(self, id):
        id = int_or_notfound(id)
        member = Member.current()

        message = DBSession.query(Message).get(id)
        if message is None:
            raise HTTPNotFound()

        if message.sender_id == member.id:
            raise HTTPStatus('621 Can Not See Own Message')

        member_message_seen = DBSession.query(MemberMessageSeen) \
            .filter(MemberMessageSeen.member_id == member.id) \
            .filter(MemberMessageSeen.message_id == message.id) \
            .one_or_none()

        if member_message_seen is not None:
            raise HTTPStatus('619 Message Already Seen')

        query = DBSession.query(Message) \
            .filter(Message.target_id == message.target_id) \
            .filter(Message.created_at <= message.created_at) \
            .filter(Message.seen_at == None) \
            .filter(Message.sender_id != member.id) \

        query = Message.filter_by_request(query)

        for m in query:
            m.seen_by.append(member)

        seen_message = message.to_dict()
        seen_message.update({'type': 'seen'})
        queues.push(settings.messaging.workers_queue, seen_message)
        return message
Пример #5
0
    def get(self, id):
        id = int_or_notfound(id)
        card = DBSession.query(Card).get(id)
        if not member:
            raise HTTPNotFound()

        return card
Пример #6
0
    def update(self, id):
        id = int_or_notfound(id)
        member = DBSession.query(Member).get(id)
        if member is None:
            raise HTTPNotFound()

        member.update_from_request()
        return member
Пример #7
0
    def unregister(self, id):
        id = int_or_notfound(id)
        member = DBSession.query(Member).get(id)
        if member is None:
            raise HTTPNotFound()

        DBSession.delete(member)
        return member
Пример #8
0
    def _get_member(self, id):
        id = int_or_notfound(id)

        member = DBSession.query(Member).filter(Member.id == id).one_or_none()
        if member is None:
            raise HTTPNotFound()

        return member
Пример #9
0
    def __call__(self, *remaining_paths):
        if len(remaining_paths) > 1 and remaining_paths[1] == 'messages':
            target = self._get_target(remaining_paths[0])
            return MessageController()(remaining_paths[0], *remaining_paths[2:])

        if len(remaining_paths) > 1 and remaining_paths[1] == 'mentions':
            target = self._get_target(remaining_paths[0])
            return MentionController(target=target)(*remaining_paths[2:])

        if len(remaining_paths) > 1 and remaining_paths[1] == 'members':
            id = int_or_notfound(remaining_paths[0])
            target = self._get_target(remaining_paths[0])
            return TargetMemberController(target=target)(*remaining_paths[2:])

        return super().__call__(*remaining_paths)
Пример #10
0
    def edit(self, id):
        id = int_or_notfound(id)
        new_message_body = context.form.get('body')

        message = DBSession.query(Message).get(id)
        if message is None:
            raise HTTPNotFound()

        if message.is_deleted:
            raise HTTPStatus('616 Message Already Deleted')

        if message.sender_id != Member.current().id:
            raise HTTPForbidden()

        message.body = new_message_body
        DBSession.add(message)
        DBSession.flush()
        queues.push(settings.messaging.workers_queue, message.to_dict())
        return message
Пример #11
0
    def reply(self, message_id):
        id = int_or_notfound(message_id)
        mimetype = context.form.get('mimetype')

        requested_message = DBSession.query(Message).get(id)
        if requested_message is None:
            raise HTTPNotFound()

        if requested_message.is_deleted:
            raise HTTPStatus('616 Message Already Deleted')

        message = Message(
            body=context.form.get('body'),
            target_id=requested_message.target_id,
            sender_id=Member.current().id,
            reply_to=requested_message,
        )

        if 'attachment' in context.form:
            message.attachment = context.form.get('attachment')
            message.mimetype = message.attachment.content_type

            if message.attachment.content_type in BLACKLIST_MIME_TYPES:
                raise HTTPUnsupportedMediaType()

        elif mimetype:
            if mimetype not in SUPPORTED_TEXT_MIME_TYPES:
                raise HTTPUnsupportedMediaType()

            message.mimetype = mimetype

        else:
            message.mimetype = 'text/plain'

        DBSession.add(message)
        DBSession.flush()
        queues.push(settings.messaging.workers_queue, message.to_dict())
        return message
Пример #12
0
 def get(self, id):
     id = int_or_notfound(id)
     return DBSession.query(Place).get(id)
Пример #13
0
def test_int_or_notfound():
    assert int_or_notfound(1) == 1
    assert int_or_notfound('1') == 1
    assert int_or_notfound(1.2) == 1
    assert int_or_notfound('-1') == -1
    assert int_or_notfound(-1) == -1
    assert int_or_notfound(False) == 0
    assert int_or_notfound(True) == 1

    with pytest.raises(HTTPNotFound):
        int_or_notfound('not integer')

    with pytest.raises(HTTPNotFound):
        int_or_notfound([1, 2])

    with pytest.raises(HTTPNotFound):
        int_or_notfound('1.2')

    with pytest.raises(HTTPNotFound):
        int_or_notfound('')

    with pytest.raises(HTTPNotFound):
        int_or_notfound(None)

    with pytest.raises(HTTPNotFound):
        int_or_notfound('1.0')