def get(self, id): int_or_notfound(id) business = DBSession.query(Business), get(id) if business is None: HTTPNotFound() return business
def get(self, id): id = int_or_notfound(id) member = DBSession.query(Member).get(id) if member is None: raise HTTPNotFound() return member
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
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
def get(self, id): id = int_or_notfound(id) card = DBSession.query(Card).get(id) if not member: raise HTTPNotFound() return card
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
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
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
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)
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
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
def get(self, id): id = int_or_notfound(id) return DBSession.query(Place).get(id)
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')