Exemplo n.º 1
0
def category_list():
    meta = {
        'title': '分类管理',
        'css_nav_sub_category': 'active',
        'css_nav_system': 'active'
    }
    query = {}
    page = int(request.args.get('page', 1))
    per_page = int(request.args.get('per_page', 100))
    status = int(request.args.get('status', 0))
    kind = int(request.args.get('kind', 0))
    deleted = int(request.args.get('deleted', 0))
    if kind:
        query['kind'] = kind
        if kind == 1:
            meta['css_doc'] = 'active'
        elif kind == 2:
            meta['css_other'] = 'active'
        else:
            meta['css_all'] = 'active'
    else:
        meta['css_all'] = 'active'

    if status == -1:
        query['status'] = 0
    elif status == 1:
        query['status'] = 1
    else:
        pass

    query['deleted'] = deleted

    page_url = url_for('admin.category_list',
                       page="#p#",
                       status=status,
                       kind=kind,
                       per_page=per_page)
    data = Category.objects(**query).order_by('-created_at').paginate(
        page=page, per_page=per_page)
    total_count = Category.objects(**query).count()

    # 过滤数据
    for i, d in enumerate(data.items):
        kind_label = '--'
        if d.kind == 1:
            kind_label = '文档'
        if d.kind == 2:
            kind_label = '备用'

        data.items[i].kind_label = kind_label

    meta['data'] = data.items

    pager = Pager(page, per_page, total_count, page_url)
    meta['pager'] = pager.render_view()

    return render_template('admin/category/list.html', meta=meta)
Exemplo n.º 2
0
def category_delete():
    meta = {
        'title': '分类管理',
        'css_nav_sub_category': 'active',
        'css_nav_system': 'active'
    }

    ids = request.values.get('ids', '')
    type = request.values.get('type', 1)
    if not ids:
        return jsonify(success=False, message='缺少请求参数!')

    try:
        arr = ids.split(',')
        for d in arr:
            category = Category.objects(_id=d).first()
            category.mark_delete() if category else None
    except (Exception) as e:
        return jsonify(success=False, message=str(e))

    return jsonify(success=True,
                   message='操作成功!',
                   data={
                       'ids': ids,
                       'type': type
                   },
                   redirect_to=url_for('admin.category_list'))
Exemplo n.º 3
0
    def post(self):
        form = NormalForm()

        categories = Category.objects()
        if form.validate_on_submit():

            product = Product(seller_id=current_user.id,
                              name=form.name.data,
                              price=form.price.data,
                              detail=form.detail.data,
                              image="product." +
                              form.image.data.filename.split(".")[1].lower(),
                              categories=request.form.getlist("categories"),
                              bidding=False,
                              status=0)
            product.save()

            image_path = os.path.join(os.getcwd(), 'app/static/image',
                                      str(product.id))
            os.makedirs(image_path)
            form.image.data.save(os.path.join(image_path, product.image))

            return redirect(url_for('user.profile'))

        return render_template('user/selling/normal.html',
                               form=form,
                               categories=categories)
Exemplo n.º 4
0
    def get(self):
        form = BiddingForm()

        categories = Category.objects()

        return render_template('user/selling/bidding.html',
                               form=form,
                               categories=categories)
Exemplo n.º 5
0
    def get(self):
        form = NormalForm()

        categories = Category.objects()

        return render_template('user/selling/normal.html',
                               form=form,
                               categories=categories)
Exemplo n.º 6
0
 def get(self, type_of):
     categories = Category.objects(category__contains=type_of)
     #for c in categories:
     #    print(c.category)
     products = Product.objects(categories__in=categories, status=0)
     way = "normal"
     return render_template('search.html',
                            products=products,
                            way=way,
                            now=datetime.datetime.utcnow() +
                            datetime.timedelta(hours=8))
Exemplo n.º 7
0
    def post(self, product_id):

        form = EditForm()
        categories = Category.objects()
        product = Product.objects(id=product_id).first()

        if form.validate_on_submit():
            product.name = form.name.data
            product.price = form.price.data
            product.detail = form.detail.data
            print(form.image.data.filename)
            if (form.image.data.filename != ''):
                image_path = os.path.join(os.getcwd(), 'app/static/image',
                                          str(product.id))
                print(product.image)
                try:
                    os.remove(os.path.join(image_path,
                                           product.image))  #刪掉原本的檔案
                    print("File is deleted successfully")

                except:
                    print(e)
                product.image = "product." + form.image.data.filename.split(
                    '.')[-1].lower()  #上傳成功設定圖片名稱

                form.image.data.save(os.path.join(image_path,
                                                  product.image))  #儲存上傳的檔案
                #response.headers['Cache-Control'] = 'public, max-age=0'
            categories = Category.objects(
                id__in=request.form.getlist("categories"))
            product.categories = categories

            product.save()

            return redirect(url_for('user.selling_list'))

        return render_template('user/selling/edit.html',
                               form=form,
                               categories=categories,
                               product=product)
Exemplo n.º 8
0
def image_submit():
    meta = metaInit.copy()
    id = request.args.get('id', None)
    meta['data'] = None
    if id:
        item = Image.objects(_id=ObjectId(id)).first()
        item._id = str(item._id)
        item.thumb = item.get_thumb_path()
        item.tags_s = ','.join(item.tags)
        item.color_tags_s = ','.join(item.color_tags)
        item.brand_tags_s = ','.join(item.brand_tags)
        item.material_tags_s = ','.join(item.material_tags)
        item.style_tags_s = ','.join(item.style_tags)
        item.technique_tags_s = ','.join(item.technique_tags)
        item.other_tags_s = ','.join(item.other_tags)
        item.color_ids_s = ','.join(item.color_ids)
        meta['data'] = item

    form = SaveForm()

    meta['default_tags'] = re.split('[,,]', get_block_content('default_tags'))
    meta['default_color_tags'] = re.split(
        '[,,]', get_block_content('default_color_tags'))
    meta['default_brand_tags'] = re.split(
        '[,,]', get_block_content('default_brand_tags'))
    meta['default_material_tags'] = re.split(
        '[,,]', get_block_content('default_material_tags'))
    meta['default_style_tags'] = re.split(
        '[,,]', get_block_content('default_style_tags'))
    meta['default_technique_tags'] = re.split(
        '[,,]', get_block_content('default_technique_tags'))
    meta['default_other_tags'] = re.split(
        '[,,]', get_block_content('default_other_tags'))

    meta['prize_options'] = prize_options()

    categories = Category.objects(kind=2, status=1, deleted=0)[:20]
    meta['categories'] = categories

    # 获取品牌列表
    brands = Brand.objects(status=1, deleted=0)[:1000]
    meta['brands'] = brands

    meta['referer_url'] = request.environ.get(
        'HTTP_REFERER') if request.environ.get('HTTP_REFERER') else url_for(
            'admin.image_list')

    return render_template('admin/image/submit.html', meta=meta, form=form)
Exemplo n.º 9
0
    def get(self, product_id):
        form = BiddingForm()
        product = Product.objects(id=product_id, bidding=True).first()
        categories = Category.objects(categorycontains=product.categories)
        orders = Order.objects(product_id__in=Product.objects(
            seller_id=product.seller_id))
        similar_product = Product.objects(
            id__ne=product_id,
            bid__due_time__gt=datetime.datetime.utcnow() +
            datetime.timedelta(hours=8),
            bidding=True,
            status=0,
            categories__in=product.categories).order_by('-create_time')[:12]
        like = "far fa-heart"
        remove = "下架此商品"

        if product == None:
            abort(404)
        if current_user.is_active:
            #update history
            information = Information.objects(user_id=current_user.id).first()
            history_product = [h['product'] for h in information.history]
            try:
                index = history_product.index(product)
                information.history[
                    index].create_time = datetime.datetime.utcnow()
            except ValueError:
                information.history.append(History(product=product))
            information.save()

            if product in information.like:
                like = "fas fa-heart"

            product.view += 1
            product.save()
        return render_template('product/bidding.html',
                               form=form,
                               orders=orders,
                               product=product,
                               similar_product=similar_product,
                               PRODUCT_STATUS=PRODUCT_STATUS,
                               remove=remove,
                               like=like,
                               now=datetime.datetime.utcnow() +
                               datetime.timedelta(hours=8))
Exemplo n.º 10
0
    def get(self, product_id):
        form = EditForm()

        product = Product.objects(id=product_id,
                                  seller_id=current_user.id,
                                  status=PRODUCT_STATUS["SELLING"]).first()
        if product == None:
            abort(404)
        form.price.data = product.price
        form.name.data = product.name

        form.detail.data = product.detail
        categories = Category.objects()

        return render_template('user/selling/edit.html',
                               form=form,
                               categories=categories,
                               product=product)
Exemplo n.º 11
0
def get_category(id):
    """
    Fetch shopping_list
    """

    query = Category.objects(user_id=int(id))
    if query.count > 0:
        data = {'results': []}
        i = 0
        for instance in query:
            data['results'].append({'id': instance.id,
                                    'name': instance.name,
                                    'slug': instance.slug,
                                    'description': instance.description,
                                    'created_at': instance.created_at})
            i += 1
            if i == query.count():
                return make_response(jsonify({'success': True, 'results': data['results']}), 200)
    else:
        return make_response(jsonify({'success': True, 'results': []}), 204)
Exemplo n.º 12
0
    def delete_route(route_id):
        assert isinstance(route_id, ObjectId)
        route = RouteHelper.get(route_id)
        assert route

        for attach_id in route.attached:
            AttachmentHelper.delete(attach_id)

        f_cate = Category.objects(id=route.father).first()
        f_cate.routes.remove(route.id)
        f_cate.save()

        enters = EnteredRoute.objects(route=route.id)
        for entered_route in enters:
            user = UserHelper.get(entered_route.user)
            user.entered_routes.remove(route.id)
            user.save()
        enters.delete()

        RateInfo.objects(route=route.id).delete()

        route.delete()
Exemplo n.º 13
0
def category_submit():
    meta = {
        'title': '分类管理',
        'css_nav_sub_category': 'active',
        'css_nav_system': 'active'
    }
    meta['referer_url'] = request.environ.get(
        'HTTP_REFERER') if request.environ.get('HTTP_REFERER') else ''
    id = int(request.args.get('id', 0))
    meta['data'] = None
    if id != 0:
        category = Category.objects(_id=id).first()
        meta['data'] = category

    form = SaveForm()

    meta['category_kind_options'] = Category.category_kind_options()
    meta['parent_options'] = Category.fetch_parent_options()

    current_app.logger.debug('aaa')
    current_app.logger.debug(type(Category.fetch_parent_options()))

    return render_template('admin/category/submit.html', meta=meta, form=form)
Exemplo n.º 14
0
 def get_hot_categorys():
     return Category.objects()[:6]
Exemplo n.º 15
0
#!/usr/bin/python
# -*- coding: utf-8 -*-
from urllib import *
from app.app import app
from app.models.category import Category
from app.helpers.category import CategoryHelper

Category.objects().delete()

program_icon = urlopen('http://www.pronovadesigns.com/wp-content/uploads/2014/03/web-programming1.jpg')
c_icon = urlopen('https://upload.wikimedia.org/wikipedia/commons/6/6f/Cimage.jpg')
cpp_icon = urlopen('http://avatar.csdn.net/blogpic/20140408151827593.jpg')
mfc_icon = urlopen('http://gaitaobao2.alicdn.com/tfscom/i4/T1BrgMXc0XXXXXXXXX_!!0-item_pic.jpg_310x310.jpg')
cocos2dx_icon = urlopen('http://avatar.csdn.net/blogpic/20120103185816438.jpg')
java_icon = urlopen('http://www.theinquirer.net/IMG/935/317935/java-logo-oracle-20-years-programming.jpg')
python_icon = urlopen('http://www.anxia.com/uploads/image/201501/291422523242436140.jpg')

art_icon = urlopen('https://cbsmiami.files.wordpress.com/2012/10/art-paint-jpg.png?w=300')
music_icon = urlopen('http://www.christchurchkennebunk.org/musicstaff.jpg')
sing_icon = urlopen('http://static.wixstatic.com/media/af2255_96fb29987ba64150b6c679f282b65cd0.jpg_256')
instrument_icon = urlopen('http://www.thecoolhunter.net/images/stories/2007pics/storiesnew2007pics/marchpics/1music.jpg')
painting_icon = urlopen('http://www.iconshock.com/img_jpg/PERSPECTIVE/general/jpg/256/paint_icon.jpg')



root_program = CategoryHelper.add(u'编程语言', u'编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动', None, program_icon)
c = CategoryHelper.add(u'C语言', u'C是一种通用的编程语言,广泛用于系统软件与应用软件的开发。于1969年至1973年间,为了移植与开发UNIX操作系统,由丹尼斯·里奇与肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。', root_program.id, c_icon)
cpp = CategoryHelper.add(u'C++', u'C++是一种广泛使用的计算机程序设计语言。它是一种通用程序设计语言,静态数据类型检查,支持多重编程范式,例如过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等。', root_program.id, cpp_icon)
mfc = CategoryHelper.add(u'MFC', u'微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。', cpp.id, mfc_icon)
cocos2dx = CategoryHelper.add(u'Cocos2d-x', u'Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x提供的框架。手机游戏,可以写在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。', cpp.id, cocos2dx_icon)
java = CategoryHelper.add(u'Java', u'Java是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。', root_program.id, java_icon)
Exemplo n.º 16
0
def produce_list():
    meta = metaInit.copy()
    query = {}
    page = force_int(request.args.get('page', 1))
    per_page = force_int(request.args.get('per_page', 20))
    status = force_int(request.args.get('status', 1))
    deleted = force_int(request.args.get('deleted', 0))
    kind = force_int(request.args.get('kind', 1))
    prize_id = force_int(request.args.get('prize_id', 0))
    category_id = force_int(request.args.get('category_id', 0))
    tag = request.args.get('tag', '')

    t = force_int(request.args.get('t', 1), 1)
    q = request.args.get('q', '')

    if q:
        if t == 1:
            query['title'] = {"$regex": q.strip()}
        if t == 2:
            query['channel'] = q.strip()
        if t == 3:
            query['evt'] = force_int(q.strip())

    if prize_id:
        query['prize'] = {'$elemMatch': {'id': int(prize_id)}}

    if category_id:
        query['category_id'] = category_id

    if tag:
        query['total_tags'] = tag

    if kind:
        if kind == 1:
            meta['css_industry'] = 'active'
        elif kind == 2:
            meta['css_plane'] = 'active'
        meta['css_all'] = ''
        query['kind'] = kind

    if status == -1:
        meta['css_disable'] = 'active'
        query['status'] = 0
    if status == 1:
        query['status'] = 1
        meta['css_enable'] = 'active'
    else:
        pass

    if deleted == 1:
        query['deleted'] = 1
        meta['css_deleted'] = 'active'
    else:
        query['deleted'] = 0

    if not status and not deleted:
        meta['css_all'] = 'active'
    else:
        meta['css_all'] = ''

    page_url = url_for('main.produce_list', page="#p#", q=q, t=t, tag=tag, prize_id=prize_id, category_id=category_id, kind=kind, status=status,
                       deleted=deleted)

    data = Produce.objects(**query).order_by('-edit_on', '-editor_level').paginate(page=page, per_page=per_page)
    total_count = Produce.objects(**query).count()

    # 过滤数据
    rows = t_produce_list(data)

    meta['data'] = rows
    meta['total_count'] = total_count
    meta['prize_options'] = prize_options()

    categories = Category.objects(kind=2, status=1, deleted=0)[:30]
    meta['categories'] = categories

    pager = Pager(page, per_page, total_count, page_url)
    meta['pager'] = pager.render_view()
    return render_template('produce/list.html', meta=meta)
Exemplo n.º 17
0
 def get(category_id):
     return Category.objects(id=category_id).first()
Exemplo n.º 18
0
 def get_by_title(title):
     return Category.objects(title__startswith=title).first()
Exemplo n.º 19
0
def fetch_category(category_id):
    category = None
    if category_id:
        category = Category.objects(_id=int(category_id)).first()
    return category
Exemplo n.º 20
0
 def get_roots():
     return Category.objects(father__exists=False)