diff --git a/api/product.py b/api/product.py index 7f36991897142dd5d7a522cf51e465526ad21e9d..5810e5253be8baecc20c8c23169e44f2ce39b50a 100644 --- a/api/product.py +++ b/api/product.py @@ -73,9 +73,9 @@ class ProductListView(APIView): sorted_condition = request.GET.get('sorted_condition', None) data = self.rpc['neptune/commodity/product/list']( - offset=offset, count=count, id_=id_, cn_name=cn_name, en_name=en_name, alias=alias, is_online=is_online, + offset=offset, count=count, id_=id_, cn_name=cn_name, en_name=en_name, alias=alias, is_online=is_online, has_area=has_area, has_brand=has_brand, has_image=has_image, brand_id=brand_id, classify_id=classify_id, - category_id=category_id, price_low=price_low, price_high=price_high, grade_low=grade_low, grade_high=grade_high, + category_id=category_id, price_low=price_low, price_high=price_high, grade_low=grade_low, grade_high=grade_high, comment_nums_low=comment_nums_low, comment_nums_high=comment_nums_high, effect_name=effect_name, sorted_condition=sorted_condition).unwrap() @@ -90,11 +90,11 @@ class ProductListView(APIView): obj['brand_info'] = { 'id': brand_product_dict.get(str(product_id)).get('id'), 'cn_name': brand_product_dict.get(str(product_id)).get('cn_name')} if brand_product_dict.get(str(product_id)) else '' - obj['category_infos'] = [{'id': obj.get('id'), 'cn_name': obj.get('cn_name')} + obj['category_infos'] = [{'id': obj.get('id'), 'cn_name': obj.get('cn_name')} for obj in category_product_dict.get(str(product_id))] if category_product_dict.get(str(product_id)) else [] - obj['effect_infos'] = [{'id': obj.get('id'), 'cn_name': obj.get('cn_name')} + obj['effect_infos'] = [{'id': obj.get('id'), 'cn_name': obj.get('cn_name')} for obj in effect_product_dict.get(str(product_id))] if effect_product_dict.get(str(product_id)) else [] - obj['classify_infos'] = [{'id': obj.get('id'), 'cn_name': obj.get('cn_name')} + obj['classify_infos'] = [{'id': obj.get('id'), 'cn_name': obj.get('cn_name')} for obj in classify_product_dict.get(str(product_id))] if classify_product_dict.get(str(product_id)) else [] obj.pop('norms') @@ -102,7 +102,7 @@ class ProductListView(APIView): obj.pop('platform') count = self.rpc['neptune/commodity/product/count']( - id_=id_, cn_name=cn_name, en_name=en_name, alias=alias, is_online=is_online, has_area=has_area, has_brand=has_brand, + id_=id_, cn_name=cn_name, en_name=en_name, alias=alias, is_online=is_online, has_area=has_area, has_brand=has_brand, has_image=has_image, brand_id=brand_id, category_id=category_id, classify_id=classify_id, price_low=price_low, price_high=price_high, grade_low=grade_low, grade_high=grade_high, comment_nums_low=comment_nums_low, comment_nums_high=comment_nums_high, effect_name=effect_name).unwrap() @@ -163,6 +163,7 @@ class ProductCreateView(APIView): effect_ids = json.loads(request.POST.get('effect_ids', '[]')) is_online = request.POST.get('is_online') brand_id = request.POST.get('brand_id') + period_of_use = request.POST.get('period_of_use') if not cn_name or not image: return r'缺少å‚æ•°' @@ -170,13 +171,15 @@ class ProductCreateView(APIView): data = self.rpc['neptune/commodity/product/create']( cn_name=cn_name, en_name=en_name, alias=alias, image=image, norms=norms, grade=grade, price=price, country=country, description=description, comment_nums=comment_nums, classify_ids=classify_ids, - category_ids=category_ids, effect_ids=effect_ids, is_online=is_online, brand_id=brand_id).unwrap() + category_ids=category_ids, effect_ids=effect_ids, is_online=is_online, brand_id=brand_id, + period_of_use=period_of_use + ).unwrap() return data class ProductUpdateView(APIView): - + def post(self, request): id_ = request.POST.get('id') cn_name = request.POST.get('cn_name', None) @@ -194,6 +197,7 @@ class ProductUpdateView(APIView): effect_ids = json.loads(request.POST.get('effect_ids', '[]')) is_online = request.POST.get('is_online') brand_id = request.POST.get('brand_id') + period_of_use = request.POST.get('period_of_use', 0) if not id_: return r'缺少å‚æ•°' @@ -201,7 +205,8 @@ class ProductUpdateView(APIView): data = self.rpc['neptune/commodity/product/update']( id_=id_, cn_name=cn_name, en_name=en_name, alias=alias, image=image, norms=norms, grade=grade, price=price, country=country, description=description, comment_nums=comment_nums, classify_ids=classify_ids, - category_ids=category_ids, effect_ids=effect_ids, is_online=is_online, brand_id=brand_id).unwrap() + category_ids=category_ids, effect_ids=effect_ids, is_online=is_online, brand_id=brand_id, + period_of_use=period_of_use).unwrap() return data diff --git a/api/reply.py b/api/reply.py index 70e479a3c42d235a9b936f86756320868e85dade..758ea09c992923330568762d90d6a20d1a798e0d 100644 --- a/api/reply.py +++ b/api/reply.py @@ -91,7 +91,7 @@ class ReplyManageListView(APIView): topic_content = request.GET.get('topic_content', None) user_name = request.GET.get('user_name', None) belong_type = request.GET.get('belong_type', None) - reply_level = request.GET.get('reply_level', None) + reply_level = request.GET.get('reply_level', None) #历å²é—®é¢˜ åŽæœŸä¼˜åŒ– reply_user_type = request.GET.get('reply_user_type', None) replied_user_type = request.GET.get('replied_user_type', None) is_online = request.GET.get('is_online', None) @@ -100,36 +100,28 @@ class ReplyManageListView(APIView): from_topic_create_time = request.GET.get('from_topic_create_time', None) to_topic_create_time = request.GET.get('to_topic_create_time', None) - other_filters = {} + filters = {} if topic_content: - other_filters['topic_content'] = topic_content.strip() + filters['topic_content'] = topic_content.strip() if reply_user_type: reply_user_type = int(reply_user_type) - if reply_user_type in [USER_EXTRA_TYPE.REAL, USER_EXTRA_TYPE.SHADOW, USER_EXTRA_TYPE.KOL]: - other_filters['reply_user_type'] = reply_user_type + if reply_user_type is not None: + filters['reply_user_type'] = reply_user_type if replied_user_type: replied_user_type = int(replied_user_type) - if replied_user_type in [USER_EXTRA_TYPE.REAL, USER_EXTRA_TYPE.SHADOW, USER_EXTRA_TYPE.KOL]: - other_filters['replied_user_type'] = replied_user_type + if replied_user_type is not None: + filters['replied_user_type'] = replied_user_type if from_topic_create_time and to_topic_create_time: - other_filters['topic_create_time__gte'] = from_topic_create_time - other_filters['topic_create_time__lte'] = to_topic_create_time + filters['topic_create_time__gte'] = from_topic_create_time + filters['topic_create_time__lte'] = to_topic_create_time if user_name: - other_filters['user_name'] = user_name - filters = {} + filters['user_name'] = user_name if topic_id: filters['topic_id'] = int(topic_id) - if content: - filters['content__contains'] = content.strip() if belong_type: if belong_type in REPLY_BELONG_TYPE: filters['belong_type'] = belong_type - if reply_level: - reply_level = int(reply_level) - if reply_level == 1: - filters['top_id__lte'] = 0 - if reply_level == 2: - filters['top_id__gt'] = 0 + if is_online: is_online = int(is_online) filters['is_online'] = is_online @@ -137,6 +129,10 @@ class ReplyManageListView(APIView): filters['create_time__gte'] = from_create_time filters['create_time__lte'] = to_create_time + other_filters = {} + if content: + other_filters['content__contains'] = content.strip()\ + try: data = self.rpc['venus/sun/reply/manage/list'](offset=(page-1) * limit, limit=limit, filters=filters, other_filters=other_filters).unwrap() except Exception as e: diff --git a/api/survey.py b/api/survey.py new file mode 100644 index 0000000000000000000000000000000000000000..9357866bc67a77cf168ad6b9fe80ff749406f352 --- /dev/null +++ b/api/survey.py @@ -0,0 +1,53 @@ +import json +from utils.base import APIView, get_offset_count + + +class SurveyListView(APIView): + + def get(self, request): + + offset, count = get_offset_count(request) + + data = self.rpc['venus/sun/survey/list'](offset=offset, count=count).unwrap() + + return data + + +class SurveyView(APIView): + + def get(self, request): + id_ = int(request.GET.get('template_id')) + + data = self.rpc['venus/sun/survey/get'](id_=id_).unwrap() + return data + + def post(self, request): + + questions = json.loads(request.POST.get('questions')) + + data = { + "name": request.POST.get('name', ""), + "questions": questions, + "template_id": int(request.POST.get('template_id', 0)), + } + + data = self.rpc['venus/sun/survey/add'](data=data).unwrap() + + return data + + +class SurveyAddAnswerView(APIView): + + def post(self, request): + + data = { + "answers": json.loads(request.POST.get('answers')), + "template_id": request.POST.get('template_id'), + "question_order": request.POST.get('question_order'), + } + + self.rpc['venus/sun/survey/answers_add'](data=data).unwrap() + + return { + "status": 1 + } diff --git a/api/tag.py b/api/tag.py index eb4c87cf0cf8d5afdf749df1da7b4a770699203d..60b347e29dc3905c4bbcef0ef6ce51625833ffd4 100644 --- a/api/tag.py +++ b/api/tag.py @@ -60,7 +60,7 @@ class TagUpdateOrCreateView(APIView): official_pictorial_id = official_pictorial_id[0] else: official_pictorial_id = None - + is_expert = int(request.POST.get('is_expert', 0)) data = { 'name': request.POST.get('name').lower(), 'description': request.POST.get('description', ''), @@ -74,6 +74,9 @@ class TagUpdateOrCreateView(APIView): 'is_core': request.POST.get('is_core', 0), 'official_pictorial_id': official_pictorial_id, 'is_show_in_register': request.POST.get('is_show_in_register', 'false'), + 'is_expert': request.POST.get('is_expert', 0), + 'gray_badge': request.POST.get('gray_badge', '') if is_expert else "", + 'light_badge': request.POST.get('light_badge', '') if is_expert else "", 'pictorial_ids': list( (map(lambda x: int(x.split(":")[0]), json.loads((request.POST.get('pictorial_ids', '[]')))))) } diff --git a/api/topic.py b/api/topic.py index 873286088391f3660a158ba3a1d4cb11e2bb9362..657325aadfa54313e9362513ad2f4919025fe5bf 100644 --- a/api/topic.py +++ b/api/topic.py @@ -6,10 +6,12 @@ import json from utils.base import APIView, get_offset_count from utils.logger import error_logger +from alpha_types.venus import USER_EXTRA_TYPE class TopicListView(APIView): def get(self, request): + pictorial_id = request.GET.get('pictorial_id', '') user_id = request.GET.get('user_id', '') page = int(request.GET.get('page', 1)) @@ -31,6 +33,22 @@ class TopicListView(APIView): if filters.get("is_finished") is not None: filters["is_finished"] = True if filters.get("is_finished") else False + user_type = filters.pop("user_type") if filters.get("user_type") else None + + if user_type: + if int(user_type) == USER_EXTRA_TYPE.COMMON: + filters["is_shadow"] = 0 + filters["is_edit"] = 0 + elif int(user_type) == USER_EXTRA_TYPE.SHADOW: + filters["is_shadow"] = 1 + elif int(user_type) == USER_EXTRA_TYPE.KOL: + filters["is_kol"] = 1 + elif int(user_type) == USER_EXTRA_TYPE.EDIT: + filters["is_edit"] = 1 + + if filters.get("has_product") is not None: + filters["has_product"] = bool(filters["has_product"]) + res = self.rpc['physical/search/business/topic']( offset=(page-1) * limit, size=limit, @@ -204,7 +222,7 @@ class TopicBallot(APIView): return { "message": "æ›´æ–°æˆåŠŸ" } - + class TopicProductAdd(APIView): """帖åæ·»åŠ å•†å“关系""" @@ -238,3 +256,21 @@ class TopicProductDel(APIView): return { 'message': 'æ›´æ–°æˆåŠŸ' } + + +class TopicBallotBatch(APIView): + """帖å批é‡æŠ•ç¥¨""" + + def post(self, request): + + ids = json.loads(request.POST.get('ids', '[]')) + ballot_num = int(request.POST.get('ballot_num', 0)) + + try: + self.rpc['venus/sun/topic/ballot_batch'](ids=ids, ballot_num=ballot_num).unwrap() + except Exception as e: + error_logger.error(u'编辑%s帖åä¿¡æ¯å¤±è´¥%s' % (ids, e)) + raise + return { + 'message': 'æ›´æ–°æˆåŠŸ' + } diff --git a/api/urls.py b/api/urls.py index 0579ee70b23b49e74302064d0c434d3a45ee3b34..ee833d15669ccd33f3af8e07e8fd1ee943931e4c 100644 --- a/api/urls.py +++ b/api/urls.py @@ -33,6 +33,7 @@ from .classify import * from .effect import * from .skin_check import * from .reply import * +from .survey import * urlpatterns = [ @@ -65,6 +66,7 @@ urlpatterns = [ url(r'^topic/ballot$', TopicBallot.as_view()), url(r'^topic/product/add$', TopicProductAdd.as_view()), url(r'^topic/product/del$', TopicProductDel.as_view()), + url(r'^topic/ballot_batch$', TopicBallotBatch.as_view()), # star相关 url(r'^celebrity/list$', CelebrityListView.as_view()), @@ -244,6 +246,13 @@ urlpatterns = [ # 测肤 url(r'^skin_check/pictorial$', SkinCheckPictorial.as_view()), url(r'^skin_check/config$', SkinCheckConfig.as_view()), + + + # è°ƒæŸ¥é—®å· + url(r'^survey_question/create$', SurveyView.as_view()), + url(r'^survey_question/get$', SurveyView.as_view()), + url(r'^survey_question/list$', SurveyListView.as_view()), + url(r'^survey_question/add_answer$', SurveyAddAnswerView.as_view()), ] search_urlpatterns = [