Example #1
0
 def post(self):        
     try:
                 action = self.request.get("action")
                 if action == "new":
                     if "image" in self.request.arguments():
                         img_req = db.Blob(self.request.get("image"))
                         content_id = db.Key(self.request.get("content"))
                         image = Photo(content=content_id, image=img_req, tumb_img=images.resize(img_req, 300, 300))
                         image.put()
                     else:            
                         content = Content(menu=self.request.get("menu"),
                                           title=self.request.get("title"),
                                           text=self.request.get("text"),)
                         content.put()
                 if action == "edit":
                     if "content" in self.request.arguments():
                         content_id = db.Key(self.request.get("content"))
                         content = Content.get(content_id)
                         content.menu = self.request.get("menu")
                         content.title = self.request.get("title")
                         content.text = self.request.get("text")
                         content.put()                        
                 if action == "del":
                     if "id" in self.request.arguments():
                         id = db.Key(self.request.get("id"))
                         photo = Photo.get(id)
                         photo.delete()                
                     if "content" in self.request.arguments():
                         content_id = db.Key(self.request.get("content"))
                         content = Content.get(content_id)
                         content.delete()
                 self.redirect("/admin/")            
     except Exception:
         self.error(404)
Example #2
0
    def _upload_photos(self, users, comps):
        d = os.getcwd()
        d = os.path.join(d, 'test', '*.jpg')
        photos = glob(d)
        titles = ('Mars', 'Finnish Flag', 'Hospital in the distance', '', '', '')
        comp1 = comps[0]

        # collect Photo instances here
        p = []
        all_data = zip(product(users, comps), photos, titles)
        for (user, comp), photo_path, title in all_data:
            file_name = files.blobstore.create(mime_type='image/jpeg')
            with files.open(file_name, 'a') as f:
                f.write(open(photo_path, 'rb').read())
            files.finalize(file_name)
            blob_key = files.blobstore.get_blob_key(file_name)

            photo = Photo(
                user=user.key,
                competition=comp.key,
                blob=blob_key,
                title=title
            )
            photo.put()
            p.append(photo)
            user_comp = UserComp(user=user.key, comp=comp.key)
            if comp == comp1:
                user_comp.submitted_scores = True
            user_comp.put()
        return p
Example #3
0
 def post(self, username, img_max_size):
     if self.cur_user and self.cur_user.flag>1:
         self.header['Content-Type'] = "text/html"
         rspd = {'status': 201, 'msg':'ok'}
         
         file_content = self.request.get('filetoupload','')
         if file_content:
             imgobj = images.Image(file_content)
             max_w = int(img_max_size)
             if imgobj.width <= max_w:
                 #img_data = file_content
                 pass
             else:
                 imgobj.resize(width=max_w)
             imgobj.im_feeling_lucky()
             
             img_data = imgobj.execute_transforms(output_encoding=images.JPEG, quality=90)
             
             ni_obj = Photo(key_name = '%s-%s'%(username, str(int(time()))), content = img_data)
             ni_obj.put()
             if ni_obj.is_saved():
                 rspd['status'] = 200
                 rspd['msg'] = u'图片已成功上传'
                 rspd['url'] = '%s/photo/%s.jpg' % (BASE_URL, ni_obj.key().name())
             else:
                 rspd['status'] = 500
                 rspd['msg'] = u'图片上传失败,可能是网络问题或图片太大,请刷新本页再上传'
         else:
             rspd['msg'] = u'没有上传图片'
         self.write(json.dumps(rspd))
     else:
         self.error(403)
         self.write('403:forbidden')
Example #4
0
    def post(self):
        user_id, user = self.get_user()
        #user_id, username = self.get_cookie()
        extra_photo = int(self.request.get('is_photo_extra', '0'))
        if extra_photo:
            upload_files = self.get_uploads('photo-extra-submit')
        else:
            upload_files = self.get_uploads('photo-submit')

        if not upload_files:
            data = {
                'user': user,
                'page_title': 'Upload error',
                'error': 'You forgot to select an image file.'
            }
            self.render('upload_error.html', **data)
            return

        blob_info = upload_files[0]

        if blob_info.content_type != 'image/jpeg':
            # only store jpegs - delete file otherwise
            blob_info.delete()
            data = {
                'user': user,
                'public_profile': True,
                'page_title': 'Upload error',
                'error': (
                    'You tried to upload a file which was '
                    'not a jpeg image.'
                )
            }
            self.render('upload_error.html', **data)
            return

        if extra_photo:
            if blob_info.size > 512 * 1024:
                # only store jpegs - delete file otherwise
                blob_info.delete()
                data = {
                    'user': user,
                    'public_profile': True,
                    'page_title': 'Upload error',
                    'error': (
                        'You tried to upload a file which was '
                        'larger than 512kB.'
                    )
                }
                self.render('upload_error.html', **data)
                return
            extra_data = self._extra_photo(user)
        else:
            extra_data = self._comp_photo(user)

        photo_data = {
            'user': user.key,
            'blob': blob_info.key(),
        }

        exif = blob_exif(blob_info.key())
        photo_data.update(exif)
        photo_data.update(extra_data)

        # add photo details to database
        photo = Photo(**photo_data)
        photo.put()
        logging.info('new photo: %s' % photo)

        self.redirect('/user/%d' % user_id)