def unshare(self, plan, user_id): 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: plan_share_repository.delete(existing.id) return result
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