コード例 #1
0
def get_project_images(request):
	project_id = request.GET['project_id']

	response = create_response(200)
	response.data = []

	project = Project.objects.get(id=project_id)
	manager = User.objects.get(username='******')
	if project.owner_id == manager.id:
		dir_path = os.path.join(settings.PROJECT_HOME, '../static/test_resource_img/%s' % project.inner_name)
		if os.path.exists(dir_path):
			for file_name in os.listdir(dir_path):
				response.data.append('/standard_static/test_resource_img/%s/%s' % (project.inner_name, file_name))

	dir_path_suffix = '%d_%s' % (request.user.id, project_id)
	dir_path = os.path.join(settings.UPLOAD_DIR, dir_path_suffix)
	print 'dir_path: ', dir_path

	if not os.path.exists(dir_path):
		os.makedirs(dir_path)

	for file_name in os.listdir(dir_path):
		response.data.append('/static/upload/%s/%s' % (dir_path_suffix, file_name))
	
	return response.get_response()
コード例 #2
0
def get_project_nav_icons(request):
	response = create_response(200)
	data = {}
	icon_names = {
		'icon_White': u'白色系',
	    'icon_Black': u'黑色系',
	    'icon_my': u'我上传的'
	}
	nav_icons_dir = os.path.join(settings.TERMITE_HOME, 'termite_img/nav_icons')
	for dir_name in os.listdir(nav_icons_dir):
		if 'icon_' in  dir_name:
			icon_dir_path = os.path.join(settings.TERMITE_HOME, 'termite_img/nav_icons/%s' % dir_name)
			if os.path.isdir(icon_dir_path):
				dir_name_key = icon_names[dir_name]
				data[dir_name_key] = []
				for file_name in os.listdir(icon_dir_path):
					icon_file_path = os.path.join(settings.TERMITE_HOME, 'termite_img/nav_icons/%s/%s' % (dir_name, file_name))
					if os.path.isfile(icon_file_path) and '.png' in file_name:
						data[dir_name_key].append('/static/termite_img/nav_icons/%s/%s' % (dir_name, file_name))

	user_icon_dir = os.path.join(settings.UPLOAD_DIR, 'user_icon', str(request.user.id))
	data[u'我上传的'] = []
	if os.path.exists(user_icon_dir):
		for file in os.listdir(user_icon_dir):
			data[u'我上传的'].append('/standard_static/upload/user_icon/%d/%s' % (request.user.id, file))

	response.data = data
	return response.get_response()
コード例 #3
0
ファイル: viper_api_views.py プロジェクト: chengdg/weizoom
def update_record_display_index(request):
    pagestore = pagestore_manager.get_pagestore('mongo')
    page_id = request.POST.get('page_id', None)
    if not page_id and ('app' in request.POST):
        app = request.POST['app']
        module = request.POST['module']
        resource = request.POST['resource']
        page_id = 'apps:{}:{}:{}'.format(app, module, resource)

    src_record_id = request.POST.get('src_id', None)
    dst_record_id = request.POST.get('dst_id', None)
    if dst_record_id == u'0':
        #置顶操作
        order = request.POST['sort_attr']
        if order[0] == '-':
            order = 'desc'
        else:
            order = 'asc'
        pagestore.set_record_to_top(src_record_id, order, page_id)
    else:
        src_record = pagestore.get_record(src_record_id, page_id)
        dst_record = pagestore.get_record(dst_record_id, page_id)
        pagestore.update_record_display_index(src_record_id,
                                              dst_record['display_index'],
                                              page_id)
        pagestore.update_record_display_index(dst_record_id,
                                              src_record['display_index'],
                                              page_id)

    response = create_response(200)
    return response.get_response()
コード例 #4
0
ファイル: viper_api_views.py プロジェクト: chengdg/weizoom
def get_records(request):
    page = request.GET.get('page', '1')
    fields = request.GET.get('target_fields', '').split(',')
    store_engine = request.GET.get('store_engine', 'mongo')

    items = []
    pageinfo = None
    sort_attr = request.GET.get('sort_attr', '')
    if request.in_design_mode:
        for i in range(3):
            row = []
            for j in range(len(fields)):

                row.append(u'数据%d%d' % (i + 1, j + 1))
            items.append({'meta_data': {'id': 1}, 'data': row})
    else:
        if store_engine == 'mysql':
            pageinfo, items = __get_records_from_mysql(request)
        else:
            pageinfo, items = __get_records_from_pagestore(request)

    if getattr(request, 'is_from_app', False):
        return pageinfo, items
    else:
        response = create_response(200)
        response.data = {
            'items': items,
            'sortAttr': sort_attr,
            'pageinfo': pageinfo.to_dict() if pageinfo else pageinfo
        }

        return response.get_response()
コード例 #5
0
def get_datasource_project_pages(request):
	pagestore = pagestore_manager.get_pagestore(request)

	project_id = request.GET['project_id']
	project = Project.objects.get(id=project_id)
	workspace = Workspace.objects.get(id=project.workspace_id)

	pages = [{'name': u'选择页面...', 'value': '-1'}]
	if workspace.data_backend:
		type, name_or_id = workspace.data_backend.split(':')
		if type == 'viper':
			datasource_project_id = name_or_id
			for page in pagestore.get_pages(datasource_project_id):
				page_model = page['component']['model']
				one_page = {}
				one_page['name'] = page_model['title']
				one_page['value'] = page['page_id']

				pages.append(one_page)
		elif type == 'module':
			module_info = 'webapp.modules.%s.export' % name_or_id
			module = __import__(module_info, {}, {}, ['*',])
			pages = [{'name': u'选择页面...', 'value': '0'}]
			pages.extend(module.PAGES)

	response = create_response(200)
	response.data = pages
	return response.get_response()
コード例 #6
0
def create_mobile_page(request):
	page = json.loads(request.POST['page'])
	#html = _create_mobile_page_html_content(request, page)
	html = pagerender.create_mobile_page_html_content(request, {}, page)

	response = create_response(200)
	response.data = html
	return response.get_response()
コード例 #7
0
def update_apis_content(request):
	project_id = request.POST['project_id']
	content = request.POST['content']

	write_apis_content_for(project_id, content)

	response = create_response(200)
	return response.get_response()
コード例 #8
0
def get_apis_content(request):
	project_id = request.GET['project_id']

	apis_content = read_apis_content_for(project_id)

	response = create_response(200)
	response.data = apis_content
	return response.get_response()
コード例 #9
0
def delete_page(request):
	project_id = request.POST['project_id']
	page_id = request.POST['page_id']

	pagestore = pagestore_manager.get_pagestore(request)
	pagestore.remove_page(project_id, page_id)

	response = create_response(200)
	return response.get_response()
コード例 #10
0
def create_page_template(request):
	project_id = request.POST['project_id']
	page = request.POST['page']
	image = request.POST['image']
	name = request.POST['name']

	__save_template_picture(request.user.id, project_id, image)
	Project.objects.filter(id=project_id).update(name=name)
	return create_response(200).get_response()
コード例 #11
0
def delete_project_image(request):
	project_id = request.POST['project_id']
	filename = request.POST.get('filename', None)
	#added by chuter
	if filename is None:
		response = create_response(400)
		response.errMsg = u'非法操作,请稍后重试!'
	else:
		filename = filename.split('/')[-1]

		dir_path_suffix = '%d_%s' % (request.user.id, project_id)
		dir_path = os.path.join(settings.UPLOAD_DIR, dir_path_suffix)
		
		file_path = os.path.join(dir_path, filename)
		if os.path.exists(file_path):
			os.remove(file_path)

		response = create_response(200)

	return response.get_response()
コード例 #12
0
def synchronize_page(request):
	pagestore = pagestore_manager.get_pagestore(request)
	project_id = request.POST['project_id']
	image = request.POST['image']
	page_id = request.POST['page_id']
	page = json.loads(request.POST['page_json'])
	pagestore.save_page(project_id, page_id, page)

	if image:
		__save_template_picture(request.user.id, project_id, image)
	response = create_response(200)
	return response.get_response()
コード例 #13
0
def get_pages_json(request):
	"""
	获得page的json内容
	"""
	pagestore = pagestore_manager.get_pagestore(request)

	project_id = request.GET['project_id']
	pages = pagestore.get_page_components(project_id)

	response = create_response(200)
	response.data = json.dumps(pages)
	return response.get_response()
コード例 #14
0
ファイル: viper_api_views.py プロジェクト: chengdg/weizoom
def create_page(request, return_html_snippet=False, get_record=False):
    project, page = __preprocess_page(request, get_record)
    request.page = page
    html = pagerender.create_mobile_page_html_content(request, page,
                                                      page['component'],
                                                      project)

    if return_html_snippet:
        return html
    else:
        response = create_response(200)
        response.data = html
        return response.get_response()
コード例 #15
0
def create_page(request, return_html_snippet=False):
	project, page = __preprocess_page(request)
	#将page的class放入request,解决design page下无法为data-role=page设置class的问题
	#TODO: 优化解决方案
	request.page_model = page['component']['model']
	html = pagerender.create_mobile_page_html_content(request, page, page['component'], project)

	if return_html_snippet:
		return html
	else:
		response = create_response(200)
		response.data = html
		return response.get_response()
コード例 #16
0
def update_page_display_index(request):
	pagestore = pagestore_manager.get_pagestore(request)
	project_id = request.POST['project_id']
	ordered_pages = request.POST['ordered_pages']

	index = 1
	for page_id in ordered_pages.split(','):
		#Page.objects.filter(project_id=project_id, page_id=page_id).update(display_index=index)
		pagestore.update_page_display_index(project_id, page_id, index)
		index += 1

	response = create_response(200)
	return response.get_response()
コード例 #17
0
def export_channel_detail(request):
    owner_id = request.POST.get('owner_id', -1)
    start_date = request.POST.get('start_date', '')
    end_date = request.POST.get('end_date', '')
    filter_value = request.POST.get('filter_value', None)
    channel_orders = get_channel_details(filter_value, owner_id, start_date,
                                         end_date)
    name = u'消费金额'
    for orders in channel_orders:
        for k, order in orders.items():
            evnet_type = order[0]['event_type']
            if evnet_type == "返还":
                name = u'退款金额'
    members_info = [[
        u'消费时间', u'订单号', u'卡名称', u'卡号', u'状态', u'面值', name, u'使用人', u'商品分组'
    ]]
    for orders in channel_orders:
        for k, order in orders.items():
            created_at = order[0]['created_at']
            order_id = order[0]['order_id']
            buyer_name = order[0]['buyer_name']
            re_h = re.compile('</?\w+[^>]*>')  #HTML标签
            buyer_name = re_h.sub('', buyer_name)  #去掉HTML 标签
            product = '\n'.join(order[0]['product'].values())
            evnet_type = order[0]['event_type']
            name = 'use_money'
            if evnet_type == "返还":
                name = 'refund'
            i = 0
            for o in order:
                if i < 1:
                    info_list = [
                        created_at, order_id, o['rule_name'],
                        o['weizoom_card_id'], o['status'], o['rule_money'],
                        o[name], buyer_name, product
                    ]
                else:
                    info_list = [
                        "", "", o['rule_name'], o['weizoom_card_id'],
                        o['status'], o['rule_money'], o[name], "", ""
                    ]
                i += 1

                members_info.append(info_list)

    filename = u'微众卡按渠道统计消费列表.xls'  #TODO 上线 加.encode('utf8')
    url = export_csv(members_info, filename, force_csv=False)
    response = create_response(200)
    response.data.url = url
    response.data.filename = filename
    return response.get_response()
コード例 #18
0
ファイル: viper_api_views.py プロジェクト: chengdg/weizoom
def create_page_by_id(request, return_html_snippet=False, get_record=False):
    project_id = request.GET['project_id']
    page_id = request.GET['page_id']

    pagestore = pagestore_manager.get_pagestore(request)
    project = Project.objects.get(id=project_id)
    page = pagestore.get_page(project_id, page_id)

    request.page = page
    html = pagerender.create_mobile_page_html_content(request, page,
                                                      page['component'],
                                                      project)

    if return_html_snippet:
        return html
    else:
        response = create_response(200)
        response.data = {
            'html': html,
            'title': page['component']['model']['navName']
        }
        return response.get_response()
コード例 #19
0
def get_page_templates(request):
	project_type = request.GET['project_type']

	system_manager = User.objects.get(username='******')

	items = [{
		'page_json': "{}",
		'id': 0,
		'url': '',
		'name': u'空白页'
	}]
	for page_template in PageTemplate.objects.filter(owner=system_manager, project_type=project_type):
		one_template = {
			'pageJson': page_template.page_json,
			'id': page_template.id,
			'url': page_template.image_data,
			'name': page_template.name
		}
		items.append(one_template)

	response = create_response(200)
	response.data = items
	return response.get_response()
コード例 #20
0
ファイル: api_views_tmpl.py プロジェクト: chengdg/weizoom

# Termite GENERATED START: api_views
# MODULE START: {{instanceName}}
{% ifequal listinfo.isEnableSort "yes" %}
########################################################################
# update_{{instanceName}}_display_index: 修改排列顺序
########################################################################
@login_required
def update_{{instanceName}}_display_index(request):
	print 'update display index...'
	ids = request.GET['ids'].split('_')
	for index, id in enumerate(ids):
		{{className}}.objects.filter(id=id).update(display_index=index+1)

	response = create_response(200)
	return response.get_response()
{% endifequal %}


{% ifequal isEnablePreview "yes" %}
########################################################################
# craete_preview_{{instanceName}}: 创建用于预览的{{entityName}}
########################################################################
@login_required
def craete_preview_{{instanceName}}(request):
	session = request.COOKIES.get('sessionid', 'unknown')
	try:
		{{instanceName}} = {{previewClassName}}.objects.get(owner=request.user, session=session)
		
		{% for property in properties %}
コード例 #21
0
def export_channel(request):
    channels = request.POST.get('channels', '')
    channels = json.loads(channels)
    sort_attr = channels.values()[0]['sort_attr']
    if sort_attr == "-use_money":
        #channel按消费金额倒序
        channels = sorted(channels.items(),
                          lambda x, y: cmp(float(x[1]['use_money']),
                                           float(y[1]['use_money'])),
                          reverse=True)

    elif sort_attr == "use_money":
        #channel按消费金额正序
        channels = sorted(
            channels.items(), lambda x, y: cmp(float(x[1]['use_money']),
                                               float(y[1]['use_money'])))

    elif sort_attr == "-order_count":
        #channel按订单数倒序
        channels = sorted(channels.items(),
                          lambda x, y: cmp(int(x[1]['order_count']),
                                           int(y[1]['order_count'])),
                          reverse=True)
    elif sort_attr == "order_count":
        #channel按订单数正序
        channels = sorted(
            channels.items(), lambda x, y: cmp(int(x[1]['order_count']),
                                               int(y[1]['order_count'])))

    elif channels == "-use_count":
        #channel按使用人数倒序
        channels = sorted(
            channels.items(),
            lambda x, y: cmp(int(x[1]['use_count']), int(y[1]['use_count'])),
            reverse=True)
    else:
        #channel按使用人数正序
        channels = sorted(
            channels.items(),
            lambda x, y: cmp(int(x[1]['use_count']), int(y[1]['use_count'])))

    order_ids = set()
    for orderids in channels:
        for order_id in orderids[1]['order_ids']:
            order_ids.add(order_id)

    order_id2cards = {}
    user_id2username = {u.id: u.username for u in User.objects.all()}
    for order in WeizoomCardHasOrder.objects.filter(
            order_id__in=list(order_ids)).order_by('-created_at'):
        if not order_id2cards.has_key(order.order_id):
            order_id2cards[order.order_id] = [{
                'order_id':
                order.order_id,
                'card_id':
                order.card_id,
                'money':
                order.money,
                'created_at':
                order.created_at.strftime('%Y-%m-%d %H:%M:%S'),
                'onwer_id':
                order.owner_id,
                'owner_username':
                user_id2username[order.owner_id],
                'event_type':
                order.event_type
            }]
        else:
            order_id2cards[order.order_id].append({
                'order_id':
                order.order_id,
                'card_id':
                order.card_id,
                'money':
                order.money,
                'created_at':
                order.created_at.strftime('%Y-%m-%d %H:%M:%S'),
                'onwer_id':
                order.owner_id,
                'owner_username':
                user_id2username[order.owner_id],
                'event_type':
                order.event_type
            })
    order2cards = {}

    for k, cards in order_id2cards.items():
        card_money = {}
        for card in cards:
            if not card_money.has_key(card['card_id']):
                if card['event_type'] == '使用':
                    card_money[card['card_id']] = {
                        'card_id': card['card_id'],
                        'order_id': card['order_id'],
                        'use_money': card['money'],
                        'refund': 0,
                        'created_at': card['created_at'],
                        'owner_username': card['owner_username']
                    }
                else:
                    card_money[card['card_id']] = {
                        'card_id': card['card_id'],
                        'order_id': card['order_id'],
                        'use_money': 0,
                        'refund': card['money'],
                        'created_at': card['created_at'],
                        'owner_username': card['owner_username']
                    }
            else:
                if card['event_type'] == '使用':
                    card_money[card['card_id']]['use_money'] += card['money']
                else:
                    card_money[card['card_id']]['refund'] += card['money']
        order2cards[k] = card_money.values()

    card_ids = set()
    for k, inner_list in order_id2cards.items():
        for order in inner_list:
            card_ids.add(order['card_id'])
    weizoom_cards = {}
    for card in WeizoomCard.objects.filter(id__in=list(card_ids)):
        weizoom_cards[card.id] = {'weizoom_card_id': card.weizoom_card_id}
    owner_ids = [
        user.id
        for user in User.objects.filter(username__in=['weshop', 'wzjx001'])
    ]
    webapp_ids = [
        webapp.appid
        for webapp in WebApp.objects.filter(owner_id__in=owner_ids)
    ]
    ids = []
    order_id2orderid = {}

    for order in Order.by_webapp_id(webapp_ids).filter(order_id__in=order_ids):
        ids.append(order.id)
        order_id2orderid[order.id] = order.order_id
    order_order_id2Product_ids = {}
    product_ids = set()
    for p in OrderHasProduct.objects.filter(order_id__in=ids):
        if not order_order_id2Product_ids.has_key(p.product_id):
            order_order_id2Product_ids[order_id2orderid[p.order_id]] = [
                p.product_id
            ]
        else:
            order_order_id2Product_ids[order_id2orderid[p.order_id]].append(
                p.product_id)
        product_ids.add(p.product_id)
    product_id2category_name = {}
    catetory_id2name = {c.id: c.name for c in ProductCategory.objects.all()}
    for p in CategoryHasProduct.objects.filter(product_id__in=product_ids):
        if not product_id2category_name.has_key(p.product_id):
            product_id2category_name[p.product_id] = [
                catetory_id2name[p.category_id]
            ]
        else:
            product_id2category_name[p.product_id].append(
                catetory_id2name[p.category_id])
    channel2orders = OrderedDict()
    for orderids in channels:
        for order_id in orderids[1]['order_ids']:
            if not channel2orders.has_key(orderids[0]):
                channel2orders[orderids[0]] = [order2cards[order_id]]
            else:
                channel2orders[orderids[0]].append(order2cards[order_id])

    members_info = [[
        u'渠道帐号', '订单号', '消费卡号', u'消费金额', u'退款金额', u'消费日期', u'商品分组'
    ]]

    for k, channel2order in channel2orders.items():
        for orders in channel2order:
            for order in orders:
                card_id = order['card_id']
                order.update(weizoom_cards[card_id])
                product_dict = order['product'] = {}
                if order_order_id2Product_ids.has_key(order['order_id']):
                    product_ids = order_order_id2Product_ids[order['order_id']]
                    for one_id in product_ids:
                        try:
                            product_dict[one_id] = ','.join(
                                product_id2category_name[one_id])
                        except:
                            product_dict[one_id] = ''
                info_list = [
                    order['owner_username'], order['order_id'],
                    order['weizoom_card_id'],
                    '%.2f' % order['use_money'],
                    '%.2f' % -order['refund'], order['created_at'],
                    order['product'].values()
                ]
                members_info.append(info_list)
    filename = u'微众卡按渠道统计列表.xls'
    url = export_csv(members_info, filename, force_csv=False)
    response = create_response(200)
    response.data.url = url
    response.data.filename = filename
    return response.get_response()
コード例 #22
0
def update_workspace_name(request):
	workspace_id = request.POST['workspace_id']
	Workspace.objects.filter(id=workspace_id).update(name=request.POST['name'])

	response = create_response(200)
	return response.get_response()
コード例 #23
0
def update_project_name(request):
	project_id = request.POST['project_id']
	Project.objects.filter(id=project_id).update(name=request.POST['name'])

	response = create_response(200)
	return response.get_response()