Example #1
0
 def add_or_update(self, entity):
     result = ChangeResult()
     # item_repository = ItemRepository()
     # for item in entity.items:
     #     result.add_child_result(item_repository.add_or_update(item))
     result.add_child_result(super(PlanRepository, self).add_or_update(entity))
     return result
Example #2
0
    def add_or_update(self, item):
        result = ChangeResult()
        # yelp_repository = YelpItemRepository()
        #
        # if item.type == "YELP" and item.yelp_item is not None:
        #     result.add_child_result(yelp_repository.add_or_update(item.yelp_item))
        #     item.yelp_item_id = item.yelp_item.id

        result.add_child_result(super(ItemRepository, self).add_or_update(item))
        return result
Example #3
0
 def share(self, plan, user_id, permission):
     user_repository = UserRepository()
     plan_share_repository = PlanShareRepository()
     result = ChangeResult()
     user = user_repository.find(user_id)
     if not user:
         result.errors.append("No user with id {0} found".format(user_id))
     else:
         existing = query(PlanShares.query.filter_by(plan_id=plan.id, user_id=user.id).all()).single_or_default(
             default=None)
         if existing:
             existing.permission = permission
             result.add_child_result(plan_share_repository.add_or_update(existing))
         else:
             plan_share = PlanShares()
             plan_share.plan_id = plan.id
             plan_share.user_id = user.id
             plan_share.permission = permission
             result.add_child_result(plan_share_repository.add_or_update(plan_share))
     return result
Example #4
0
    def post(self, plan_id, **kwargs):
        plan = query(self.plan_repository.get(user_id=kwargs['user'].id, id=plan_id)).single_or_default(
            default=None)
        if not plan:
            abort(404, message="This plan does not exist")

        post_body = request.json
        if type(post_body) is not list:
            on_error(error_message="Invalid post body")

        result = ChangeResult()
        try:
            shares = query(post_body)
            for shared_user in plan.shared_users:
                if not shares.contains(shared_user, lambda lhs, rhs: rhs['user_id'] == lhs.id):
                    result.add_child_result(
                        self.plan_repository.unshare(plan, shared_user.id))

            for share in post_body:
                user_id = share['user_id']
                permission = share['permission']
                result.add_child_result(
                    self.plan_repository.share(plan, user_id, permission))

        except KeyError as ke:
            on_error(error_message="Invalid post body")

        if not result.success():
            on_error(error_message="Could not share plan", result=result)

        self.plan_repository.save_changes()
        return plan
Example #5
0
 def add_or_update(self, item):
     result = ChangeResult()
     result.add_child_result(super(RatingRepository, self).add_or_update(item))
     return result