Exemplo n.º 1
0
 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
Exemplo n.º 2
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
Exemplo n.º 3
0
class FriendsResource(Resource):
    def __init__(self):
        self.user_repository = UserRepository()
        super(FriendsResource, self).__init__()

    @authenticate
    def get(self, **kwargs):
        graph = facebook.GraphAPI(access_token=kwargs['token'])
        friends = graph.get_connections(
            kwargs['user'].facebook_id, "friends")['data']
        users = []
        for friend in friends:
            user = query(self.user_repository.get(
                facebook_id=friend['id'])).single_or_default(default=None)
            if user:
                users.append(user)

        return users
Exemplo n.º 4
0
 def __init__(self):
     self.user_repository = UserRepository()
     super(FriendsResource, self).__init__()
Exemplo n.º 5
0
    def post(self):
        user_repository = UserRepository()
        auth_repository = UserAuthorizationRepository()
        args = self.auth_parser.parse_args()
        token = args['token']
        uid = args['user_id']

        graph = facebook.GraphAPI(access_token=token)
        user = graph.get_object("me", fields="email,first_name,last_name")

        if 'email' not in user:
            on_invalid_auth(
                "The provided key does not have email permissions. Obtain a key with extended email permissions"
            )

        if user and user['id'] == uid:
            if not user_repository.user_exists(user['email']):
                new_user = User(uid, user['first_name'], user[
                    'last_name'], user['email'])
                user_repository.add_or_update(new_user)
                user_repository.save_changes()

            users = user_repository.get(email=user['email'])
            user = users[0] if users else None

            if user:
                user.facebook_id = uid
                user_repository.add_or_update(user)
                user_repository.save_changes()

                auth_repository.insert_authorization(token, user.id)
                auth_repository.save_changes()
            else:
                on_server_error("Unknown error adding user")

            return True
        else:
            on_invalid_auth()