Beispiel #1
0
    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