def logs(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") keywords = request.GET.get('keywords', '').replace('amp;', '') res = StockLogs.objects.all().order_by('-created') if keywords: res = res.filter( Q(fun__contains=keywords) | Q(user__username__contains=keywords) | Q(description__contains=keywords)) data = { 'data': res, 'title': "Logs", 'user': user, } return render(request, "Stocks/users_sku/logs.html", data)
def edit_children(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66, 'msg': u'login error!'}), content_type='application/json') if request.method == 'POST': child_employee = request.POST.get('child_employee', '') child_obj = Employee.objects.filter(parent_user=user.user_id) if child_obj: child_obj.update(parent_user=0) if child_employee: child_employees = Employee.objects.filter(id__in=eval(child_employee)) if child_employees: child_employees.update(parent_user=user.user_id) return HttpResponse(json.dumps({'code': 1, 'msg': u'Successfully!'}), content_type='application/json')
def get_role_by_user(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66}), content_type='application/json') if request.method == 'POST': user_id = request.POST.get('user_id', '') user_obj = User.objects.filter(id=user_id) if not user_obj: return HttpResponse(json.dumps({'code': 0, 'msg': 'User is not exits!'}), content_type='application/json') try: return HttpResponse(json.dumps({'code': 1, 'data': {'role_code': user_obj[0].userprofile.stocks_role}}), content_type='application/json') except: return HttpResponse(json.dumps({'code': 0, 'msg': 'User/role is not exits!'}), content_type='application/json')
def update_menus(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66}), content_type='application/json') menus0 = update_res.MENUS0 menus = update_res.MENUS roles = update_res.ROLES querysetlist0 = [] querysetlist = [] Menus.objects.all().delete() for val in menus0: menu = Menus.objects.filter(name=val['name'], elem_id=val['elem_id']) if not menu: querysetlist0.append( Menus(name=val['name'], elem_id=val['elem_id'], url=val['url'])) if querysetlist0: Menus.objects.bulk_create(querysetlist0) for val in menus: menu = Menus.objects.filter(name=val['name'], elem_id=val['elem_id']) parent = Menus.objects.filter(name=val['parent']) if not menu: querysetlist.append( Menus(name=val['name'], elem_id=val['elem_id'], url=val['url'], parent_id=parent[0].id)) if querysetlist: Menus.objects.bulk_create(querysetlist) for val in roles: role = Roles.objects.filter(code=val['code']) if not role: role_obj = Roles() role_obj.id role_obj.name = val['name'] role_obj.code = val['code'] role_obj.save() menu_obj = Menus.objects.filter(name__in=val['menus']) if menu_obj: for menu in menu_obj: menu.roles.add(role_obj) return HttpResponse(json.dumps({ 'code': 1, 'msg': 'Work is done!' }), content_type='application/json')
def question_answer(self): user = App.get_user_info(self) if not user: return HttpResponse(json.dumps({ 'code': 0, 'msg': '用户未登录' }), content_type='application/json') asin = self.GET.get('asin', '') listing_max = Listings.objects.filter(asin=asin).aggregate( Max('created')) if not listing_max or not listing_max['created__max']: listing_max = Listings.objects.aggregate(Max('created')) start_time = datetime.datetime.now().strftime("%Y-%m-1") end_time = listing_max['created__max'].strftime("%Y-%m-%d") if int(datetime.datetime.now().strftime("%d")) <= 5: mid_time = datetime.datetime.now() - relativedelta(months=+1) mid_days = calendar.monthrange(mid_time.year, mid_time.month) start_time = mid_time.strftime("%Y-%m-1") end_time = mid_time.strftime("%Y-%m-" + str(mid_days[1])) listing = Listings.objects.filter(asin=asin).filter( created__gte=start_time).filter( created__lte=end_time).order_by('-created') if not listing: item = Listings.objects.filter(asin=asin).filter( created__icontains=listing_max['created__max'].strftime( "%Y-%m-%d"))[0] else: item = listing[0] qa_max = Questions.objects.filter(asin=asin).aggregate(Max('created')) if not qa_max or not qa_max['created__max']: qa_max = Questions.objects.aggregate(Max('created')) question_count = Questions.objects.filter( asin=asin, created__icontains=qa_max['created__max'].strftime("%Y-%m-%d")) answer_count = item.answered if question_count and question_count[0].count: qa_count = question_count[0].count else: qa_count = question_count.count() question_answer = str(answer_count) + '/' + str(qa_count) return HttpResponse(json.dumps({ 'code': 1, 'question_answer': question_answer }), content_type='application/json')
def user_detail(self): user = App.get_user_info(self) if not user: return HttpResponseRedirect("/admin/maxlead_site/login/") id = self.GET.get('id') member_group = list(UserProfile.objects.filter(role=1,state=1)) if not id: user_info = user return render(self, 'user/userinfo.html', {'user': user,'avator': user.user.username[0],'user_info': user_info,'member_groups':member_group,}) if not user.role == 2: return HttpResponseRedirect("/admin/maxlead_site/index/") user_info = UserProfile.objects.get(id=id) return render(self, 'user/userinfo.html', {'user': user,'avator': user.user.username[0],'user_info': user_info,'member_groups':member_group,})
def check_order_import(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66, 'msg': u'login error!'}), content_type='application/json') if request.method == 'POST': myfile = request.FILES.get('myfile','') if not myfile: return HttpResponse(json.dumps({'code': 0, 'msg': u'File is empty!'}),content_type='application/json') file_path = os.path.join(settings.BASE_DIR, settings.DOWNLOAD_URL, 'excel_stocks', myfile.name) f = open(file_path, 'wb') for chunk in myfile.chunks(): f.write(chunk) f.close() res = read_excel_file1(NoSendRes, file_path, 'no_send_res') os.remove(file_path) return HttpResponse(json.dumps(res), content_type='application/json')
def export_dash_reviews(self): user = App.get_user_info(self) if not user: return HttpResponseRedirect("/admin/maxlead_site/login/") revBgn = self.GET.get('revBgn', '') revEnd = self.GET.get('revEnd', '') viewRange = self.GET.get('viewRange', '') asins = Dashboard._get_asins(self, user, user_id=viewRange) review_max = Reviews.objects.filter(asin__in=asins).aggregate( Max('created')) if review_max and review_max['created__max']: reviews = Reviews.objects.filter( created__icontains=review_max['created__max'], score__lte=3, asin__in=asins).order_by('-review_date') if revBgn: reviews = reviews.filter(review_date__gte=revBgn) if revEnd: reviews = reviews.filter(review_date__lte=revEnd) data = [] for val in reviews: re = { 'title': val.title, 'variation': val.variation, 'asin': val.asin, 'name': val.name, 'score': val.score, 'is_vp': val.is_vp, 'review_date': val.review_date.strftime("%Y-%m-%d"), 'content': val.content, 'review_link': val.review_link, 'created': val.created.strftime("%Y-%m-%d"), } data.append(re) fields = [ 'Title', 'Variation', 'Asin', 'Name', 'Score', 'VP', 'Review Date', 'Content', 'Review Link', 'Created' ] data_fields = [ 'title', 'variation', 'asin', 'name', 'score', 'is_vp', 'review_date', 'content', 'review_link', 'created' ] return get_excel_file(self, data, fields, data_fields)
def no_send_list(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") keywords = request.GET.get('search_words', '').replace('amp;', '') list = NoSendRes.objects.all() if keywords: list = list.filter(sku__contains=keywords) data = { 'list': list, 'user': user, 'keywords': keywords, 'title': 'Order List', } return render(request, "Stocks/send_email/no_send_list.html", data)
def contact_list(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") keywords = request.GET.get('search_words','').replace('amp;','') list = EmailContacts.objects.filter(expired_time__gt=datetime.now(),customer_num=user.menu_child_type).order_by('-id', '-expired_time') if not user.user.is_superuser: list = list.filter(user_id=user.user.id) if keywords: list = list.filter(Q(email_address__contains=keywords)|Q(email__contains=keywords)) data = { 'list': list, 'user': user, 'keywords': keywords, 'title': 'Email Contacts', } return render(request, "Stocks/send_email/contact_list.html", data)
def orders_del(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66, 'msg': u'login error!'}), content_type='application/json') if request.method == 'POST': data = request.POST.get('data','') is_email = request.POST.get('is_email','') customer_num = request.POST.get('customer_num','') if is_email == '1': obj = OldOrderItems.objects.filter(order_id__in=eval(data)) else: obj = OrderItems.objects.filter(order_id__in=eval(data)) obj = obj.filter(customer_num=int(customer_num)) if obj: re = obj.delete() if not re: return HttpResponse(json.dumps({'code': 0, 'msg': 'Work is Faild!'}), content_type='application/json') return HttpResponse(json.dumps({'code': 1, 'msg': 'Work is Done!'}), content_type='application/json')
def _set_user_sku(request=None): sku_list = [] file_name = 'userSkus_txt.txt' if request: user = App.get_user_info(request) user_skus = SkuUsers.objects.filter().all() if request and not user.user.is_superuser: user_skus = user_skus.filter(user=user.user) file_name = 'userSkus_txt_%s.txt' % user.user.username if user_skus: for val in user_skus: sku_list.append(val.sku) file_path = os.path.join(settings.BASE_DIR, settings.THRESHOLD_TXT, file_name) with open(file_path, "w+") as f: sku_list = str(sku_list) f.write(sku_list) f.close() return True
def ajax_get_task_data(self): user = App.get_user_info(self) tasks = Task.objects.filter(is_new=1, file_path='',user_id=user.user_id) if not tasks: return HttpResponse(json.dumps({'code': 0, 'data': 1}), content_type='application/json') work_path = settings.SPIDER_URL os.chdir(work_path) os.system('scrapyd-deploy') for val in tasks: for aid in eval(val.asins): aid = aid.replace('\n', '') if val.type == 0: cmd_str = 'curl http://localhost:6800/schedule.json -d project=maxlead_scrapy -d spider=review_spider -d asin=%s' % aid else: cmd_str = 'curl http://localhost:6800/schedule.json -d project=maxlead_scrapy -d spider=qa_spider -d asin=%s' % aid os.system(cmd_str) os.chdir(settings.ROOT_PATH) return HttpResponse(json.dumps({'code': 1, 'data': 1}), content_type='application/json')
def ajax_get_asins(self): user = App.get_user_info(self) if not user: return HttpResponse(json.dumps({ 'code': 1, 'msg': u'用户未登录!' }), content_type='application/json') ids = self.POST.get('ids') asins = UserAsins.objects.values( 'aid', 'sku', 'ownership', 'keywords1', 'keywords2', 'keywords3', 'cat1', 'cat2', 'cat3', 'review_watcher', 'listing_watcher', 'is_use').filter(id__in=eval(ids)).all() aid_str = '' sku_str = '' data = '' for i, val in enumerate(asins, 1): if i == len(asins): aid_str += val['aid'] sku_str += val['sku'] else: aid_str += val['aid'] + '|' sku_str += val['sku'] + '|' if len(asins) == 1: data = { 'ownership': val['ownership'], 'keywords1': val['keywords1'], 'keywords2': val['keywords2'], 'keywords3': val['keywords3'], 'cat1': val['cat1'], 'cat2': val['cat2'], 'cat3': val['cat3'], 'review_watcher': val['review_watcher'], 'listing_watcher': val['listing_watcher'], 'is_use': val['is_use'], } return HttpResponse(json.dumps({ 'code': 1, 'aid_str': aid_str, 'sku_str': sku_str, 'data': data }), content_type='application/json')
def ajax_radar(self): user = App.get_user_info(self) if not user: return HttpResponse(json.dumps({ 'code': 0, 'msg': '用户未登录' }), content_type='application/json') page = self.GET.get('page', 1) viewRange = self.GET.get('viewRange', '') offset = (int(page) - 1) * 6 asins = Dashboard._get_asins(self, user, ownership='Others', user_id=viewRange) res = Dashboard._get_activity_radar(self, asins, param=self.GET) is_page = 1 if len(res) < 6: is_page = 0 data = [] if res: res = res[offset:offset + 6] for val in res: re = { 'asin': val.asin, 'created': val.created, 'changed': val.changed, 'buy_box_res': val.buy_box_res } data.append(re) data = {'data': data, 'page': page, 'is_page': is_page} return HttpResponse(json.dumps({ 'code': 1, 'data': data }), content_type='application/json') else: data = {'data': [], 'page': page, 'is_page': is_page} return HttpResponse(json.dumps({ 'code': 1, 'data': data }), content_type='application/json')
def tmp_export(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") keywords = request.GET.get('keywords', '').replace('amp;', '') send_time = request.GET.get('send_time', '') order_status = request.GET.get('order_status', '') list = EmailTemplates.objects.filter(customer_num=user.menu_child_type) if not user.user.is_superuser: list = list.filter(user_id=user.user.id) if keywords: list = list.filter( Q(sku__contains=keywords) | Q(title__contains=keywords) | Q(content__contains=keywords)) if send_time: list = list.filter(send_time=send_time) if order_status: list = list.filter(order_status=order_status) data = [] if list: for val in list: re = { 'sku': val.sku, 'keywords': val.keywords, 'title': val.title, 'content': val.content, 'order_status': val.order_status, 'send_time': val.send_time, 'created': '' } data.append(re) fields = [ 'SKU', 'Keywords', 'Title', 'Content', 'Order Status', 'Send Time', 'Created' ] data_fields = [ 'sku', 'keywords', 'title', 'content', 'order_status', 'send_time', 'created' ] return get_excel_file(request, data, fields, data_fields) else: return HttpResponse('没有数据~~')
def delete_user(self): user = App.get_user_info(self) if not user: return HttpResponse(json.dumps({'code': 2, 'msg': u'没有登陆!'}), content_type='application/json') if not user.role == 2: return HttpResponse(json.dumps({'code': 0, 'msg': u'没有的权限!'}), content_type='application/json') del_id = eval(self.POST['ids']) res = UserProfile.objects.filter(id__in=del_id).exclude(id=user.id).update(state=0) if res: log_obj = StockLogs() log_obj.id log_obj.user_id = user.user_id log_obj.fun = self.path log_obj.description = 'User delete.' log_obj.save() return HttpResponse(json.dumps({'code': 1, 'msg': u'删除成功!'}), content_type='application/json') else: return HttpResponse(json.dumps({'code': 0, 'msg': u'删除失败!'}), content_type='application/json')
def no_send_list(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") keywords = request.GET.get('search_words', '').replace('amp;', '') list = NoSendRes.objects.filter(customer_num=user.menu_child_type) if not user.user.is_superuser: list = list.filter(user_id=user.user.id) if keywords: list = list.filter(Q(sku__contains=keywords)|Q(order_id__contains=keywords)|Q(status__contains=keywords)) data = { 'list': list, 'user': user, 'keywords': keywords, 'title': 'Order List', } return render(request, "Stocks/send_email/no_send_list.html", data)
def index(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") user_id = request.GET.get('user_id', '') list = Menus.objects.all() user_list = User.objects.filter() index_user = user_list[0] if user_id: index_user = User.objects.get(id=user_id) role_list = Roles.objects.all() checked_role_code = 0 checked_role_id = 0 for val in role_list: val.is_checked = 0 if val.code == index_user.userprofile.stocks_role: val.is_checked = 1 checked_role_code = val.code checked_role_id = val.id role_menus = Menus.objects.filter(roles__id=checked_role_id) for val in user_list: val.is_checked = 0 if val.userprofile.stocks_role == checked_role_code: val.is_checked = 1 role_ids = [] if role_menus: for val in role_menus: role_ids.append(val.elem_id) for val in list: val.is_checked = 0 if val.elem_id in role_ids: val.is_checked = 1 data = { 'list': list, 'user': user, 'user_id': user_id, 'user_list': user_list, 'role_list': role_list, 'title': 'Setting', } return render(request, "Stocks/settings/index.html", data)
def ajax_update_list(self): user = App.get_user_info(self) if not user: return HttpResponse(json.dumps({ 'code': 1, 'msg': u'用户未登录!' }), content_type='application/json') work_path = settings.SPIDER_URL os.chdir(work_path) os.system('scrapyd-deploy') cmd_str1 = 'curl http://localhost:6800/schedule.json -d project=maxlead_scrapy -d spider=listing_spider -d asin=%s -d user=%s' % ( 100, user.user_id) os.system(cmd_str1) os.chdir(settings.ROOT_PATH) return HttpResponse(json.dumps({ 'code': 1, }), content_type='application/json')
def brand_import(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66, 'msg': u'login error!'}), content_type='application/json') if request.method == 'POST': myfile = request.FILES.get('my_file','') if not myfile: return HttpResponse(json.dumps({'code': 0, 'msg': u'File is empty!'}),content_type='application/json') file_path = os.path.join(settings.BASE_DIR, settings.DOWNLOAD_URL, 'excel_stocks', myfile.name) f = open(file_path, 'wb') for chunk in myfile.chunks(): f.write(chunk) f.close() handleEncoding(file_path) file = open(file_path, 'r', encoding='UTF-8') csv_files = csv.reader(file) msg = 'Successfully!\n' for i, val in enumerate(csv_files, 0): try: if i == 0 and not val[0] == 'SKU' and not val[1] == 'ASIN': return HttpResponse(json.dumps({'code': 0, 'msg': u'文件错误~'}), content_type='application/json') if i > 0: brand_check = AdsBrand.objects.filter(user=user.user, sku=val[0], asin=val[1]) val[2] = val[2].upper() if brand_check: brand_check.update(brand=val[2]) else: brand_obj = AdsBrand() brand_obj.id brand_obj.user = user.user brand_obj.sku = val[0] brand_obj.asin = val[1] brand_obj.brand = val[2] brand_obj.save() except: msg += '第%s行添加有误。\n' % (i + 1) continue file.close() res = {'code': 1, 'msg': msg} os.remove(file_path) return HttpResponse(json.dumps(res), content_type='application/json')
def ajax_get_reviews(self): user = App.get_user_info(self) if not user: return HttpResponse(json.dumps({'code': 0, 'msg': '用户未登录'}),content_type='application/json') revBgn = self.GET.get('revBgn', '') revEnd = self.GET.get('revEnd', '') page = self.GET.get('page', 1) viewRange = self.GET.get('viewRange', '') offset = (int(page)-1)*6 asins = Dashboard._get_asins(self,user,review_watcher=1,user_id=viewRange) review_max = Reviews.objects.filter(asin__in=asins).aggregate(Max('created')) if not review_max or not review_max['created__max']: return HttpResponse(json.dumps({'code': 0, 'msg': '没有数据!'}), content_type='application/json') reviews = Reviews.objects.filter(created__icontains=review_max['created__max'],score__lte=3, asin__in=asins).order_by('-review_date') if revBgn: reviews = reviews.filter(review_date__gte=revBgn) if revEnd: reviews = reviews.filter(review_date__lte=revEnd) if reviews: reviews = reviews[offset:offset+6] if not reviews: return HttpResponse(json.dumps({'code': 1, 'data': []}), content_type='application/json') data = [] for val in reviews: if val.review_date: val.review_date = val.review_date.strftime("%Y-%m-%d") a = model_to_dict(val) a['sku'] = UserAsins.objects.filter(aid=val.asin)[0].sku data.append(a) is_page = 1 if len(reviews) < 6: is_page = 0 re = { 'data':data, 'review_page':page, 'is_page':is_page } return HttpResponse(json.dumps({'code': 1, 'data': re}), content_type='application/json')
def sync_barcode(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({ 'code': 66, 'msg': u'login error!' }), content_type='application/json') if request.method == 'POST': start_date = request.POST.get('start_date', '') start_date = start_date[0:16] time.sleep(3) t = threading.Timer(1.0, run_update_barcode, [user, start_date]) t.start() return HttpResponse(json.dumps({ 'code': 1, 'msg': u'Task is running!' }), content_type='application/json')
def add_role(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66}), content_type='application/json') if request.method == 'POST': role_name = request.POST.get('role_name','') role_code = request.POST.get('role_code','') menu_ids = request.POST.get('menu_ids','') if not role_code or not role_name or not menu_ids: return HttpResponse(json.dumps({'code': 0, 'msg': 'Code/Name is empty!'}), content_type='application/json') role_obj = Roles() role_obj.id role_obj.name = role_name role_obj.code = role_code role_obj.save() for val in eval(menu_ids): menu_obj = Menus.objects.get(id=int(val)) menu_obj.roles.add(role_obj) return HttpResponse(json.dumps({'code': 1, 'msg': 'Work is done!'}), content_type='application/json')
def import_stemp(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66, 'msg': u'login error!'}), content_type='application/json') if request.method == 'POST': myfile = request.FILES.get('myfile', '') if not myfile: return HttpResponse(json.dumps({'code': 0, 'msg': u'File is empty!'}), content_type='application/json') file_path = os.path.join(settings.BASE_DIR, settings.DOWNLOAD_URL, 'excel_stocks', myfile.name) f = open(file_path, 'wb') for chunk in myfile.chunks(): f.write(chunk) f.close() if not os.path.isfile(file_path): return HttpResponse(json.dumps({'code': 0, 'msg': 'File is not found!'}), content_type='application/json') data = xlrd.open_workbook(file_path) # 打开fname文件 data.sheet_names() # 获取xls文件中所有sheet的名称 table = data.sheet_by_index(0) # 通过索引获取xls文件第0个sheet nrows = table.nrows msg = '' querylist = [] check_data = [] for i in range(nrows): try: if i + 1 < nrows: sfp_temp = table.cell_value(i + 1, 0, ).strip() warehouse = table.cell_value(i + 1, 1, ).strip() inactive = table.cell_value(i + 1, 2, ).strip() chec = SfpTemps.objects.filter(sfp_temp=sfp_temp) if chec: chec.update(warehouse=warehouse, inactive=inactive, user=user.user) else: if sfp_temp not in check_data: check_data.append(sfp_temp) querylist.append(SfpTemps(sfp_temp=sfp_temp, warehouse=warehouse, inactive=inactive, user=user.user)) except: msg += '第%s行添加有误。<br>' % (i + 1) continue if querylist: SfpTemps.objects.bulk_create(querylist) os.remove(file_path) return HttpResponse(json.dumps({'code': 1, 'msg': msg}), content_type='application/json')
def ajax_export(self): user = App.get_user_info(self) if not user: return HttpResponse(json.dumps({ 'code': 0, 'msg': u'用户未登录!' }), content_type='application/json') data = eval(self.POST.get('data')) fields = [ 'Image Thumbs', 'Title', 'Asin', 'Sku', 'Brand', 'Price', 'Total Review', 'Rvw Ecore', 'Category Rank', 'Buy Box', 'Status', 'Review Watcher', 'Listing Watcher', 'Last Check' ] data_fields = [ 'title', 'asin', 'sku', 'brand', 'price', 'total_review', 'rvw_score', 'category_rank', 'buy_box', 'status', 'review_watcher', 'listing_watcher', 'last_check' ] return get_excel_file(self, data, fields, data_fields)
def sku_list(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") keywords = request.GET.get('keywords', '').replace('amp;', '') res = SkuUsers.objects.all() if keywords: res = res.filter( Q(sku__contains=keywords) | Q(user__username__contains=keywords)) user_list = User.objects.filter(userprofile__role=99) if not user.user.is_superuser and not user.stocks_role == 66: res = res.filter(user_id=user.user.id) user_list = user_list.filter(id=user.user_id) data = { 'data': res, 'title': "User Sku", 'user': user, 'user_list': user_list, } return render(request, "Stocks/users_sku/skus.html", data)
def export_stocks(request): user = App.get_user_info(request) if not user: return HttpResponseRedirect("/admin/max_stock/login/") keywords = request.GET.get('keywords', '').replace('amp;', '') warehouse = request.GET.get('warehouse', '') sel_new = request.GET.get('sel_new', '') stocks = WarehouseStocks.objects.all() if not user.user.is_superuser and not user.stocks_role == 66: skus = SkuUsers.objects.filter(user_id=user.user.id).values_list('sku') stocks = stocks.filter(sku__in=skus) if keywords: stocks = stocks.filter(sku__contains=keywords) if warehouse: stocks = stocks.filter(warehouse=warehouse) if not sel_new: sel_new = 0 stocks = stocks.filter(is_new=sel_new) stocks = stocks.values('sku', 'warehouse').annotate(count=Count('sku'), count2=Count('warehouse')) data = [] if stocks: for val in stocks: qty = WarehouseStocks.objects.filter(sku=val['sku'], warehouse=val['warehouse'], is_new=sel_new) if qty: re = { 'sku': val['sku'], 'warehouse': val['warehouse'], 'qty': qty[0].qty, 'created': qty[0].created.strftime("%Y-%m-%d %H:%M:%S"), } data.append(re) fields = ['SKU', 'Warehouse', 'QTY', 'Created'] data_fields = ['sku', 'warehouse', 'qty', 'created'] return get_excel_file(request, data, fields, data_fields) else: return HttpResponse('没有数据~~')
def get_role_user(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66}), content_type='application/json') if request.method == 'POST': role_code = request.POST.get('role_code', '') user_list = User.objects.filter() if not user_list: return HttpResponse(json.dumps({'code': 0}), content_type='application/json') left_str = '' right_str = '' for val in user_list: try: if role_code and val.userprofile.stocks_role == role_code: right_str += '<option value="%s">%s</option>' % (val.id, val.username) elif (val.userprofile.stocks_role == '0' or not val.userprofile.stocks_role) and not val.is_superuser: left_str += '<option value="%s">%s</option>' % (val.id, val.username) except: continue data = {'right_str': right_str, 'left_str': left_str} return HttpResponse(json.dumps({'code': 1, 'data': data}), content_type='application/json')
def change_role(request): user = App.get_user_info(request) if not user: return HttpResponse(json.dumps({'code': 66}), content_type='application/json') if request.method == 'POST': user_id = request.POST.get('user_id', '') role_code = request.POST.get('role_user_code', '') box_menu_ids = request.POST.get('box_menu_ids', '') user_obj = UserProfile.objects.filter(user_id=user_id) role_obj = Roles.objects.filter(code=role_code) if not user_obj or not role_obj: return HttpResponse(json.dumps({'code': 0, 'msg': 'User/Role is not exits!'}), content_type='application/json') user_obj.update(stocks_role=role_code) res = role_obj[0].menus_set.all() for val in res: val.roles.remove(role_obj[0]) objs = Menus.objects.filter(id__in=eval(box_menu_ids)) if objs: for val in objs: val.roles.add(role_obj[0]) return HttpResponse(json.dumps({'code': 1, 'msg': 'Work is done!'}), content_type='application/json')