def get(self, id=None): parser = reqparse.RequestParser() parser.add_argument('limit', type=int) parser.add_argument('title', type=str) parser.add_argument('tag', type=str) parser.add_argument('location', type=str) args = parser.parse_args(strict=True) limit = args.get("limit", None) title = args.get("title", None) tag = args.get('tag', None) location = args.get('location', None) if not any([id, limit, tag, location, title]): abort( 400, message="You must provide an id, limit, location, title or tag" ) elif limit is not None: tasks = TaskDocument.objects[:limit] return [task.to_dict() for task in tasks], 200 elif tag is not None: tasks = TaskDocument.objects(tags__in=[tag]) return [task.to_dict() for task in tasks], 200 elif location is not None: ongs = OngDocument.objects( address__localidade__in=[location]).all() tasks = [] for ong in ongs: tasks.extend(ong.tasks) return [task.to_dict() for task in tasks], 200 elif title is not None: tasks = TaskDocument.objects(title__icontains=title) return [task.to_dict() for task in tasks], 200 task = TaskDocument.objects.get_or_404(id=id) return task.to_dict(), 200
def get(self, id=None): parser = reqparse.RequestParser() parser.add_argument('limit', type=int) parser.add_argument('title', type=str) parser.add_argument('tag', type=str) parser.add_argument('location', type=str) args = parser.parse_args(strict=True) limit = args.get("limit", None) title = args.get("title", None) tag = args.get('tag', None) location = args.get('location', None) if not any([id, limit, tag, location, title]): abort(400, message="You must provide an id, limit, location, title or tag") elif limit is not None: tasks = TaskDocument.objects[:limit] return [task.to_dict() for task in tasks], 200 elif tag is not None: tasks = TaskDocument.objects(tags__in=[tag]) return [task.to_dict() for task in tasks], 200 elif location is not None: ongs = OngDocument.objects(address__localidade__in=[location]).all() tasks = [] for ong in ongs: tasks.extend(ong.tasks) return [task.to_dict() for task in tasks], 200 elif title is not None: tasks = TaskDocument.objects(title__icontains=title) return [task.to_dict() for task in tasks], 200 task = TaskDocument.objects.get_or_404(id=id) return task.to_dict(), 200
def get(self): parser = reqparse.RequestParser() parser.add_argument('data', type=str) parser.add_argument('location', type=str) parser.add_argument('title', type=str) parser.add_argument('tag', type=str) parser.add_argument('remote', type=bool) parser.add_argument('name', type=str) args = parser.parse_args() data = args.get('data', None) location = args.get('location', None) title = args.get('title', None) tag = args.get('tag', None) remote = args.get('remote', None) name= args.get('name', None) if data is not None: # BUSCA TODAS AS CIDADES CADASTRADAS (ONG) if data == 'cities': cities = [] ongs = OngDocument.objects[:] for ong in ongs: cities.append(ong.address['localidade']) cities = set(cities) cities = sorted(cities) return json.dumps(cities, default="utf-8") # BUSCA TASKS DE ACORDO COM OS PARÂMETROS PASSADOS elif data == 'task': if all([location]): ongs = OngDocument.objects(address__localidade__icontains=location).all() tasks = [] for ong in ongs: tasks.extend(ong.tasks) return [task.to_dict() for task in tasks], 200 elif all([tag]): tasks = TaskDocument.objects(tags__icontains=tag) for task in tasks: ong = OngDocument.objects.get(id=task.ong_id) task.location = ong.address['localidade'] return [task.to_dict_with_address() for task in tasks], 200 elif all([title]): tasks = TaskDocument.objects(title__icontains=title) for task in tasks: ong = OngDocument.objects.get(id=task.ong_id) task.location = ong.address['localidade'] return [task.to_dict_with_address() for task in tasks], 200 elif all([remote]): tasks = TaskDocument.objects(is_remote__eq=remote) return [task.to_dict_with_address] # BUSCA ONGS DE ACORDO COM OS PARÂMETROS PASSADOS elif data == 'ong': if all([name]): ongs = OngDocument.objects(name__icontains=name) return [ong.to_dict() for ong in ongs], 200 elif all([location]): ongs = OngDocument.objects(address__localidade__icontains=location) return [ong.to_dict() for ong in ongs], 200 abort(400, message="You must provide data attribute")