Exemplo n.º 1
0
    def run(self, user_id):
        self.user = User.get_by_id(user_id)
        if not self.user.verify_user():
            # not really much we can do about this...
            log.info("Missing tokens for user %r", self.user)
            self.set_status(0, 0, "You need to log out and log back in again.")
            return
        self.fk = flickr.FlickrAPI(self.user.flickr_token)
        self.fb_user = fb.GraphUser(access_token=self.user.fb_access_token)
        photosets = self.fk.photosets_getList()[0]

        self.synced_photos = 0
        self.total_photos = sum(int(pset.get('photos')) for pset in photosets)

        self.set_status(
            self.synced_photos,
            self.total_photos,
            "syncing Flickr photos to Facebook")

        settings = UserSetting.multiget(
            user_id=user_id,
            settings=[UserSettingConst.FB_PRIVACY,
                      UserSettingConst.FLICKR_SET_SYNCING])
        self.fb_privacy = settings.get(UserSettingConst.FB_PRIVACY, 'FB_DEFAULT')
        self.flickr_settings = settings.get(UserSettingConst.FLICKR_SET_SYNCING, {})

        select_sets = self.flickr_settings.get('select_sets', False)
        selected_sets = self.flickr_settings.get('selected_sets', [])
        for photoset in photosets:
            if not select_sets or photoset.get('id') in selected_sets:
                self.sync_photoset(photoset)

        log.info("Finished job %r for user %r", self.job.jid, self.user.id)
        # once we are all done, let's submit the task to rerun in an hour.
        self.resubmit(delay=60*60)
Exemplo n.º 2
0
    def run(self, user_id):
        self.user = User.get_by_id(user_id)
        if not self.user.verify_user():
            # not really much we can do about this...
            log.info("Missing tokens for user %r", self.user)
            self.set_status(0, 0, "You need to log out and log back in again.")
            return
        self.fk = flickr.FlickrAPI(self.user.flickr_token)
        self.fb_user = fb.GraphUser(access_token=self.user.fb_access_token)
        photosets = self.fk.photosets_getList()[0]

        self.synced_photos = 0
        self.total_photos = sum(int(pset.get("photos")) for pset in photosets)

        self.set_status(self.synced_photos, self.total_photos, "syncing Flickr photos to Facebook")

        settings = UserSetting.multiget(
            user_id=user_id, settings=[UserSettingConst.FB_PRIVACY, UserSettingConst.FLICKR_SET_SYNCING]
        )
        self.fb_privacy = settings.get(UserSettingConst.FB_PRIVACY, "FB_DEFAULT")
        self.flickr_settings = settings.get(UserSettingConst.FLICKR_SET_SYNCING, {})

        select_sets = self.flickr_settings.get("select_sets", False)
        selected_sets = self.flickr_settings.get("selected_sets", [])
        for photoset in photosets:
            if not select_sets or photoset.get("id") in selected_sets:
                self.sync_photoset(photoset)

        log.info("Finished job %r for user %r", self.job.jid, self.user.id)
        # once we are all done, let's submit the task to rerun in an hour.
        self.resubmit(delay=60 * 60)
Exemplo n.º 3
0
    def index(self):
        code = request.GET.getone('code')
        nexturl = request.GET.get('nexturl')
        if nexturl:
            # we are acting only as an auth server.
            # redirect to the server that wants the auth code
            redirect(nexturl + '?code=%s' % code)
            return

        token = fb.get_access_token(code)
        if not token:
            #lame... this failed for some reason
            h.flash("The login process failed :(")
            redirect(url('index'))
            return
        fbuser = fb.GraphUser(access_token=token)

        if session.get('user_id'):
            # a user is already logged in
            user = Session.query(User).filter_by(
                id=session.get('user_id')).first()
        else:
            # the user is not already logged in, let's see if they have
            # already created an account before
            user = Session.query(User).filter_by(fb_uid=fbuser.id).first()

        if user:
            # the user does have an account, let's update their auth token
            user.fb_uid = fbuser.id
            user.fb_access_token = token
            Session.commit()
        else:
            # the user does not have an account.  We need to create a new one
            # for them.
            for attempt in xrange(3):
                user = User(fb_uid=fbuser.id, fb_access_token=token)
                Session.add(user)
                Session.commit()
                user = Session.query(User).filter_by(fb_uid=fbuser.id).first()
                if user:
                    break
                log.error("Failed to create user with fb_uid=%r attempt %r",
                          fbuser.id, attempt)

        if not user:
            log.error(
                "Trying to log in, but couldn't get a user object. "
                "user=%r code=%r token=%r fbuser=%r", user, code, token,
                fbuser)

        session['user_id'] = user.id
        session['fb_access_token'] = token
        session.save()
        log.info("Logged in user %s %s: %s", fbuser.first_name,
                 fbuser.last_name, user)
        redirect(url('index'))
Exemplo n.º 4
0
    def __init__(self, token=None):
        if not token:
            if 'user_id' in session:
                from photosync.model import User
                user = User.get_current_user()
                if user and user.flickr_token:
                    token = user.flickr_token
            if not token and 'flickr_token' in session:
                token = session.get('flickr_token')

        super(FlickrAPI, self).__init__(g.FLICKR_API_KEY,
                                        g.FLICKR_API_SECRET,
                                        token=token,
                                        store_token=False)
Exemplo n.º 5
0
    def index(self):
        gd_client = gdata.photos.service.PhotosService()
        #token = request.GET.getone('token')
        parameters = cgi.FieldStorage()
        token = parameters['token']
        gd_client.auth_token = token
        gd_client.UpgradeToSessionToken()

        session['picasa_token'] = token
        session.save()

        if session.get('user_id'):
            # a user is already logged in
            user = Session.query(User).filter_by(
                id=session.get('user_id')).first()
        else:
            # the user is not already logged in, let's see if they have
            # already created an account before
            user = Session.query(User).filter_by(picasa_token=token).first()

        if user:
            user.picasa_token = token
            Session.commit()
        else:
            # the user does not have an account.  We need to create a new one
            # for them.
            user = User(picasa_token=token)
            Session.add(user)
            Session.commit()
            user = Session.query(User).filter_by(
                picasa_token=picasa_token).first()

        session['user_id'] = user.id
        session['picasa_token'] = token
        session.save()
        log.info("Logged in user %s", user)
        redirect(url('index'))
Exemplo n.º 6
0
    def index(self):
        flickr = FlickrAPI()
        token = flickr.get_token(request.GET.getone('frob'))

        session['flickr_token'] = token
        session.save()

        flickr = FlickrAPI(token)
        result = flickr.auth_checkToken()
        nsid = result[0][2].get('nsid')

        if session.get('user_id'):
            # a user is already logged in
            user = Session.query(User).filter_by(
                id=session.get('user_id')).first()
        else:
            # the user is not already logged in, let's see if they have
            # already created an account before
            user = Session.query(User).filter_by(flickr_nsid=nsid).first()

        if user:
            user.flickr_nsid = nsid
            user.flickr_token = token
            Session.commit()
        else:
            # the user does not have an account.  We need to create a new one
            # for them.
            user = User(flickr_nsid=nsid, flickr_token=token)
            Session.add(user)
            Session.commit()
            user = Session.query(User).filter_by(flickr_nsid=nsid).first()

        session['user_id'] = user.id
        session['flickr_token'] = token
        session.save()
        log.info("Logged in user %s", user)
        redirect(url('index'))
Exemplo n.º 7
0
    def stats(self):
        c.user_count = Session.query(User).count()
        c.sync_count = Session.query(SyncRecord).count()
        c.async_tasks_count = Session.query(AsyncTask).count()


        data = Session.query(SyncRecord.user_id,
                             func.count(1),
                             func.sum(SyncRecord.transfer_in),
                             func.sum(SyncRecord.transfer_out))\
            .filter(SyncRecord.type == SyncRecord.TYPE_PHOTO)\
            .group_by(SyncRecord.user_id).all()

        c.user_stats = []
        c.total_count = 0
        c.total_cost = 0
        c.total_tin = 0
        c.total_tout = 0
        for user_id, count, tin, tout in data:
            tin = tin or 0
            tout = tout or 0
            bandwidth_cost = cost.get_bandwidth_cost(tin, tout)
            c.total_cost += bandwidth_cost
            c.total_tout += int(tout)
            c.total_tin += int(tin)
            c.total_count += count
            c.user_stats.append([
                User.get_by_id(user_id), count,
                round(tin / 1024 / 1024, 2),
                round(tout / 1024 / 1024, 2), bandwidth_cost
            ])
        c.total_tout = round(c.total_tout / 1024. / 1024, 2)
        c.total_tin = round(c.total_tin / 1024. / 1024, 2)

        order_by = int(request.GET.get('order_by', 4))
        c.user_stats.sort(key=lambda d: d[order_by], reverse=True)
        return render('/admin/stats.mako')
Exemplo n.º 8
0
    def stats(self):
        c.user_count = Session.query(User).count()
        c.sync_count = Session.query(SyncRecord).count()
        c.async_tasks_count = Session.query(AsyncTask).count()


        data = Session.query(SyncRecord.user_id,
                             func.count(1),
                             func.sum(SyncRecord.transfer_in),
                             func.sum(SyncRecord.transfer_out))\
            .filter(SyncRecord.type == SyncRecord.TYPE_PHOTO)\
            .group_by(SyncRecord.user_id).all()

        c.user_stats = []
        c.total_count = 0
        c.total_cost = 0
        c.total_tin = 0
        c.total_tout = 0
        for user_id, count, tin, tout in data:
            tin = tin or 0
            tout = tout or 0
            bandwidth_cost = cost.get_bandwidth_cost(tin,tout)
            c.total_cost += bandwidth_cost
            c.total_tout += int(tout)
            c.total_tin += int(tin)
            c.total_count += count
            c.user_stats.append([User.get_by_id(user_id),
                                 count,
                                 round(tin/1024/1024, 2),
                                 round(tout/1024/1024, 2),
                                 bandwidth_cost])
        c.total_tout = round(c.total_tout/1024./1024, 2)
        c.total_tin = round(c.total_tin/1024./1024, 2)

        order_by = int(request.GET.get('order_by', 4))
        c.user_stats.sort(key=lambda d: d[order_by], reverse=True)
        return render('/admin/stats.mako')
Exemplo n.º 9
0
 def logged_in_user(self):
     return User.get_current_user()
Exemplo n.º 10
0
 def logged_in_user(self):
     return User.get_current_user()