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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
# 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 %}
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()
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()
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()