Commit 28ff8528 authored by zhanglu's avatar zhanglu

Merge branch 'feature/op_topic' into 'test'

Feature/op topic

See merge request alpha/sun!115
parents 993a7ea8 18126fb0
......@@ -11,26 +11,82 @@ from utils.logger import error_logger
class TopicListView(APIView):
def get(self, request):
user_id = request.GET.get('user_id', '')
group_id = request.GET.get('group_id', '')
offset = int(request.GET.get('page', 0))
page = int(request.GET.get('page', 1))
limit = int(request.GET.get('limit', 10))
filter = self.handle_filter(request.GET.get('filter', ""))
sort_params = request.GET.getlist('sort[]')
filters = json.loads(request.GET.get('filter', "{}"))
sorts_by = list(map(lambda i: int(i), request.GET.getlist('sort_params[]', [3])))
if user_id:
filter.update({'user_id': user_id})
if group_id:
filter.update({'group_id': group_id})
filters.update({'user_id': user_id})
res = self.rpc['physical/search/business/topic'](
offset=(page-1) * limit,
size=limit,
filters=filters,
sorts_by=sorts_by
).unwrap()
topic_ids = res.get("topic_ids", [])
total_count = res.get("total_count", 0)
try:
data = self.rpc['venus/sun/topic/list'](
offset=(offset - 1) * limit,
limit=limit,
filters=filter,
sort_params=sort_params
topic_ids=topic_ids
).unwrap()
except Exception as e:
error_logger.error(u'获取帖子列表失败%s', e)
raise
return data
result = {
"data": data.get("data", []),
"total": total_count,
}
return result
class TopicImageListView(APIView):
def get(self, request):
page = int(request.GET.get('page', 1))
limit = int(request.GET.get('limit', 50))
filters = json.loads(request.GET.get('filter', "{}"))
sorts_by = list(map(lambda i: int(i), request.GET.getlist('sort_params[]', [3])))
res = self.rpc['physical/search/business/topic'](
offset=(page-1) * limit,
size=limit,
filters=filters,
sorts_by=sorts_by
).unwrap()
topic_ids = res.get("topic_ids", [])
total_count = res.get("total_count", 0)
try:
data = self.rpc['venus/community/topic/images_info_dict'](
topic_ids=topic_ids
).unwrap()
except Exception as e:
error_logger.error(u'获取帖子列表失败%s', e)
raise
result = []
for topic_id in topic_ids:
imgs_info = data.get(str(topic_id), [])
if not imgs_info:
continue
result.append({
"id": topic_id,
"img_url": imgs_info[0].get("url", "") + '-w'
})
result = {
"data": result,
"total": total_count,
}
return result
class TopicUpdateOrCreateView(APIView):
......@@ -49,7 +105,7 @@ class TopicUpdateOrCreateView(APIView):
topic_images = list(map(lambda x: x[:-2], json.loads(request.POST.get('topic_images', []))))
tag_ids = list(map(lambda x: x.split(':')[0], json.loads(request.POST.get('tags', '[]'))))
collection_tag_ids = list(map(lambda x: x.split(':')[0], json.loads(request.POST.get('collection_tags', '[]'))))
data = {
'topic_images': topic_images,
'video_url': request.POST.get('video_url', ''),
......
......@@ -53,6 +53,7 @@ urlpatterns = [
# topic相关
url(r'^topic/list$', TopicListView.as_view()),
url(r'^topic/img/list$', TopicImageListView.as_view()),
url(r'^topic/detail$', TopicUpdateOrCreateView.as_view()),
url(r'^topic/create$', TopicUpdateOrCreateView.as_view()),
url(r'^topic/batch_update$', TopicListBatchUpdate.as_view()),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment