def testAdd(self): envs = Images() before_count = len(envs.all()) self.assertTrue(envs.add(envs.new(), persist=False)) after_count = len(envs.all()) self.assertGreater(after_count, before_count) self.assertEqual(before_count + 1, after_count)
def create(): file = request.files.get('upload_images') result = upload(file) image = Images(img=result, user=current_user.id) image.save() return redirect(url_for('users.show', username=current_user.name))
def upload_file(): if 'user_image' not in request.files: flash(f"No user image key in request.files") return redirect(url_for('home')) file = request.files['user_image'] if file.filename == "": return "Please select a file" if file and allowed_file(file.filename): file.filename = secure_filename(file.filename) output = upload_file_to_s3(file, S3_BUCKET) upload_image = Images(user_image=file.filename, user_id=current_user.id) if upload_image.save(): flash(f'Photo successfully uploaded.') return render_template('upload_pictures.html') else: flash(f'Unable to upload picture. Please try again.') return render_template('upload_pictures.html') else: return redirect(url_for('home'))
def record_image(self, f, uuid, link, album_id, call_type="create", image_id=None): im = Imaging(f) origin = im.thumbnail() try: if call_type == "create": Images().create(uuid=uuid, link=link, album=album_id, thumbnail=origin) else: Images.update(link=link, album_id=album_id, thumbnail=origin, uuid=uuid, updateTime=time()). \ where(Images.id == int(image_id)).execute() if not os.path.exists(config.UPLOAD_DIR): os.makedirs(config.UPLOAD_DIR) file_name = str(uuid) + ".jpeg" tmp_file = os.path.join(config.UPLOAD_DIR, file_name) with open(tmp_file, 'wb') as fs: fs.write(f) except Exception as e: print(traceback.format_exc()) log.error(traceback.format_exc()) return uuid
def edit(self): inputParams = self.getInput() album_id = int(inputParams['id']) album = Albums.get(Albums.id == album_id) current_user = Users.get(Users.name == self.isLogin()) if current_user.id != album.owner.id and not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/albums/list')) self.privData['ALBUM_ID'] = album.id self.privData['ALBUM_NAME'] = album.name self.privData['ALBUM_DESC'] = album.description self.privData['ENABLE_SELECT_THUMBNAIL'] = False imagesList = Images().select() if not self.isAdmin(): imagesList = imagesList.where(Images.owner == current_user) imagesList = imagesList.where(Images.album == album) if imagesList.count(): self.privData['ENABLE_SELECT_THUMBNAIL'] = True self.privData['ALBUMS_LIST'] = [album] self.privData['IMG_ALBUMS_LIST'] = {album.id: imagesList} self.privData['CURRENT_IMG'] = imagesList[0] self.privData['CURRENT_ALBUM'] = album self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('albumEdit')
def create(): user = User.get_or_none(User.id == current_user.id) #This is to make sure a file is submitted, or to prevent prople from submitting empty form. if "images" not in request.files: flash("No file provided", "danger") return redirect(url_for('images.new')) #file is an instance of a File Class. file = request.files.get('images') file.filename = secure_filename(file.filename) #upload_file_s3 from util.helpers.py takes in 2 arguement #1st arguement is the file object itself, the second arguement #is the foldername. Which is the username in our case. image_path = upload_file_s3(file, user.username) image = Images(user=user, image_url=image_path) if image.save(): flash("Image uploaded", "primary") return redirect(url_for('users.show', username=current_user.username)) else: flash("Try again bruh, something went wrong", "danger") return render_template("images/new.html")
def add(self): chatroomsList = Chatrooms().select() userName = self.isLogin() if userName != 'admin': return self.error(msg = '权限不足!', url=self.makeUrl('/admin/chatrooms/list')) user = Users.get(Users.name == userName) albumsList = Albums().select().where(Albums.owner == user.id) imagesList = Images().select().where(Images.owner == user.id) if not albumsList.count(): return self.error(msg = '请创建至少一个专辑!', url=self.makeUrl('/admin/chatrooms/list')) if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/chatrooms/list')) album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) self.privData['ALBUMS_LIST'] = \ [album for album in albumsList if album.id not in excluded_albums] self.privData['IMG_ALBUMS_LIST'] = album_images_map # 默认专辑为当前用户的第一个专辑 self.privData['CURRENT_ALBUM'] = self.privData['ALBUMS_LIST'][0] # 默认图片为默认专辑的第一张图片 self.privData['CURRENT_IMG'] = album_images_map[self.privData['CURRENT_ALBUM'].id][0] self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('chatroomAdd')
def testInit(self): envs = Images() self.assertIsInstance(envs, ModelCollection) self.assertGreater(envs._items, 0) self.assertIsInstance(envs.all(), list) for i in envs.all(): self.assertIsInstance(i, Image)
def profile_upload(): if request.method == 'POST': f = request.files['user_file'] f.filename = secure_filename(f.filename) image = Images(path=f.filename, user=current_user.id) image.save() print(upload_file_to_s3(f)) return redirect(url_for('users.show', username=current_user.username))
def edit(self): inputParams = self.getInput() imagesList = Images().select() if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) try: contactObj = Contacts.get(Contacts.id == int(inputParams['id'])) except Exception, e: return self.error(msg = '对象不存在: %s' % e, url=self.makeUrl('/admin/contacts/list'))
def test_InsertQuery(self): envs = Images() entity = envs.new() expected = OrderedDict([("id", None), ("name", None), ("backend_id", None), ("description", None)]) data = envs._generate_query_data(entity) self.assertEqual(expected, data) expected = "INSERT INTO images(id,name,backend_id,description) VALUES (?,?,?,?)" self.assertEqual(envs._generate_insert_query(data), expected)
def add(self): imagesList = Images().select() if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) self.privData['IMAGES_LIST'] = imagesList self.privData['CURRENT_IMG'] = imagesList[0] self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('newsAdd')
def save(self): inputParams = self.getInput() id = int(inputParams['id']) if id == 1: return self.error(msg = '不能系统图片!', url=self.makeUrl('/admin/images/list')) try: img = Images().get(Images.id == id) img.description = self.htmlunquote(inputParams['desc']) img.save() except Exception, e: return self.error(msg='对象更新失败: %s' % e, url=self.makeUrl('/admin/images/list'))
def create(): print('abcdefghijklmn') file = request.files.get('upload_images') print(file) print(file.filename) result = upload(file) print(result) Images.create(user = current_user.id, img = result) # images = Images(user = current_user.id, img = result) # images.save() return redirect(url_for('users.show', username = current_user.name))
def add(self): if not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/users/list')) imagesList = Images().select() # 确认当前用户是否至少有一个包含图片的专辑 if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) self.privData['IMAGES_LIST'] = imagesList self.privData['CURRENT_IMG'] = imagesList[0] self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('userAdd')
def upload_img(): from app import app file = request.files.get("image") print(f"upload images:{file}") result = upload(file) print(get_jwt_identity()) image = Images(user=get_jwt_identity(), img=result) image.save() return jsonify({ "images_url": "app.config.get('AWS_S3_DOMAIN')" + file.filename, "success": True })
def delete(self): inputParams = self.getInput() id = int(inputParams['id']) if id == 1: return self.error(msg = '不能删除系统图片!', url=self.makeUrl('/admin/images/list')) try: img = Images().get(Images.id == id) img.delete_instance() from uploadmgr import httpFileSystem as fs os.unlink(fs().imageURIFromUUID(img.uuid)) except Exception, e: return self.error(msg='对象删除失败: %s' % e, url=self.makeUrl('/admin/images/list'))
def create(id): image = Images.get_by_id(id) payment_amount = request.form.get('amount') result = transact({ 'amount': request.form['amount'], 'payment_method_nonce': request.form['payment_method_nonce'], 'options': { "submit_for_settlement": True } }) if result.is_success or result.transaction: new_payment = Payments(image_id=image.id, donor=current_user.id, payment_amount=payment_amount).save() return redirect( url_for('payments.show_checkout', transaction_id=result.transaction.id, id=image)) else: for x in result.errors.deep_errors: flash('Error') return redirect(url_for('payments.index', id=id))
def show_checkout(id, transaction_id): image = Images.get_by_id(id) transaction = find_transaction(transaction_id) result = {} if transaction.status in TRANSACTION_SUCCESS_STATUSES: result = { 'header': 'Sweet Success!', 'icon': 'success', 'message': 'Your test transaction has been successfully processed. See the Braintree API response and try again.' } email() result = { 'header': 'Transaction Failed', 'icon': 'fail', 'message': 'Your test transaction has a status of ' + transaction.status + '. See the Braintree API response and try again.' } email() return render_template('payments/show.html', transaction=transaction, result=result, id=id)
def modify(self): userInput= self.getInput() userObj = Users.get(Users.id == int(userInput['id'])) current_user = Users.get(Users.name == self.isLogin()) if userObj.id != current_user.id and not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/users/list')) thumbnail_id = int(userInput['thumbnail']) if userInput.has_key('thumbnail') else 0 if thumbnail_id: thumbnail_data = Images.get(Images.id == thumbnail_id).thumbnail else: import base64 from imaging import imaging thumbnail_data = base64.b64encode(buffer(imaging.default_thumbnail())) try: userObj = Users.get(Users.id == int(userInput['id'])) userObj.email = userInput['email'] userObj.name = userInput['name'] userObj.cellphone = userInput['cellphone'] userObj.description = userInput['desc'] userObj.gender = int(userInput['gender']) userObj.avatur = thumbnail_data if self.isAdmin(): userObj.role = userInput['role'] userObj.save() except Exception, e: return self.error(msg = '会员修改失败: %s' % e, url=self.makeUrl('/admin/users/list'))
def modify(self): inputParams= self.getInput() album_id = int(inputParams['id']) thumbnail_id = int(inputParams['thumbnail']) if inputParams.has_key('thumbnail') else 0 if album_id == 1: return self.error(msg='不能编辑系统专辑', url=self.makeUrl('/admin/albums/list')) album = Albums.get(Albums.id == album_id) current_user = Users.get(Users.name == self.isLogin()) if current_user.id != album.owner.id and not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/albums/list')) if thumbnail_id: thumbnail_data = Images.get(Images.id == thumbnail_id).thumbnail else: import base64 from imaging import imaging thumbnail_data = base64.b64encode(buffer(imaging.default_thumbnail())) try: album.name = inputParams['name'] album.description = inputParams['desc'] album.thumbnail = thumbnail_data album.save() except Exception, e: return self.error(msg = '专辑修改失败: %s' % e, url=self.makeUrl('/admin/albums/list'))
def edit(self): inputParams = self.getInput() newsID = int(inputParams['id']) news = News.get(News.id == newsID) self.privData['NEWS'] = news imagesList = Images().select() if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) self.privData['IMAGES_LIST'] = imagesList self.privData['CURRENT_IMG'] = news.thumbnail self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('newsEdit')
def save(self): userInput = self.getInput() # 只有admin才能新增用户 if not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/users/list')) thumbnail_id = int(userInput['thumbnail']) if userInput.has_key('thumbnail') else 0 if thumbnail_id: thumbnail_data = Images.get(Images.id == thumbnail_id).thumbnail else: import base64 from imaging import imaging thumbnail_data = base64.b64encode(buffer(imaging.default_thumbnail())) try: Users.create( cellphone = userInput['cellphone'], email = userInput['email'], name = userInput['name'], password = hashlib.md5(userInput['passwd']).hexdigest(), avatur = thumbnail_data, gender = int(userInput['gender']), description = userInput['desc'], role = int(userInput['role']) ) except Exception, e: return self.error(msg = '会员保存失败: %s' % e, url=self.makeUrl('/admin/users/list'))
def edit(self): inputParams = self.getInput() groupID = inputParams['id'] current_group = Groups().get(Groups.id == groupID) current_user = Users.get(Users.name == self.isLogin()) if current_user.id != current_group.owner.id and not self.isAdmin() or not current_user.role.type < 100: return self.error(msg = '权限不足!', url=self.makeUrl('/admin/groups/list')) categoriesList = Categories().select() albumsList = Albums().select() imagesList = Images().select() if not self.isAdmin(): albumsList = albumsList.where(Albums.owner == current_user) imagesList = imagesList.where(Images.owner == current_user) # 确认当前用户是否至少有一个包含图片的专辑 if not albumsList.count(): return self.error(msg = '请创建至少一个专辑!', url=self.makeUrl('/admin/albums/list')) if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) # 构建{album: images}, 同时排除不包括任何图片的专辑 album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) self.privData['ALBUMS_LIST'] = \ [album for album in albumsList if album.id not in excluded_albums] self.privData['CATEGORIES_LIST'] = categoriesList self.privData['IMG_ALBUMS_LIST'] = album_images_map self.privData['CURRENT_OBJECT'] = current_group self.privData['CURRENT_IMG'] = current_group.thumbnail self.privData['CURRENT_ALBUM'] = current_group.thumbnail.album self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('groupEdit')
def save(self): inputParams = self.getInput() id = int(inputParams['id']) if id == 1: return self.error(msg = '不能系统图片!', url=self.makeUrl('/admin/images/list')) img = Images().get(Images.id == id) current_user = Users.get(Users.name == self.isLogin()) if current_user.id != img.owner.id and not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/images/list')) try: img.description = self.htmlunquote(inputParams['desc']) img.album = int(inputParams['album']) img.save() except Exception, e: return self.error(msg='对象更新失败: %s' % e, url=self.makeUrl('/admin/images/list'))
def delete(self): inputParams = self.getInput() id = int(inputParams['id']) if id == 1: return self.error(msg = '不能删除系统图片!', url=self.makeUrl('/admin/images/list')) img = Images().get(Images.id == id) current_user = Users.get(Users.name == self.isLogin()) if current_user.id != img.owner.id and not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/images/list')) try: img.delete_instance() from uploadmgr import httpFileSystem as fs os.unlink(fs().imageURIFromUUID(img.uuid)) except Exception, e: return self.error(msg='对象删除失败: %s' % e, url=self.makeUrl('/admin/images/list'))
def add_question(self): user =Users.get(Users.name == self.isLogin()) imagesList = Images().select() # 确认当前用户是否至少有一个包含图片的专辑 if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) self.privData['IMAGES_LIST'] = imagesList self.privData['CURRENT_IMG'] = imagesList[0] self.privData['SUBMIT_NAME'] = "thumbnail" try: #import pdb;pdb.set_trace() self.privData['USER'] = user return self.display('raise-question') except Exception, e: print e return self.error(msg='页面跳转失败!')
def edit(self): inputParams = self.getInput() userName = self.isLogin() chatroomID = int(inputParams['id']) # 权限检查 chatroom = Chatrooms.get(Chatrooms.id == chatroomID) current_user = Users.get(Users.name == self.isLogin()) if current_user.id != chatroom.owner.id and not self.isAdmin() or not current_user.role.type < 100: return self.error(msg = '权限不足!', url=self.makeUrl('/admin/chatrooms/list')) self.privData['CHATROOM'] = chatroom user = Users.get(Users.name == userName) albumsList = Albums().select().where(Albums.owner == user.id) imagesList = Images().select().where(Images.owner == user.id) # 确认当前用户是否至少有一个包含图片的专辑 if not albumsList.count(): return self.error(msg = '请创建至少一个专辑!', url=self.makeUrl('/admin/albums/list')) if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) # 构建{album: images}, 同时排除不包括任何图片的专辑 album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) self.privData['ALBUMS_LIST'] = \ [album for album in albumsList if album.id not in excluded_albums] self.privData['IMG_ALBUMS_LIST'] = album_images_map self.privData['CURRENT_CHATROOM'] = chatroom self.privData['CURRENT_ALBUM'] = chatroom.thumbnail.album self.privData['CURRENT_IMG'] = chatroom.thumbnail self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('chatroomEdit')
def edit(self): inputParams = self.getInput() userName = self.isLogin() if userName != "admin": return self.error(msg="权限不足!", url=self.makeUrl("/admin/articles/list")) articleID = int(inputParams["id"]) article = Articles.get(Articles.id == articleID) self.privData["ARTICLE"] = article user = Users.get(Users.name == userName) albumsList = Albums().select().where(Albums.owner == user.id) imagesList = Images().select().where(Images.owner == user.id) categoriesList = Categories().select() # 确认当前用户是否至少有一个包含图片的专辑 if not albumsList.count(): return self.error(msg="请创建至少一个专辑!", url=self.makeUrl("/admin/albums/list")) if not imagesList.count(): return self.error(msg="请创建至少一个图片!", url=self.makeUrl("/admin/images/list")) # 分类列表 self.privData["CATEGORIES_LIST"] = categoriesList # 构建{album: images}, 同时排除不包括任何图片的专辑 album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) self.privData["ALBUMS_LIST"] = [album for album in albumsList if album.id not in excluded_albums] self.privData["IMG_ALBUMS_LIST"] = album_images_map self.privData["CURRENT_ARTICLE"] = article self.privData["CURRENT_ALBUM"] = article.thumbnail.album self.privData["CURRENT_IMG"] = article.thumbnail self.privData["SUBMIT_NAME"] = "thumbnail" return self.display("articleEdit")
def __init__(self): db.connect() self.version = None self.admin = None self.sys_category = None self.default_thumbnail = None self.sys_image = None if not Version.table_exists(): tables = [ Version, Categories, Products, News, Notifications, Images, Orders, OrderDetails, Users, Contacts, Accountings, AccountIncommings, AccountOutgoings, Questions, Answers, Albums ] db.create_tables(tables) self.version=Version.create(description=open('VERSION').read()) self.default_thumbnail = base64.b64encode(buffer(imaging.default_thumbnail())) self.sys_category = Categories.create( name = '系统预置分类', description = '预置的初始父类!', ) self.sys_image = Images.create( description = '预置的系统图片!', thumbnail = self.default_thumbnail, uuid = 'default' ) self.admin = Users.create( name = 'admin', cellphone = '13912345678', email = '*****@*****.**', password = '******', gender = 0, avatur = self.sys_image, description = '系统管理员', weixin= '0', address= 'sv', )
def __image_uuid(self, uuid): try: src = None image = Images.get(Images.uuid == uuid) src = ALI_CDNIMAGES_URL + "/%s" % ALI_OSS_DIR + '/%s.jpeg' % uuid log.info('src' + str(src)) return src except Exception as e: log.error('__image_uuid %s' % traceback.format_exc())
def specific_usr_upload_img(id): if current_user.id == int(id): #get uploaded img details upload_file = request.files['user_upload_img'] # upload_file = request.files.get('user_upload_img') #upload to s3 bucket upload_file_to_s3(upload_file, os.environ.get('S3_BUCKET_NAME')) #save in DB i = Images(user_id=current_user.id, img_name=upload_file.filename) # breakpoint() if i.save(): flash('Image Uploaded Successfully!') return redirect(url_for('users.user_profile', id=id)) else: flash('Upload Image Failed!') return render_template('/users/sign_in.html', errors=i.errors) else: flash('Upload Image Failed aaa!') return redirect('/users/sign_in.html')
def __init__(self): db.connect() tables = [ Albums, ArticleComments, Articles, Categories, Images, Users, Version, ] if not Version.table_exists(): db.create_tables(tables) self.version, _ = Version.get_or_create(description="0.1") self.default_thumbnail = "data:image/jpg;base64,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" # self.default_thumbnail = base64.b64encode( # buffer(Imaging.default_thumbnail())) self.sys_categories, _ = Categories.get_or_create( name='系统分类', description='初始父类!', thumbnail=self.default_thumbnail, ) self.article_categories = Categories.create( name='文章', description='文章', thumbnail=self.default_thumbnail, parent=self.sys_categories) self.admin, _ = Users.get_or_create( name='admin', cellphone='19999999999', email='*****@*****.**', address='陕西西安', birthday='2020.9', password='******', gender=0, description='系统管理员!', avatar=self.default_thumbnail) self.sys_album, _ = Albums.get_or_create( name='系统专辑', description='系统专辑!', thumbnail=self.default_thumbnail, owner=self.admin) self.sys_image, _ = Images.get_or_create( description='系统图片!', thumbnail=self.default_thumbnail, owner=self.admin, album=self.sys_album, uuid='default')
def edit(self): inputParams = self.getInput() userObj = Users.get(Users.id == int(inputParams['id'])) current_user = Users.get(Users.name == self.isLogin()) if userObj.id != current_user.id and not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/users/list')) # 不允许创建系统管理员 rolesList = Roles().select().where(Roles.id>1) self.privData['ROLES_LIST'] = rolesList self.privData['USER_INFO'] = userObj albumsList = Albums().select() imagesList = Images().select() # 确认当前用户是否至少有一个包含图片的专辑 if not albumsList.count(): return self.error(msg = '请创建至少一个专辑!', url=self.makeUrl('/admin/albums/list')) if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) # 构建{album: images}, 同时排除不包括任何图片的专辑 album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) self.privData['ALBUMS_LIST'] = \ [album for album in albumsList if album.id not in excluded_albums] self.privData['IMG_ALBUMS_LIST'] = album_images_map self.privData['CURRENT_ALBUM'] = self.privData['ALBUMS_LIST'][0] self.privData['CURRENT_IMG'] = album_images_map[self.privData['CURRENT_ALBUM'].id][0] self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('userEdit')
def add(self): categoriesList = Categories().select() # 获得当前用户的专辑列表和图片列表 albumsList = Albums().select() imagesList = Images().select() current_user = Users.get(Users.name == self.isLogin()) if not self.isAdmin(): albumsList = albumsList.where(Albums.owner == current_user) imagesList = imagesList.where(Images.owner == current_user) if not current_user.role.type < 100: return self.error(msg = '权限不足!', url=self.makeUrl('/admin/albums/list')) # 确认当前用户是否至少有一个包含图片的专辑 if not albumsList.count(): return self.error(msg = '请创建至少一个专辑!', url=self.makeUrl('/admin/albums/list')) if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) # 构建{album: images}, 同时排除不包括任何图片的专辑 album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) self.privData['ALBUMS_LIST'] = \ [album for album in albumsList if album.id not in excluded_albums] self.privData['CATEGORIES_LIST'] = categoriesList self.privData['IMG_ALBUMS_LIST'] = album_images_map # 默认专辑为当前用户的第一个专辑 self.privData['CURRENT_ALBUM'] = self.privData['ALBUMS_LIST'][0] # 默认图片为默认专辑的第一张图片 self.privData['CURRENT_IMG'] = album_images_map[self.privData['CURRENT_ALBUM'].id][0] self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('groupAdd')
def edit(self): inputParams = self.getInput() userObj = Users.get(Users.id == int(inputParams['id'])) current_user = Users.get(Users.name == self.isLogin()) if userObj.id != current_user.id and not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/users/list')) # 不允许创建系统管理员 self.privData['USER_INFO'] = userObj imagesList = Images().select() # 确认当前用户是否至少有一个包含图片的专辑 if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) self.privData['IMAGES_LIST'] = imagesList self.privData['CURRENT_IMG'] = userObj.avatur self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('userEdit')
def saveImageToDB(imagesInfo, isBig = True): ''' Download images from vk.com return images which not found in vk servers ''' size = -1 if isBig else 0 for imagesInfo in imagesInfo: try: if Images().checkImgId(imagesInfo['id']): Images().update(imagesInfo) else: response = requests.get(imagesInfo['sizes'][size]['src']) img = Image.open(BytesIO(response.content)) img = img.convert(mode='RGB') img_hash = getImageHash(img) Images().insert(imagesInfo, img_hash) except urllib.error.HTTPError as err: print(err) print('https://vk.com/photo-2481783_' + str(imagesInfo['id'])) except Exception as err: print(err) print('https://vk.com/photo-2481783_' + str(imagesInfo['id']))
def create(): file = request.files["user_file"] #if no file in request if not file: flash("Please choose a photo to upload.", "danger") return render_template('images/new.html') file.filename = secure_filename(file.filename) output = upload_file_to_s3(file) #import from helpers.py if not output: flash("Unable to upload photo, try again.", "danger") return render_template('images/new.html') else: uploadphoto = Images(username=User.id, img_file=file) images = Images(username_id=current_user.id, img_file=output) print(output) flash("Picture uploaded succesfully", "success") if images.save(): flash("Posted!", "success") return redirect(url_for('images.new')) else: flash("Upload failed", "danger") return render_template('images/new.html')
def add(self): articlesList = Articles().select() userName = self.isLogin() if userName != "admin": return self.error(msg="权限不足!", url=self.makeUrl("/admin/articles/list")) user = Users.get(Users.name == userName) albumsList = Albums().select().where(Albums.owner == user.id) imagesList = Images().select().where(Images.owner == user.id) categoriesList = Categories().select() if not albumsList.count(): return self.error(msg="请创建至少一个专辑!", url=self.makeUrl("/admin/articles/list")) if not imagesList.count(): return self.error(msg="请创建至少一个图片!", url=self.makeUrl("/admin/articles/list")) album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) # 分类列表 self.privData["CATEGORIES_LIST"] = categoriesList self.privData["ALBUMS_LIST"] = [album for album in albumsList if album.id not in excluded_albums] self.privData["IMG_ALBUMS_LIST"] = album_images_map # 默认专辑为当前用户的第一个专辑 self.privData["CURRENT_ALBUM"] = self.privData["ALBUMS_LIST"][0] # 默认图片为默认专辑的第一张图片 self.privData["CURRENT_IMG"] = album_images_map[self.privData["CURRENT_ALBUM"].id][0] self.privData["SUBMIT_NAME"] = "thumbnail" return self.display("articleAdd")
def update_image(self): if web.ctx.method == "POST": image_id = web.input().get("image_id", None) link_url = web.input().get('link', '').strip() album_id = int(web.input().get('album_id')) file = web.input().get("file") try: flink = Images.get_or_none(Images.id == int(image_id)) if flink: f = HttpUploadedFile(file) self.record_image(f=file, uuid=f.uuid(), link=link_url, call_type='update', album_id=album_id, image_id=image_id) self.private_data["update_success"] = True return web.seeother(self.make_url('images_list')) except Exception as e: log.error('create album failed%s' % traceback.format_exc()) self.private_data["update_success"] = False self.private_data["update_message"] = u"更新相册失败" return web.seeother( self.make_url('update_image', {'image_id': image_id})) if web.ctx.method == "GET": image_id = web.input().get("image_id", None) if not image_id or not image_id.isdigit(): self.private_data["update_success"] = False self.private_data["update_message"] = u"参数有误" return web.seeother(self.make_url('images_list')) f_image = Images.get_or_none(Images.id == int(image_id)) if not f_image: return web.seeother(self.make_url('images_list')) albums = Albums.select().where(Albums.status == 0). \ order_by(Albums.id.asc()).execute() self.private_data["albums_list"] = albums self.private_data["image"] = f_image return self.display("admin/update_image")
def list(self): inputParams = self.getInput() page = int(inputParams['page']) if inputParams.has_key('page') else 1 imgsList = Images.select().order_by(Images.id.desc()) pageString = self.getPageStr( self.makeUrl('/admin/images/list'), page, config.COUNT_PER_PAGE, imgsList.count() ) self.privData['IMAGES_LIST'] = imgsList.paginate(page, config.COUNT_PER_PAGE) self.privData['PAGE_STRING'] = pageString return self.display('imagesList')
def add(self): if not self.isAdmin(): return self.error(msg = '权限不足!', url=self.makeUrl('/admin/users/list')) albumsList = Albums().select() imagesList = Images().select() # 确认当前用户是否至少有一个包含图片的专辑 if not albumsList.count(): return self.error(msg = '请创建至少一个专辑!', url=self.makeUrl('/admin/albums/list')) if not imagesList.count(): return self.error(msg = '请创建至少一个图片!', url=self.makeUrl('/admin/images/list')) # 构建{album: images}, 同时排除不包括任何图片的专辑 album_images_map = {} excluded_albums = [] for album in albumsList: album_images = imagesList.where(Images.album == album.id) if album_images.count(): album_images_map[album.id] = album_images else: excluded_albums.append(album.id) # 不允许创建系统管理员 rolesList = Roles().select().where(Roles.id>1) self.privData['ROLES_LIST'] = rolesList self.privData['ALBUMS_LIST'] = \ [album for album in albumsList if album.id not in excluded_albums] self.privData['IMG_ALBUMS_LIST'] = album_images_map self.privData['CURRENT_ALBUM'] = self.privData['ALBUMS_LIST'][0] self.privData['CURRENT_IMG'] = album_images_map[self.privData['CURRENT_ALBUM'].id][0] self.privData['SUBMIT_NAME'] = "thumbnail" return self.display('userAdd')
def images_list(self): inputs = self.get_input() if web.ctx.method == "GET": page = int(inputs.get('page', 1)) page_size = int(inputs.get('page_size', 20)) self.private_data['current_page'] = page self.private_data['total_page'] = 0 image_query = Images.select().where(Images.status == 0). \ order_by(Images.id.asc()) total_count = image_query.count() total_page = (total_count + page_size - 1) / page_size self.private_data['total_page'] = total_page self.private_data['images_list'] = \ image_query.paginate(page, page_size).execute() return self.display("admin/images_list")
def search(self): inputParams = self.getInput() keywords = inputParams['keywords'].strip().lower() if inputParams.has_key('keywords') else '' page = int(inputParams['page']) if inputParams.has_key('page') else 1 imgsList = Images.select().where(Images.description.contains(keywords)).order_by(Images.id.desc()) pageString = self.getPageStr( self.makeUrl('/admin/images/list'), page, config.COUNT_PER_PAGE, imgsList.count() ) self.privData['IMAGES_LIST'] = imgsList.paginate(page, config.COUNT_PER_PAGE) self.privData['PAGE_STRING'] = pageString return self.display('imagesList')
def create_article(self): if web.ctx.method == "GET": category_list = Categories.select().where(Categories.status == 0) self.private_data["category_list"] = category_list return self.display("admin/create_article") else: inputs = self.get_input() title = inputs.get('name') content = inputs.get('content') summary = inputs.get("summary") category_id = inputs.get("category_id") source_url = inputs.get("source_url", "") keywords = str(inputs.get("keywords", "")).strip() image = Images.get_or_none() category = Categories.get_or_none(Categories.id == category_id) try: tags_list = keywords.split(",") if keywords else [] if tags_list: got_tags = Tags.select().where(Tags.name.in_(tags_list)) tmp_list = [] for tag in got_tags: tmp_list.append(tag.name) for tag_str in tags_list: if tag_str not in tmp_list: t = Tags(name=tag_str) t.save() db = TinyDB('settings/db.json') db.truncate() db.close() article = Articles(name=title, content=content, summary=summary, category=category, original_address=source_url, keywords=keywords, thumbnail=image) article.save() self.private_data["create_success"] = True return web.seeother(self.make_url('articles')) except Exception as e: log.error('create article failed %s' % traceback.format_exc()) log.error('input params %s' % inputs) self.private_data["create_success"] = False return self.display("admin/create_article")
def GET(self): """ 首页 :return: """ inputs = self.get_input() page = int(inputs.get('page', 1)) page_size = int(inputs.get('page_size', 20)) self.private_data['article_list'] = [] self.private_data['current_page'] = 1 self.private_data['total_page'] = 0 self.private_data['category_list'] = [] try: album = Albums.get(Albums.is_show == 1) images = Images.select().where(Images.status == 0, Images.album == album.id) images_dict_list = [] for image in images.dicts().iterator(): image_dict = { 'link': image.get("link"), 'url': config.WEB_URL + 'static/uploads/' + image.get("uuid") + '.jpeg' } images_dict_list.append(image_dict) category_list = Categories.select().where( Categories.status == 0). \ order_by(Categories.id.desc()) article_query = Articles.select().where(Articles.status == 0). \ order_by(Articles.id.desc()) article_list = article_query.paginate(page, page_size) total_count = article_query.count() total_page = (total_count + page_size - 1) / page_size self.private_data['article_list'] = article_list.execute() self.private_data['current_page'] = page self.private_data['total_page'] = total_page self.private_data['images_list'] = images_dict_list self.private_data['category_list'] = category_list.execute() except Exception as e: log.error('Failed to get home data. Error msg %s', e) log.error(traceback.format_exc()) return self.display('front/index')
def list(self): inputParams = self.getInput() page = int(inputParams['page']) if inputParams.has_key('page') else 1 imgsList = Images.select() albumsList = Albums().select() current_user = Users.get(Users.name == self.isLogin()) if not self.isAdmin(): imgsList = imgsList.where(Images.owner == current_user) albumsList = albumsList.where(Albums.owner == current_user) pageString = self.getPageStr( self.makeUrl('/admin/images/list'), page, config.COUNT_PER_PAGE, imgsList.count() ) self.privData['IMAGES_LIST'] = imgsList.order_by(Images.id.desc()).paginate(page, config.COUNT_PER_PAGE) self.privData['PAGE_STRING'] = pageString self.privData['ALBUMS_LIST'] = albumsList return self.display('imagesList')
def signup(self): inputs = self.get_input() try: log.info('signup:' + str(inputs)) cellphone = inputs.get('cellphone') smscode = inputs.get('smscode') tuser = Users.get(Users.cellphone == cellphone) if tuser: return self.error() except Exception as e: log.error('execus signup %s' % traceback.format_exc()) return self.error() try: pwd = md5(inputs['password']).hexdigest() if not leancloud.Apis().verify_sms_code(cellphone, smscode): return self.error() signup_token = gen_token() created_time = datetime.datetime.now() Users.create( cellphone=cellphone, name=cellphone, password=pwd, gender=0, role=2, description=self.htmlunquote(''), address="住址", token=signup_token, token_created_time=created_time, birthday="1970-5-12", avatur=Images.get(Images.id == 1).thumbnail, ) return self.success() except Exception as e: log.error('execus signup%s' % traceback.format_exc()) return self.error()
def cron_job(usage=None, fact_type=None): channels = Distributor.get_distributors("slack") emails = Distributor.get_distributors("email") print("sending...") used = False count = 0 user = Users.choose_user(fact_type) image = Images.get_images(user=user.instatag, hashtag=user.hashtag) fact = Facts.retrieve_random_fact(user.associated_fact_type) selected_attachment = SlackCommands.create_slack_attachment( img=image['image_url'], insta_tag=user.instatag, ts=image['ts']) if usage == "command": return {"text": fact.fact_text, "attachments": selected_attachment} else: for channel in channels: slack_commands = SlackCommands() response = slack_commands.send_message( channel=channel, fact=fact, selected_attachment=selected_attachment) MessageLog.log_message(response=response, instatag=user.instatag) user.add_to_send_count() Emailer.send_email(emails, selected_attachment, fact.fact_text)
def best_images(): images = Images.get_best() return render_template('best.html', images=images)
def save_image(): Images.add(request.form) return "", 200
def index(id): image = Images.get_by_id(id) client_token = generate_client_token() return render_template('payments/new.html', image=image, client_token=client_token)
def testDelete(self): envs = Images() entity = envs.new() expected = "DELETE FROM images WHERE id = ?" self.assertEqual(envs._generate_delete_query(entity.id), expected)
def donation_show(id): pic = Images.select().where(Images.user_id==current_user.id, Images.id==int(id)).first() #generate token here & pass to html client_token = gateway.client_token.generate() return render_template('/images/image_donation.html',bucket_name = os.environ.get('S3_BUCKET_NAME'),pic=pic,client_token=client_token)
def index(image_id): image = Images.get_or_none(Images.id == image_id) return render_template("/donations/index.html", image=image)
def new(): # prefetch: prevent case like n+1 query user_with_images = prefetch(User.select(), Images.select()) # breakpoint() return render_template('images/image_galery.html', bucket_name = os.environ.get('S3_BUCKET_NAME'),user_with_images=user_with_images)