Ejemplo n.º 1
0
def upload():
    try:
        photo = request.files.get('photo')
        user_id = request.form.get('user_id')
        icon_type = int(request.form.get('icon_type'))
        token = request.form.get('token')
        # 提取文件后缀
        suffix = os.path.splitext(photo.filename)[1]
        # 生成随机文件名
        filename = random_string() + suffix
        photos.save(photo, name=filename)
        img_url = photos.url(filename)
        img_url = img_url.replace('_uploads', 'static')
        img_url = img_url.replace('photos', 'upload')
        # 判断数据库是否有该用户
        user = Icon.query.filter_by(user_id=user_id).first()
        if user:
            # 删除原来的头像
            os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], user.icon))
            user.icon = filename
            user.confirmed = 1
        else:
            u = Icon(user_id=user_id, icon_type=icon_type, icon=filename, token=token)
            db.session.add(u)
        data = {"url": img_url}
        data = json.dumps(data)
        return data
    except Exception as e:
        print(e)
        return ''
Ejemplo n.º 2
0
def change_icon():
    form = IconForm()
    if form.validate_on_submit():
        # 生成随机的文件名
        suffix = os.path.splitext(form.icon.data.filename)[1]
        name = rand_str() + suffix
        # 保存上传头像
        photos.save(form.icon.data, name=name)
        # 生成缩略图
        pathname = os.path.join(
            os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], name))
        img = Image.open(pathname)
        img.thumbnail((64, 64))
        img.save(pathname)
        # 删除原有头像
        if current_user.icon != 'default.jpg':
            # 第一次更换头像不删除,除此之外原来的头像都要删除
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        # 更新新的头像名至数据库
        current_user.icon = name
        db.session.add(current_user)
        flash('头像已更换')
    return render_template('user/change_icon.html', form=form)
Ejemplo n.º 3
0
def icon():
    form = UploadForm()
    if form.validate_on_submit():
        # 提取后缀
        suffix = os.path.splitext(form.icon.data.filename)[1]
        # 生成随机文件名
        filename = random_string() + suffix
        # 保存上传文件
        photos.save(form.icon.data, name=filename)
        # 拼接完整文件路径名
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename)
        # 生成缩略图
        img = Image.open(pathname)
        # 设置尺寸
        img.thumbnail((64, 64))
        # 覆盖保存图片
        img.save(pathname)
        # 删除原来的头像(默认头像除外)
        if current_user.icon != 'default.jpg':
            os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], current_user.icon))
        # 保存到数据库
        current_user.icon = filename
        db.session.add(current_user)
    # 获取url
    img_url = url_for('static', filename='upload/'+current_user.icon)
    return render_template('user/icon.html', form=form, img_url=img_url)
Ejemplo n.º 4
0
def change_icon():
    form = Change_iconForm()
    if form.validate_on_submit():
        # 获取文件后缀
        suffix = os.path.splitext(form.icon.data.filename)[1]
        # 生成文件名
        filename = random_string() + suffix
        # 保存图片
        photos.save(form.icon.data, name=filename)
        # 文件保存路径
        filepath = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                filename)
        # 生成缩略图
        img = Image.open(filepath)
        img.thumbnail((200, 200))
        img.save(filepath)
        # 删除原来的图片
        if current_user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        # 保存修改至数据库
        current_user.icon = filename
        db.session.add(current_user)
        flash('头像已保存')
        return redirect(url_for('user.change_icon'))
    img_url = photos.url(current_user.icon)
    return render_template('user/change_icon.html', form=form, img_url=img_url)
Ejemplo n.º 5
0
def icon():
    form = UploadForm()
    if form.validate_on_submit():
        # 提取上传文件信息
        photo = form.photo.data
        # 提取文件后缀
        suffix = os.path.splitext(photo.filename)[1]
        # 生成随机文件名
        filename = random_string() + suffix
        # 保存上传文件
        photos.save(photo, name=filename)
        # 拼接文件路径名
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                filename)
        # 打开文件
        img = Image.open(pathname)
        # 设置尺寸
        img.thumbnail((64, 64))
        # 重新保存
        img.save(pathname)
        # 删除原来的头像文件(默认头像除外)
        if current_user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        # 保存头像
        current_user.icon = filename
        db.session.add(current_user)
        flash('头像修改成功')
    img_url = url_for('static', filename='upload/' + current_user.icon)
    return render_template('user/icon.html', form=form, img_url=img_url)
Ejemplo n.º 6
0
def modify_form(item_id):
    form = UploadForm()
    item = Item.query.filter_by(id=item_id).first()
    if form.validate_on_submit():
        if form.pic.data:
            suffix = os.path.splitext(form.pic.data.filename)[1]
            filename = random_string() + suffix
            photos.save(form.pic.data, name=filename)
            item.pic = filename
        category = Category.query.filter_by(name=form.category.data).first()
        item.item_name = form.item_name.data
        item.status = form.status.data
        item.location = form.location.data
        item.time = form.time.data
        item.category_id = category.id
        item.description = form.description.data
        change = Change(changer_id=current_user.id,
                        method='modify',
                        item_id=item.id,
                        item_name=item.item_name,
                        content='change a ' + form.status.data +
                        ' item named ' + form.item_name.data)
        db.session.add(change)
        if form.store_location.data != 'No selection':
            storage = Storage.query.filter_by(
                location_name=form.store_location.data).first()
            item.store_location_id = storage.id
        db.session.commit()
        return 'success'
    return render_template('upload_form.html',
                           form=form,
                           current_user=current_user)
Ejemplo n.º 7
0
def icon():
    form = IconForm()
    # 取出对象
    user = current_user._get_current_object()
    # 判断数据是否合法
    if form.validate_on_submit():
        # 生成随机文件名
        suffix = os.path.splitext(form.icon.data.filename)[1]
        filename = random_str() + suffix
        # 保存文件
        photos.save(form.icon.data, name=filename)
        # 生成文件名的绝对路径
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                filename)
        # 生成缩略图
        image = Image.open(pathname)
        # 修改大小
        image.thumbnail((128, 128))
        image.save(pathname)
        # 删除原头像
        if user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             user.icon))
        # 赋值给icon 属性
        user.icon = filename
        db.session.add(user)
        # 提示用户修改成功
        flash('头像修改成功')
    # 返回URL 路径
    img_url = photos.url(user.icon)
    return render_template('users/icon.html', form=form, img_url=img_url)
Ejemplo n.º 8
0
def change_icon():
    form = UploadForm()
    if form.validate_on_submit():
        # 获取后缀
        suffix = os.path.splitext(form.icon.data.filename)[1]
        # 随机文件名
        filename = random_string() + suffix
        photos.save(form.icon.data, name=filename)
        # 生成缩略图
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                filename)
        img = Image.open(pathname)
        img.thumbnail((128, 128))
        img.save(pathname)
        # 删除原来的头像(不是默认头像时才需要删除)
        if current_user.icon != 'default.jpeg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        # 保存到数据库
        current_user.icon = filename
        db.session.add(current_user)
        return redirect(url_for('user.change_icon'))
    img_url = photos.url(current_user.icon)
    return render_template('user/change_icon.html', form=form, img_url=img_url)
Ejemplo n.º 9
0
def icon():
    form = IconForm()
    if form.validate_on_submit():
        # 获取上传的图片
        suffix = os.path.splitext(form.icon.data.filename)[1]
        # 生成随机文件名
        filename = random_string() + suffix
        # 保存文件
        photos.save(form.icon.data, name=filename)
        # 生成缩略图
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                filename)
        img = Image.open(pathname)
        # 处理
        img.thumbnail((128, 128))

        # 再保存
        img.save(pathname)
        # 之前老的图片要删除,除了默认图片
        if current_user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))

        # 把文件名存到数据库
        current_user.icon = filename
        db.session.add(current_user)
        flash('头像上传成功')
    img_url = photos.url(current_user.icon)
    return render_template('user/icon.html', form=form, img_url=img_url)
Ejemplo n.º 10
0
def change_icon():
    form = IconForm()
    if form.validate_on_submit():
        # 获取上传文件的后缀
        suffix = os.path.splitext(form.icon.data.filename)[1]
        # 生成随机的文件名
        name = rand_str() + suffix
        photos.save(form.icon.data, name=name)
        # 生成固定大小的缩略图
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                name)
        # 打开文件
        img = Image.open(pathname)
        # 设置尺寸
        img.thumbnail((256, 256))
        # 保存缩略图
        img.save(pathname)
        # 删除原来的头像,default.jpg除外
        if current_user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        # 保存到数据库中
        current_user.icon = name
        db.session.add(current_user)
        flash('头像已修改')
    return render_template('user/change_icon.html', form=form)
Ejemplo n.º 11
0
def icon():
    form = IconForm()
    if form.validate_on_submit():
        #生成随机的文件名
        suffix = os.path.splitext(form.icon.data.filename)[1]
        filename = random_string() + suffix
        #保存文件
        photos.save(form.icon.data, name=filename)
        #拼接完整的路径名
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                filename)
        #生成缩略图
        img = Image.open(pathname)
        #设置图片大小
        img.thumbnail((128, 128))
        #重新保存
        img.save(pathname)
        #删除原来的头像,默认的除外
        if current_user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        #保存到数据库
        current_user.icon = filename
        db.session.add(current_user)
        flash('头像已修改')
    #获取头像的url
    img_url = photos.url(current_user.icon)
    return render_template('user/icon.html', form=form, img_url=img_url)
Ejemplo n.º 12
0
def modify_icon_form():
    form = IconForm()
    user = User.query.filter_by(id=current_user.id).first()
    if form.validate_on_submit():
        suffix = os.path.splitext(form.icon.data.filename)[1]
        filename = random_string() + suffix
        photos.save(form.icon.data, name=filename)
        user.icon = 'uploads/' + filename
        db.session.commit()
        return 'success'
    return render_template('upload_form.html',
                           form=form,
                           current_user=current_user)
Ejemplo n.º 13
0
def upload_form():
    form = UploadForm()
    if form.validate_on_submit():
        if not form.pic.data:
            flash('Please select the file')
        else:
            suffix = os.path.splitext(form.pic.data.filename)[1]
            filename = random_string() + suffix
            photos.save(form.pic.data, name=filename)
            category = Category.query.filter_by(
                name=form.category.data).first()
            if form.store_location.data == 'No selection':
                item = Item(item_name=form.item_name.data,
                            status=form.status.data,
                            location=form.location.data,
                            time=form.time.data,
                            category_id=category.id,
                            description=form.description.data,
                            pic=filename,
                            uploader_id=current_user.id)
            else:
                storage = Storage.query.filter_by(
                    location_name=form.store_location.data).first()
                item = Item(item_name=form.item_name.data,
                            status=form.status.data,
                            location=form.location.data,
                            time=form.time.data,
                            category_id=category.id,
                            description=form.description.data,
                            pic=filename,
                            uploader_id=current_user.id,
                            store_location_id=storage.id)
            db.session.add(item)
            item_change = Item.query.filter_by(
                item_name=form.item_name.data,
                time=form.time.data,
                location=form.location.data,
                description=form.description.data).first()
            change = Change(changer_id=current_user.id,
                            method='upload',
                            item_id=item_change.id,
                            item_name=item_change.item_name,
                            content='create a ' + form.status.data +
                            ' item named ' + form.item_name.data)
            db.session.add(change)
            db.session.commit()
            return 'success'
    return render_template('upload_form.html',
                           form=form,
                           current_user=current_user)
Ejemplo n.º 14
0
def register():
    form = Register()
    if form.validate_on_submit():
        verify_code = form.verify_code.data
        username = User.query.filter_by(username=form.username.data).first()
        email = User.query.filter_by(email=form.email.data).first()
        print(verify_code)
        if username:
            flash('该账户已经注册')
        if email:
            flash('该邮箱已经绑定,请换一个')
        if re.compile(verify_code, re.I).findall(session['verifyCode']):
            flash('验证码正确')
            # 获取上传文件的后缀
            suffix = os.path.splitext(form.icon.data.filename)[1]
            # 生成新的头像名字
            name = randStr() + suffix
            photos.save(form.icon.data, name=name)
            # 在指定路径生成文件
            pathName = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                    name)
            # 打开文件
            img = Image.open(pathName)
            #  设置尺寸
            img.thumbnail((64, 64))
            #  保存缩略图
            img.save(pathName)
            # 创建用户
            u = User(username=form.username.data,
                     password=form.password.data,
                     email=form.email.data,
                     icon=name)
            # 保存数据到数据库
            db.session.add(u)
            # 手动提交到数据库
            db.session.commit()
            # 发送激活邮件到邮箱
            token = u.generate_activate_token()
            send_mail(form.email.data,
                      '账户激活',
                      'email/activate',
                      token=token,
                      username=form.username.data)
            flash('激活邮件已发送,请激活')
            return redirect(url_for('main.index'))
        else:
            flash('验证码错误')
    return render_template('user/register.html', form=form)
Ejemplo n.º 15
0
def icon():
    form = IconForm()
    if form.validate_on_submit():
        suffix = os.path.splitext(form.photo.data.filename)[1]
        name = str(current_user.id) +  random_str() + suffix
        photos.save(form.photo.data,name=name)
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],name)
        img = Image.open(pathname)
        img.thumbnail((64,64))
        img.save(pathname)
        if current_user.icon!='1.jpg':
            os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],current_user.icon))
        current_user.icon = name
        db.session.add(current_user)
        flash('图像上传成功')
    return render_template('user/icon.html',form=form)
Ejemplo n.º 16
0
def product_upload():
    #
    print current_user.is_authenticated()
    # if not current_user.is_authenticated():
    #     return redirect(url_for('user.signin'))
    product_code = request.args.get('domain_code')
    product = ProcutInfo.query.filter(ProcutInfo.product_code == product_code).first()
    if product:
        product_form = ProductForm(product_code=product.product_code, product_name=product.product_name,
                                   detail_info=product.detail_info, guide_price=product.guide_price,
                                   introduce=product.introduce, pack_list=product.pack_list,
                                   phone_num=product.phone_num,
                                   csrf_enabled=False)
        form = product_form
        images= product.images
    else:
        form = ProductForm(request.values, csrf_enabled=False)
        images =None
    if form.validate_on_submit():
        product = ProcutInfo()
        form.populate_obj(product)
        file = request.files['product_image']
        filename = str(uuid.uuid4()) + '.jpg'
        photos.save(file, name=filename)
        url = photos.url(filename)
        image = ImageInfo()
        image.name = filename
        image.url = url
        product.images = [image]
        p = ProcutInfo.query.filter(ProcutInfo.product_code == product.product_code).first()
        if p is None:
            db.session.add(product)
        else:
            db.session.merge(product)
        fpath = photos.path(filename)
        f = open(fpath, 'rb')
        fdata = base64.b64encode(f.read())
        rsp = upload_product_info(product, filename, fdata)
        print rsp
        if rsp[0] == 1:
            flash(u'资料上传成功', 'success')
            return redirect(url_for('site.index'))
        else:
            pass
    else:
        return  render_template('/product/info_upload.html', form=form,images=images)
Ejemplo n.º 17
0
def pzl():
    print('从数据库中加载')
    form = PostsForm()
    next = request.args.get('next')

    if next:
        form.content.data = next
    if form.validate_on_submit():
        # 判断用户是否登录
        if current_user.is_authenticated:
            suffix = os.path.splitext(form.pic.data.filename)[1]
            filename = random_string() + suffix
            # 保存文件print (form.pic.data)
            print(form.pic.data)
            photos.save(form.pic.data, name=filename)

            # 拼接完整的路径名
            pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                    filename)
            # 生成缩略图
            img = Image.open(pathname)
            # 重新设置尺寸
            img.thumbnail((128, 128))
            # 重新保存
            img.save(pathname)

            p = Post(content=form.content.data,
                     category=form.category.data,
                     users_id=current_user.id,
                     pic=filename)
            db.session.add(p)
            form.content.data = ''
            flash('发布成功')
            return redirect(url_for('main.pzl'))
        else:
            flash('登录后才能发布微博哦')
            return redirect(url_for('users.login', next=form.content.data))
    # posts = Post.query.filter_by(rid=0).order_by(Post.timestamp.desc()).all()
    page = request.args.get('page', 1, type=int)
    pagination = Post.query.filter_by(rid=0).\
        order_by(Post.timestamp.desc()).paginate(page, per_page=3,error_out=False)
    posts = pagination.items
    return render_template('common/index.html',
                           form=form,
                           posts=posts,
                           pagination=pagination)
Ejemplo n.º 18
0
def addarticle():
    '''
    添加文章
    '''
    if request.method == 'GET':
        categorylist = Category.query.all()
        return render_template('dandan_manage/addarticle.html',
                               categorylist=categorylist)

    # 获取添加的文章信息(纯文本部分)
    # 文章标题
    title = request.form.get('title')
    # 文章简介
    describe = request.form.get('describe')
    # 文章分类
    category = Category.query.get(request.form.get('category'))
    # 文章标签
    tag = request.form.get('tag').split(',')  # 通过逗号切割
    # 文章是否显示
    if request.form.get('isshow') == 'on':
        isshow = True
    else:
        isshow = False
    # 文章正文文本
    content = request.form.get('user-intro')

    # 文章封面图片
    # 获取后缀
    suffix = os.path.splitext(request.files['coverlink'].filename)[-1]
    # 合成图片名
    filename = gen_rnd_filename() + suffix
    # 保存图片
    # piclink即是封面图片的名字
    coverlink = photos.save(request.files['coverlink'], name=filename)

    # 保存文章到数据库
    # 创建文章对象
    article = Article(title=title,
                      summary=describe,
                      content=content,
                      coverlink=coverlink,
                      isshow=isshow)

    # 标签处理(主要是判断是否已经存在)
    for i in range(len(tag)):
        temp = i  # 临时变量记录下标
        i = Tag.query.filter_by(name=tag[temp]).first()  # 判断标签是否已经存在
        if i:  # 如果标签已经存在
            article.tags.append(i)  # 文章-标签 关联
        else:
            i = Tag(name=tag[temp])  # 如果标签不存在,则创建对象
            article.tags.append(i)  # 文章-标签 关联
    category.articles.append(article)  # 文章-类别 关联
    db.session.add(article)  # 添加进会话

    flash('文章添加成功!')
    return redirect(
        url_for('aboutadmin.addarticle'))  # 文章添加成功,返回添加页面,继续添加下一篇文章
Ejemplo n.º 19
0
def change_icon():
    form = UploadForm()
    if form.validate():
        suffix = os.path.splitext(form.icon.data.filename)[1]
        filename = random_string()+suffix
        photos.save(form.icon.data,name=filename)
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],filename)
        img = Image.open(pathname)
        img.thumbnail((128,128))
        img.save(pathname)
        if current_user.icon != 'default.jpg':
            os.remove(os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],current_user.icon))
        current_user.icon = filename
        db.session.add(current_user)
        db.session.commit()
        flash('图片已经保存')
    img_url = photos.url(current_user.icon)
    return render_template('users/change_icon.html',form=form,img_url=img_url)
Ejemplo n.º 20
0
def modifyStorage_form(storage_id):
    form = ModifyStorageForm()
    if current_user.group_id == 1:
        storage = Storage.query.filter_by(id=storage_id).first()
        if form.validate_on_submit():
            suffix = os.path.splitext(form.pic.data.filename)[1]
            filename = random_string() + suffix
            photos.save(form.pic.data, name=filename)
            storage.pic = 'uploads/' + filename
            storage.available_time = form.available_time.data
            storage.phone_number = form.phone_number.data
            return 'success'
        return render_template('upload_form.html',
                               form=form,
                               current_user=current_user)
    else:
        flash('You are not an administrator!')
        return redirect(url_for('user.login'))
Ejemplo n.º 21
0
def change_icon():
    form = IconForm()
    if form.validate_on_submit():
        if current_user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        suffix = os.path.splitext(form.icon.data.filename)[-1]
        imgname = current_user.username + suffix
        photos.save(form.icon.data, name=imgname)
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                imgname)
        img = Image.open(pathname)
        img.thumbnail((64, 64))
        img.save(pathname)
        current_user.icon = imgname
        db.session.add(current_user)
        flash('头像已更换')
    return render_template('user/change_psw.html', form=form)
Ejemplo n.º 22
0
def upload_image():
    form = UploadForm()
    if form.validate_on_submit():
        suffix = os.path.splitext(form.photo.data.filename)[1]
        filename = random_string() + suffix
        photos.save(form.photo.data, name=filename)
        pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                                filename)
        img = Image.open(pathname)
        img.thumbnail((64, 64))

        img.save(pathname)
        if current_user.icon != 'default.jpg':
            os.remove(
                os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'],
                             current_user.icon))
        current_user.icon = filename
        db.session.add(current_user)
    img_url = url_for('static', filename='upload/' + current_user.icon)
    return render_template('user/image.html', form=form, img_url=img_url)
Ejemplo n.º 23
0
def uploadpic():
    '''
    上传图片
    '''
    categorylist = Category.query.all()

    if request.method == 'POST' and 'photo' in request.files:
        # 获取后缀
        suffix = os.path.splitext(request.files['photo'].filename)[-1]
        # 合成图片名
        filename = gen_rnd_filename() + suffix
        # 保存图片
        piclink = photos.save(request.files['photo'], name=filename)

        # # 生成缩略图
        # pathname = os.path.join(current_app.config['UPLOADED_PHOTOS_DEST'], filename)
        # img = Image.open(pathname)
        # img.thumbnail((512, 512))
        # img.save(pathname)

        # print(piclink)
        # print(filename)

        # 获取图片标题
        name = request.form.get('name')
        # 获取图片分类
        category = request.form.get('category')
        # 获取图片描述
        describe = request.form.get('describe')

        # 判断图片分类是否已经存在,如果不存在则进行添加
        # if category
        # 插入数据库
        if describe:
            pic = Picture(picname=name,
                          piclink='upload/' + piclink,
                          category_id=category,
                          describe=describe)
        else:
            pic = Picture(picname=name,
                          piclink='upload/' + piclink,
                          category_id=category)
        db.session.add(pic)

        flash('图片上传成功')
        return redirect(url_for('aboutadmin.uploadpic'))
    return render_template('dandan_manage/form-line.html',
                           categorylist=categorylist)
Ejemplo n.º 24
0
def upload_image():
    if request.files and 'image' in request.files:
        filename = photos.save(request.files['image'])
        return success_response({'filename': filename, 'image_url': photos.url(filename)})
    else:
        raise ValidationError('Invalid parameter')
Ejemplo n.º 25
0
def editarticle(aid):
    '''
    编辑(修改)文章
    '''
    article = Article.query.get(aid)
    # 如果是GET请求,根据文章id查询出数据,显示在页面
    if request.method == 'GET':
        categorylist = Category.query.all()

        # 查询文章对应的所有标签,并用逗号连接显示
        acategorystr = ''
        for c in article.tags.all():
            acategorystr += (',' + c.name)

        acategorystr = acategorystr[1:]  # 去掉第一个多余的逗号
        return render_template('dandan_manage/editarticle.html',
                               article=article,
                               categorylist=categorylist,
                               acategorystr=acategorystr)
    # 如果是POST请求,则接收数据并保存到数据库
    # 文章标题
    title = request.form.get('title')
    # 文章简介
    describe = request.form.get('describe')
    # 文章分类
    category = Category.query.get(request.form.get('category'))
    # 文章标签
    tag = request.form.get('tag').split(',')  # 通过逗号切割
    # 文章是否显示
    if request.form.get('isshow') == 'on':
        isshow = True
    else:
        isshow = False
    # 文章正文文本
    content = request.form.get('user-intro')

    # 文章封面图片
    # 获取后缀
    # print('*****************************')
    # if type(request.files['coverlink']) == 'NoneType':
    #     coverlink = article.coverlink
    # else:
    suffix = os.path.splitext(request.files['coverlink'].filename)[-1]
    # 合成图片名
    filename = gen_rnd_filename() + suffix
    # 保存图片
    # piclink即是封面图片的名字
    coverlink = photos.save(request.files['coverlink'], name=filename)

    # 保存文章到数据库
    # 修改文章对象
    article.title = title
    article.summary = describe
    article.content = content
    article.coverlink = coverlink
    article.isshow = isshow
    article.laststamp = datetime.utcnow()

    # 标签处理(主要是判断是否已经存在)
    taghas = article.tags.all()  # 本篇文章所有的标签
    for one in taghas:
        if one.name in tag:  # 如果新建的标签已经属于本篇文章,则从标签列表中移除
            tag.remove(one.name)
        else:  # 否则直接pass
            pass

    for i in range(len(tag)):
        temp = i  # 临时变量记录下标
        i = Tag.query.filter_by(name=tag[temp]).first()  # 判断标签是否有已经存在
        if i:  # 如果标签已经存在
            for at in article.tags.all():  # 判断是否已属于这个标签
                if at.name == i.name:  # 如果属于,则什么都不做
                    pass
                else:  # 如果标签存在,且文章不属于这个标签,则添加 文章-标签 关联
                    article.tags.append(i)
        else:
            i = Tag(name=tag[temp])  # 如果标签不存在,则创建对象
            article.tags.append(i)  # 添加 文章-标签 关联

    category.articles.append(article)  # 添加 文章-类别 关联
    db.session.add(article)  # 添加进会话

    flash('文章修改成功')
    return redirect(url_for('aboutadmin.articlelist'))  # 文章修改成功,返回文章列表页面