Beispiel #1
0
    def _on_auth(self, user):
        if not user:
            raise tornado.web.HTTPError(500, "Twitter auth failed")

        #is there an existing external account?
        current_user = self.get_current_user()
        authenticated_user = User.get("id=%s", current_user['id'])
        existing = Externalservice.by_user(authenticated_user,
                                           Externalservice.TWITTER)
        if existing:
            existing.service_id = user['access_token']['user_id']
            existing.service_secret = user['access_token']['secret']
            existing.service_key = user['access_token']['key']
            existing.screen_name = user['access_token']['screen_name']
            existing.save()
        else:
            external_service = Externalservice(
                user_id=authenticated_user.id,
                service_id=user['access_token']['user_id'],
                screen_name=user['access_token']['screen_name'],
                type=Externalservice.TWITTER,
                service_key=user['access_token']['key'],
                service_secret=user['access_token']['secret'])
            external_service.save()
        # if not, insert credentials for this user
        # if there is, update that account
        return self.render("tools/twitter-connected.html")
Beispiel #2
0
    def get(self, share_key):
        if not share_key:
            return self.redirect("/")

        sharedfile = Sharedfile.get_by_share_key(share_key)
        if not sharedfile:
            raise tornado.web.HTTPError(404)

        current_user = self.get_current_user_object()
        if not current_user:
            self.set_header("Cache-Control", "s-maxage=600, max-age=60")

        sourcefile = sharedfile.sourcefile()
        sharedfile_owner = sharedfile.user()
        owner_twitter_account = Externalservice.by_user(sharedfile_owner, Externalservice.TWITTER)
        comments = sharedfile.comments()
        view_count = sharedfile.livish_view_count()
        save_count = sharedfile.save_count
        heart_count = sharedfile.like_count
        can_delete = sharedfile.can_delete(current_user)
        can_comment = current_user and current_user.email_confirmed == 1 and not options.readonly
        user_is_owner = current_user and current_user.id == sharedfile_owner.id
        in_these_shakes = sharedfile.shakes()
        if current_user:
            user_shakes = current_user.shakes(include_managed=True)
        else:
            user_shakes = []
        add_to_shakes = []
        for user_shake in user_shakes:
            found = False
            for in_shake in in_these_shakes:
                if in_shake.id == user_shake.id:
                    found = True
            if found == False:
                add_to_shakes.append(user_shake)
        can_add_to_shakes = (can_delete and len(add_to_shakes) > 0)

        if owner_twitter_account:
            owner_twitter_account = owner_twitter_account.screen_name
        else:
            owner_twitter_account = 'mltshphq'

        image_url = "/r/%s" % (sharedfile.share_key)
        if options.debug:
            file_path =  "originals/%s" % (sourcefile.file_key)
            image_url = s3_authenticated_url(options.aws_key, options.aws_secret, options.aws_bucket, file_path=file_path, seconds=3600)
        thumb_url = s3_authenticated_url(options.aws_key, options.aws_secret, options.aws_bucket, file_path="thumbnails/%s" % (sourcefile.thumb_key), seconds=3600)
        jsonp = 'jsonp%s' % int(time.mktime(sharedfile.created_at.timetuple()))

        return self.render("image/show.html", sharedfile=sharedfile, thumb_url=thumb_url,
            sharedfile_owner=sharedfile_owner, image_url=image_url, jsonp=jsonp,
            view_count=view_count, can_delete=can_delete, save_count=save_count,
            heart_count=heart_count, comments=comments, current_user_obj=current_user,
            sourcefile=sourcefile, in_these_shakes=in_these_shakes, user_shakes=user_shakes,
            add_to_shakes=add_to_shakes, can_add_to_shakes=can_add_to_shakes,
            can_comment=can_comment,
            owner_twitter_account=owner_twitter_account,
            user_is_owner=user_is_owner)
 def test_get_by_user(self):
     external_service = Externalservice.by_user(self.user, Externalservice.TWITTER)
     
     self.assertEqual(external_service.user_id,           self.external_service.user_id           )
     self.assertEqual(external_service.service_id,        self.external_service.service_id        )
     self.assertEqual(external_service.screen_name,       self.external_service.screen_name       )
     self.assertEqual(external_service.type,              self.external_service.type              )
     self.assertEqual(external_service.service_key,       self.external_service.service_key       )
     self.assertEqual(external_service.service_secret,    self.external_service.service_secret    )
     self.assertEqual(external_service.created_at.strftime("%Y-%m-%d %H:%M:%S"),       self.external_service.created_at        )
     self.assertEqual(external_service.updated_at.strftime("%Y-%m-%d %H:%M:%S"),        self.external_service.updated_at        )
Beispiel #4
0
    def get(self):
        refresh = self.get_argument('refresh', None)
        self.user = self.get_current_user_object()
        feather_client = lib.feathers.Feathers(
            key=options.twitter_consumer_key,
            secret=options.twitter_consumer_secret)
        self.external_service = Externalservice.by_user(
            self.user, Externalservice.TWITTER)
        if not self.external_service:
            self.add_error('no_service', 'No Service.')
            return self.render('tools/find-shakes-quick-fetch-twitter.html')

        friends = self.external_service.find_mltshp_users()
        if friends and not refresh:
            return self.render('tools/find-shakes-quick-fetch-twitter.html', current_user_obj=self.user,\
                friends=friends, externalservice=self.external_service)

        params = {'user_id': self.external_service.service_id, 'cursor': -1}
        feather_client.friends.ids.get(params=params,callback=self._add_friends, \
            token_key=self.external_service.service_key, token_secret=self.external_service.service_secret)