def get(self): parser = reqparse.RequestParser() parser.add_argument('name', type=str, help='Common Name of the plant you want to search') args = parser.parse_args() try: plant = json.loads(Plant.objects.get(name=args['name']).to_json()) plantings = json.loads( Planting.objects(plant_name=args['name']).to_json()) seen_plantings = dict() for planting in plantings: gname = planting['garden_name'] if gname in seen_plantings: if 'pictureURL' not in seen_plantings[ gname] and 'pictureURL' in planting: seen_plantings[gname]['pictureURL'] = planting[ 'pictureURL'] else: seen_plantings[gname] = planting try: seen_plantings[gname]['garden'] = json.loads( Garden.objects.get(name=gname).to_json()) except: del seen_plantings[gname] final_plantings = [] for key, value in seen_plantings.items(): final_plantings.append(value) blogs = json.loads( Blog.objects(tags__contains=args['name']).to_json()) final_blogs = [] for blog in blogs: if "date" in blog: blog["date"] = blog["date"]['$date'] if "username" in blog: blog["user"] = json.loads( User.objects.get(username=blog["username"]).to_json()) final_blogs.append(blog) plant['blogs'] = final_blogs plant['plantings'] = final_plantings except Exception as e: print(e) return {} return plant
def get(self): parser = reqparse.RequestParser() parser.add_argument('username', required=True, type=str, help='The username of the User') args = parser.parse_args() try: seen_plants = dict() favourite_plant_count = dict() user = json.loads(User.objects.get(username=args['username']).to_json()) gardens = json.loads(Garden.objects(username=args['username']).to_json()) for garden in gardens: plantings = json.loads(Planting.objects(garden_name=garden['name']).to_json()) for planting in plantings: if planting['plant_name'] in seen_plants: planting['plant'] = seen_plants[planting['plant_name']] favourite_plant_count[planting['plant_name']] += 1 else: plant = json.loads(Plant.objects.get(name=planting['plant_name']).to_json()) planting['plant'] = plant seen_plants[planting['plant_name']] = plant favourite_plant_count[planting['plant_name']] = 1 garden['plantings'] = plantings favourite_plants = [] for key, value in favourite_plant_count.items(): favourite_plants.append({"plant": seen_plants[key], "count": value}) blogs = json.loads(Blog.objects(username=args['username']).to_json()) user['favourite_plants'] = favourite_plants user['blogs'] = blogs user['gardens'] = gardens except Exception as e: print(e) return {} return user