Example #1
0
def folder(page=1):
    parent_id = 0
    top = 0
    success = True

    if request.method == 'POST':
        sub_folder = request.form.get('folder')
        parent_directory = request.form.get('parent_directory', '')

        # 验证目录
        if sub_folder is None:
            return custom_response(False,
                                   gettext("Directory name isn't empty!"))

        sub_folder = parse.unquote(sub_folder)

        if not re.match(r'^[0-9a-zA-Z_]+$', sub_folder):
            return custom_response(
                False, gettext("Directory name only character or underline!"))

        if Directory.query.filter_by(site_id=Site.master_site_id(current_user),
                                     name=sub_folder).first():
            return custom_response(False,
                                   gettext("Directory name is already exist!"))

        if parent_directory != '':
            directories = parent_directory.split('/')
            # pop last item
            last_directory_name = directories.pop()
            last_directory = Directory.query.filter_by(
                site_id=Site.master_site_id(current_user),
                name=last_directory_name).first()

            parent_id = last_directory.id
            top = 1

        try:
            directory = Directory(name=sub_folder,
                                  master_uid=Master.master_uid(),
                                  site_id=Site.master_site_id(current_user),
                                  user_id=current_user.id,
                                  parent_id=parent_id,
                                  top=top)

            db.session.add(directory)
            db.session.commit()

        except Exception as ex:
            success = False

    return status_response(success)
Example #2
0
def flupload():
    saved_asset_ids = []
    sub_folder = str(time.strftime('%y%m%d'))
    directory_id = 0

    directory = _pop_last_directory()
    if directory:
        current_directory = Directory.query.filter_by(name=directory).first()
        directory_id = current_directory.id

    # for key, file in request.files.iteritems():
    for f in request.files.getlist('file'):
        upload_name = f.filename
        # start to save
        name_prefix = 'admin' + str(time.time())
        name_prefix = hashlib.md5(name_prefix.encode('utf-8')).hexdigest()[:15]

        filename = uploader.save(f, folder=sub_folder, name=name_prefix + '.')

        storage_filepath = uploader.path(filename)

        current_app.logger.warning('upload filename: %s, filepath: %s' %
                                   (filename, storage_filepath))

        # get info of upload image
        im = Image.open(storage_filepath)

        size = os.path.getsize(storage_filepath) / 1024  # k

        new_asset = Asset(master_uid=Master.master_uid(),
                          site_id=Site.master_site_id(current_user),
                          user_id=current_user.id,
                          filepath=filename,
                          filename=upload_name,
                          directory_id=directory_id,
                          width=im.width,
                          height=im.height,
                          size=size)
        db.session.add(new_asset)
        db.session.commit()

        saved_asset_ids.append(new_asset.id)

    return jsonify({'status': 200, 'ids': saved_asset_ids})
Example #3
0
def show_brands(page=1):
    per_page = request.args.get('per_page', 10, type=int)
    status = request.args.get('status', 0, type=int)
    # 获取所属站点
    current_site_id = Site.master_site_id(current_user)

    builder = Brand.query.filter_by(site_id=current_site_id)
    if status:
        builder = builder.filter_by(status=status)

    paginated_brands = builder.order_by(Brand.created_at.desc()).paginate(
        page, per_page)

    if paginated_brands:
        paginated_brands.offset_start = 1 if page == 1 else (page -
                                                             1) * per_page
        paginated_brands.offset_end = paginated_brands.offset_start + len(
            paginated_brands.items) - 1

    return render_template('admin/brands/show_list.html',
                           paginated_brands=paginated_brands)