Exemple #1
0
 def get(self):
     db.delete(Tile.all())
     db.delete(Avatar.all())
     cleared = make_maze(20, 20)
     for t in cleared:
         view = []
         for vy in range(t[1] - view_radius, t[1] + view_radius + 1):
             for vx in range(t[0] - view_radius, t[0] + view_radius + 1):
                 if (vx, vy) in cleared:
                     shape = get_shape(vx, vy, cleared)
                     view.append({'x': vx, 'y': vy, 'shape': shape})
         shape = get_shape(t[0], t[1], cleared)
         key = db.Key.from_path(
             'Maze', 'bogart',
             'Tile', '%d-%d' % (t[0], t[1])
         )
         Tile(
             key=key,
             x=t[0],
             y=t[1],
             shape=shape,
             view_blob=json.dumps(view)
         ).put()
     Avatar(x=0, y=0, name='jack').put()
     self.response.out.write('Generator %s' % cleared)
Exemple #2
0
 def get(self, name, size=''):
     if size not in ['','%21normal','%21mini']:
         self.error(404)
         return
     a_obj = Avatar.get_by_key_name(name)
     if a_obj and a_obj.content:
         self.header['Content-Type'] = "image/png"
         self.header['Cache-Control'] = "max-age=172800, public, must-revalidate"
         self.header['Expires'] = avatar_expires()
         
         sized = {'%21normal':48,'%21mini':24}
         memkey = "avatar_%s_%d"%(name,sized.get(size,73))
         img = memcache.get(memkey)
         if img is None:
             if size=='':
                 img = a_obj.content
             else:
                 imgobj = images.Image(a_obj.content)
                 imgobj.resize(sized[size], sized[size])
                 imgobj.im_feeling_lucky()
                 img = imgobj.execute_transforms(output_encoding=images.JPEG, quality=95)
             memcache.set(memkey,img,3600)
         self.write(img)
     else:
         self.error(404)
Exemple #3
0
def load_avatars(filename):

    df = pd.read_excel(filename)
    avatar_list = list(df['Name'])

    for url in avatar_list:
        avatar = Avatar(url=url)

        db.session.add(avatar)

    db.session.commit()
Exemple #4
0
def scrape_avatar(id_, site, url):
    """
    Get an twitter avatar from ``url`` and save it to the Profile identified by
    ``id_``.
    """

    worker.start_job()
    redis = worker.get_redis()
    db_session = worker.get_session()
    avatar = None
    profile = db_session.query(Profile).filter(Profile.id == id_).first()

    if profile is None:
        raise ValueError('No profile exists with id={}'.format(id_))

    if site == 'twitter':
        # Twitter points you to a scaled image by default, but we can
        # get the original resolution by removing "_normal" from the URL.
        #
        # See: https://dev.twitter.com/overview/general/user-profile-images-and-banners
        url = url.replace('_normal', '')

    # Update Avatar if it's already stored in the db
    for profile_avatar in profile.avatars:
        if profile_avatar.upstream_url == url:
            profile_avatar.end_date = datetime.today()
            avatar = profile_avatar
            break

    # Otherwise, scrape the new Avatar and append to the profile
    if avatar is None:

        response = requests.get(url)
        response.raise_for_status()

        if 'content-type' in response.headers:
            mime = response.headers['content-type']
        else:
            mime = 'application/octet-stream'

        image = response.content
        avatar = Avatar(url, mime, image)
        profile.avatars.append(avatar)
        profile.current_avatar = avatar

    db_session.commit()
    worker.finish_job()

    redis.publish('avatar', json.dumps({
        'id': id_,
        'thumb_url': '/api/file/' + str(avatar.thumb_file.id),
        'url': '/api/file/' + str(avatar.file.id),
    }))
Exemple #5
0
 def get(self):
   db.delete(Tile.all())
   db.delete(Avatar.all())
   cleared = make_maze(20,20)
   for t in cleared:
       view = []
       for vy in range(t[1]-view_radius,t[1]+view_radius+1):
           for vx in range(t[0]-view_radius,t[0]+view_radius+1):
               if (vx,vy) in cleared:
                   view.append({'x':vx, 'y':vy})
       Tile(x=t[0], y=t[1], view_blob=pickle.dumps(view, 2)).put()
   Avatar(x=0,y=0,name='jack').put()
   self.response.out.write('Generator %s'%cleared)
Exemple #6
0
def load_avatars(avatars_filename):
    """Load avatars."""

    print "Avatar"

    for i, row in enumerate(open(avatars_filename)):
        row = row.rstrip()

        avatar_src = row

        avatar = Avatar(avatar_src=avatar_src)

        db.session.add(avatar)

        if i % 10 == 0:
            print i

    db.session.commit()
Exemple #7
0
 def post(self):
     if self.cur_user:
         file_content = self.request.get('myfile','')
         errors = []
         if file_content:
             imgobj = images.Image(file_content)
             if imgobj.width <= 73 and imgobj.height <= 73:
                 img_large = file_content
             else:
                 imgobj.resize(73, 73)
                 imgobj.im_feeling_lucky()
                 img_large = imgobj.execute_transforms(output_encoding=images.JPEG, quality=95)
                 
             av_obj = Avatar.get_or_insert(self.cur_user.name)
             av_obj.content = img_large
             av_obj.put()
             if av_obj.is_saved():
                 m_obj = Member.get_by_key_name(self.cur_user.name)
                 if m_obj:
                     if m_obj.flag ==1:
                         if m_obj.id == 1:
                             m_obj.flag = 99
                         else:
                             m_obj.flag = 2
                         db.run_in_transaction(obj_runput,m_obj, ['cur_user:'******'/setavatar')
                 return
             else:
                 errors.append('服务器出现意外错误,请稍后再试')
         else:
             self.echo('setavatar.html', {
                 'title': "设置头像",
                 'errors':errors,
                 'newest_node': Node.get_newest(),
             }, layout='_layout.html')
             
     else:
         self.redirect('/')
Exemple #8
0
    def _create_sample_profiles(self, config):
        ''' Create some sample profiles. '''

        session = app.database.get_session(self._db)
        sample_dir = os.path.join(os.path.dirname(__file__), 'sample-data')

        # Maurice Moss
        moss_twitter = Profile(site='twitter',
                               upstream_id='12345',
                               username=ProfileUsername(
                                   'maurice.moss', start_date='2014-04-01'))

        moss_twitter.usernames.append(
            ProfileUsername('maurice',
                            start_date='2013-06-01',
                            end_date='2014-03-31'))

        moss_twitter.usernames.append(
            ProfileUsername('maurie',
                            start_date='2013-02-15',
                            end_date='2013-05-30'))

        Post(author=moss_twitter,
             content='Going to the grocery store.',
             upstream_id='1234',
             upstream_created='2015-02-04 12:34:50')

        post = Post(author=moss_twitter,
                    content='Love this band!.',
                    upstream_id='2345',
                    upstream_created='2015-03-01')

        post.attachments.append(
            File(name='helloworld.txt',
                 mime='text/plain',
                 content='Hello world!\n\n'.encode('utf8')))

        moss_twitter.posts.append(post)

        with open(os.path.join(sample_dir, 'moss.jpg'), 'rb') as moss_jpg:
            moss_twitter.avatars.append(
                Avatar(url='http://foobar.com/moss-avatar.jpg',
                       mime='image/jpeg',
                       image=moss_jpg.read()))

        moss_twitter.description = "I do IT at Reynholm Industries."
        moss_twitter.post_count = 1205
        moss_twitter.friend_count = 1
        moss_twitter.follower_count = 3
        moss_twitter.join_date = dateutil.parser.parse('2013-06-01')
        moss_twitter.join_date_is_exact = False

        session.add(moss_twitter)

        # Jen Barber
        jen_twitter = Profile(site='twitter',
                              upstream_id='23456',
                              username=ProfileUsername(
                                  'jen.barber', start_date='2013-11-12'))

        jen_twitter.usernames.append(
            ProfileUsername('jenb',
                            start_date='2013-06-14',
                            end_date='2013-11-12'))

        jen_twitter.usernames.append(
            ProfileUsername('jenny',
                            start_date='2013-03-15',
                            end_date='2013-06-14'))

        with open(os.path.join(sample_dir, 'jen.jpg'), 'rb') as jen_jpg:
            jen_twitter.avatars.append(
                Avatar(url='http://foobar.com/jen-avatar.jpg',
                       mime='image/jpeg',
                       image=jen_jpg.read()))

        jen_twitter.description = "Relationship Manager for the IT department."
        jen_twitter.post_count = 1543
        jen_twitter.friend_count = 1
        jen_twitter.follower_count = 1
        jen_twitter.join_date = dateutil.parser.parse('2013-03-15')
        jen_twitter.join_date_is_exact = True

        moss_twitter.followers.append(jen_twitter)

        session.add(jen_twitter)

        # A couple of randos.
        moss_twitter.followers.append(
            Profile(site='twitter', upstream_id='345678', username='******'))

        moss_twitter.followers.append(
            Profile(site='twitter', upstream_id='456789', username='******'))

        jen_twitter.followers.append(
            Profile(site='twitter', upstream_id='567890', username='******'))

        session.commit()
Exemple #9
0
  def get(self):
    self.response.headers['Content-type'] = 'text/plain'
    self.response.out.write('Used %d\n'%quota.get_request_api_cpu_usage())
    l1 = [[u'TileZ', 260256L],
            [u'TileZ', 260257L],
            [u'TileZ', 260258L],
            [u'TileZ', 260259L],
            [u'TileZ', 260260L],
            [u'TileZ', 260261L],
            [u'TileZ', 260262L],
            [u'TileZ', 260263L],
            [u'TileZ', 260264L],
            [u'TileZ', 260265L]]
    for tile_path in l1:
        tile = db.get(db.Key.from_path(*tile_path))
    self.response.out.write('Done key gets %d\n'
                                            %quota.get_request_api_cpu_usage())

    l2 = [(211L, 236L),
        (631L, 418L),
        (377L, 212L),
        (70L, 81L),
        (552L, 208L),
        (236L, 361L),
        (744L, 244L),
        (577L, 291L),
        (335L, 87L),
        (102L, 326L)]
    for x,y in l2:
        tile = TileZ.gql('WHERE x = :1 AND y = :2',x,y).get()
    self.response.out.write('Done xy gets %d\n'
                                            %quota.get_request_api_cpu_usage())

    l3 = [(432L, 350L, 10L),
        (729L, 408L, 10L),
        (736L, 396L, 10L),
        (164L, 109L, 5L),
        (457L, 253L, 9L),
        (330L, 373L, 10L),
        (224L, 208L, 5L),
        (97L, 70L, 10L),
        (422L, 421L, 10L),
        (316L, 288L, 5L)]

    for x,y,s in l3:
        tile = TileZ.gql('WHERE x = :1 AND y = :2 AND shape = :3',x,y,s).get()
    self.response.out.write('Done xys gets %d\n'
                                            %quota.get_request_api_cpu_usage())

    l4 = [[u'Avatar', 255856L],
        [u'Avatar', 316456L],
        [u'Avatar', 331576L],
        [u'Avatar', 339456L],
        [u'Avatar', 425981L],
        [u'Avatar', 425982L],
        [u'Avatar', 425983L],
        [u'Avatar', 425984L],
        [u'Avatar', 425985L],
        [u'Avatar', 425986L]]

    for avatar_path in l4:
        avatar = db.get(db.Key.from_path(*avatar_path))
    self.response.out.write('Done a key gets %d\n'
                                            %quota.get_request_api_cpu_usage())

    l5 = [u'test_name',
        u'a',
        u'zem',
        u'yp',
        u'T',
        u'hobofood',
        u'woop',
        u'j',
        u'bleh',
        u'Ahaaa']

    for a_name in l5:
        avatar = Avatar.gql('WHERE name = :1',a_name).get()
    self.response.out.write('Done a property gets %d\n'
                                            %quota.get_request_api_cpu_usage())