Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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'))
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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")
Exemplo n.º 7
0
    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')
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
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))
Exemplo n.º 10
0
    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'))
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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')
Exemplo n.º 13
0
    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'))
Exemplo n.º 14
0
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))
Exemplo n.º 15
0
    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')
Exemplo n.º 16
0
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
    })
Exemplo n.º 17
0
    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)
Exemplo n.º 20
0
    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'))
Exemplo n.º 21
0
    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'))
Exemplo n.º 22
0
    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')
Exemplo n.º 23
0
    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'))
Exemplo n.º 24
0
    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')
Exemplo n.º 25
0
    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'))
Exemplo n.º 26
0
    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'))
Exemplo n.º 27
0
    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='页面跳转失败!')
Exemplo n.º 28
0
    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')
Exemplo n.º 29
0
    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")
Exemplo n.º 30
0
    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',
                         )
Exemplo n.º 31
0
    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())
Exemplo n.º 32
0
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')
Exemplo n.º 33
0
    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')
Exemplo n.º 34
0
    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')
Exemplo n.º 35
0
    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')
Exemplo n.º 36
0
    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')
Exemplo n.º 37
0
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']))
Exemplo n.º 38
0
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')
Exemplo n.º 39
0
    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")
Exemplo n.º 40
0
 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")
Exemplo n.º 41
0
    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')
Exemplo n.º 42
0
    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')
Exemplo n.º 43
0
 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")
Exemplo n.º 44
0
    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')
Exemplo n.º 45
0
 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")
Exemplo n.º 46
0
 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')
Exemplo n.º 47
0
    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')
Exemplo n.º 48
0
    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()
Exemplo n.º 49
0
 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)
Exemplo n.º 50
0
def best_images():
    images = Images.get_best()
    return render_template('best.html', images=images)
Exemplo n.º 51
0
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)
Exemplo n.º 53
0
    def testDelete(self):
        envs = Images()
        entity = envs.new()

        expected = "DELETE FROM images WHERE id = ?"
        self.assertEqual(envs._generate_delete_query(entity.id), expected)
Exemplo n.º 54
0
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)
Exemplo n.º 56
0
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)