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)
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
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')
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)