def _search_direct(self, sql_gen, offset: int = 0, unpack: bool = False) -> list: """ 进行直接查询 """ # 只支持双层列表的嵌套,有第三层列表嵌套时令unpack=True def perform_sql(query_sql: str): rs = self.graph.run(query_sql).data() if len(rs) > 1: return [Formatter(r) for r in rs] elif len(rs) == 1: return Formatter(rs[0]) else: return Formatter(rs) results = [] if isinstance(sql_gen, TranslationChain): generator = sql_gen.iter(offset, unpack) else: generator = sql_gen for sqls in generator: debug('||GENERATED SQL||', sqls) if isinstance(sqls, list): sub_results = [] for sql in sqls: if sql is None: sub_results.append(Formatter(None)) continue sub_results.append(perform_sql(sql)) results.append(sub_results) else: sql = sqls if sql is None: results.append(Formatter(None)) continue results.append(perform_sql(sql)) return results
def create(request): try: data = { 'msg': '', 'index': 'project', 'form': CreateForm(request.POST) } if request.method == 'POST': name = request.POST.get('name', '') description = request.POST.get('description', '') try: price = float(request.POST.get('price', 0)) except: price = 0 try: total = int(request.POST.get('total', 0)) except: total = 0 if not name: data['msg'] = '项目名称不能为空' else: project = Projects(name=name, price=price, total=total, description=description, status=1) project.save() data['msg'] = '项目创建成功' except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/project/create.html', data)
def download_one(img_id, img_url_match): download_report = {} errors = [] for channel in ['red', 'green', 'blue', 'yellow']: img_url_single_channel = f"http://v18.proteinatlas.org/images/{img_url_match[1]}/{img_url_match[2]}_{channel}.jpg" saved_filename = f'{img_id}_{channel}.jpg' saved_path = pjoin(download_folder, saved_filename) tmp_path = pjoin(tmp_folder, saved_filename) if os.path.exists(saved_path): file_size = os.stat(saved_path).st_size download_report[channel] = f"cache_found ({file_size})" else: try: urlretrieve(img_url_single_channel, tmp_path) file_size = os.stat(tmp_path).st_size shutil.move(tmp_path, saved_path) download_report[channel] = f"downloaded ({file_size})" except Exception as e: error_msg = { 'id_': img_id, 'message': repr(e), 'channel': channel, } debug(error_msg) download_report[channel] = f"failed ({repr(e)})" return download_report
def detail(request): try: data = { 'user_info': {} } user_id = int(request.GET.get('id', 0)) u_exists = Auth_user.objects.filter(id=user_id).exists() if u_exists: u = Auth_user.objects.get(id=user_id) date_joined = utils.dt_field_to_local(u.date_joined) \ .strftime('%Y-%m-%d %H:%M:%S') try: last_login = utils.dt_field_to_local(u.last_login) \ .strftime('%Y-%m-%d %H:%M:%S') except: last_login = '' data['user_info'] = { 'id': u.id, 'username': u.username, 'email': u.email, 'first_name': u.first_name, 'last_name': u.last_name, 'role': UserInfo.ROLE[u.is_superuser], 'status': UserInfo.STATUS[u.is_active], 'date_joined': date_joined, 'last_login': last_login, 'reg_ip': '', 'reg_code': '', 'reg_type': '', 'invite_code': '', 'bank_code': '', 'bank_card': '', 'cash': 0, 'invite_benifit': 0, 'total_amount': 0 } try: uinfo = UserInfo.objects.get(user=u) data['user_info']['pwd'] = uinfo.pwd data['user_info']['reg_ip'] = uinfo.reg_ip data['user_info']['reg_code'] = uinfo.reg_code data['user_info']['reg_type'] = UserInfo.REG_TYPE[uinfo.reg_type] data['user_info']['bank_code'] = uinfo.bank_code data['user_info']['bank_card'] = uinfo.bank_card data['user_info']['invite_code'] = uinfo.invite_code data['user_info']['invite_url'] = '%sregister/?invite_code=%s' % \ (settings.SITE_URL, uinfo.invite_code) except: pass try: ubalance = UserBalance.objects.get(user=u) data['user_info']['cash'] = float(ubalance.cash) data['user_info']['invite_benifit'] = float(ubalance.invite_benifit) data['user_info']['total_amount'] = float(ubalance.total) except: pass except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/user/detail.html', data)
def home(request): try: p = int(request.GET.get('p', 1)) n = int(request.GET.get('n', 25)) q = CBCDInit.objects data = { 'index': 'cbcd', 'paging': Pagination(request, q.count()), 'form': InitForm(), 'inits': { 'p': p, 'n': n, 'data': q.all().order_by('-id')[(p - 1) * n:p * n], } } if request.method == 'POST': data['form'] = InitForm(request.POST) if data['form'].is_valid(): try: CBCDInit.objects.all().update(status=0) except: pass cinit = CBCDInit(total=int(request.POST.get('total')), unsell=int(request.POST.get('total')), price=float(request.POST.get('price')), status=1) cinit.save() return HttpResponseRedirect('/backend/cbcd/') except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/cbcd/index.html', data)
def show_status(target_col='Target', **kwargs): kwargs = kwargs or {'train_with_hpa': 'data/train_with_hpa.csv'} n_samples_list = {} for id_, path in kwargs.items(): anno = pd.read_csv(path, index_col=0) n_classes = len(class_labels) xs = [] for target_str in anno[target_col]: targets = str_to_labels(target_str) x = np.zeros(n_classes, dtype='int') x[targets] = 1 xs.append(x) xx = np.array(xs) n_samples_list[id_] = np.sum(xx, axis=0) cut_summary = pd.DataFrame( { 'organelle': class_labels, **n_samples_list, # 'pct_samples': n_samples_per_class / len(anno), # 'expected_n_samples_in_test': (n_samples_per_class / len(anno) * 11702).round().astype(int), }, index=pd.Index(range(n_classes), name='class_id'), ) save_path = 'tmp/class_distribution.csv' cut_summary.to_csv(save_path) debug(f"saved to {save_path}") print(cut_summary)
def search(self, result: Result) -> [Answer]: debug('||QUESTION ORIGINAL||', result.raw_question) debug('||QUESTION FILTERED||', result.filtered_question) answers = [] for qt, chain in result.sqls.items(): answer = self.organize(qt, chain, result) answers.append(answer) return answers
def edit(request): try: project_id = request.GET.get('id', '') form = EditForm() if project_id: try: u = Projects.objects.get(id=project_id) form_initial = { 'name': u.name, 'status': u.status, 'description': u.description, 'price': u.price, 'total': u.total } form = EditForm(initial=form_initial) except: pass data = { 'msg': '', 'index': 'project', 'form': form, 'project_id': project_id } if request.method == 'POST': name = request.POST.get('name', '') description = request.POST.get('description', '') try: status = int(request.POST.get('status', 1)) except: status = 1 try: total = int(request.POST.get('total', 0)) except: total = 0 try: price = float(request.POST.get('price', 0)) except: price = 0 if not name: data['msg'] = '项目名称不能为空' else: u_exists = Projects.objects.filter(name=name).exists() if not u_exists: data['msg'] = '项目不存在' else: u = Projects.objects.get(name=name) u.status = status u.price = price u.total = total u.description = description u.save() data['msg'] = '修改成功' except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/project/edit.html', data)
def create(request): try: data = { 'msg': '', 'index': 'user', 'form': CreateForm(request.POST) } if request.method == 'POST': username = request.POST.get('username', '') password = request.POST.get('password', '') email = request.POST.get('email', '') is_superuser = int(request.POST.get('is_superuser', 0)) first_name = request.POST.get('first_name', '') reg_code = request.POST.get('reg_code', '') bank_code = request.POST.get('bank_code', '') bank_card = request.POST.get('bank_card', '') if not username or not password or not email: data['msg'] = '账号及密码、邮箱不能为空' elif len(password) < 10: data['msg'] = '密码长度至少为10' else: u_exists = Auth_user.objects.filter(username=username).exists() if u_exists: data['msg'] = '账号已存在' else: u = Auth_user.objects \ .create_user(username, email, password) u.first_name = first_name u.is_superuser = is_superuser if is_superuser: u.is_staff = is_superuser u.save() uinfo = UserInfo( user=u, reg_time=datetime.now(), reg_ip=get_ip(request), bank_code=bank_code, bank_card=bank_card ) if reg_code: code_exists = InviteCode.objects \ .filter(code=reg_code).filter(status=0) if not code_exists: uinfo.reg_code = reg_code uinfo.reg_type = 2 else: uinfo.reg_type = 1 uinfo.save() data['msg'] = '账号创建成功' except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/user/create.html', data)
def classify(self, question: str): result = self.question_filter(question) if result.count('index') == 0 and 'catalog' not in result: self.extract_index(result) # 没有任何提取结果 if result.is_wds_null(): return None self._classify_tree(result) debug('||QUESTION WORDS||', result.region_wds) debug('||QUESTION TYPES||', result.question_types) return result
def compress( n_threads=70, folder='./data/test_full_size', output_folder='./data/test_full_size_compressed', ): anno = pd.read_csv('./data/sample_submission.csv', index_col=0) with Pool(n_threads) as p: result_iter = p.imap_unordered( compress_one, compress_task_gen(anno, folder, output_folder)) for i_result, result in enumerate(result_iter): debug(f"({i_result}/{len(anno)}) {result['id_']}")
def extract_index(self, result: Result, len_threshold: int = 4, ratio_threshold: float = 0.5): """ 提取因错别字或说法而未识别到的指标 """ new_word, old_word = index_complement(result.filtered_question, self.index_wds, len_threshold, ratio_threshold) if new_word: debug('||REPLACE FOUND||', new_word, '<=', old_word) result.add_word(new_word, self.word_type_dict.get(new_word)) result.replace_words(old_word, new_word)
def relation(request): try: user_id = int(request.GET.get('id', 0)) username = request.GET.get('username', '') u_exists = Auth_user.objects \ .filter(Q(id=user_id) | Q(username=username)).exists() searchform = PaymentSearchForm(initial={'username': username}) data = { 'user_info': {}, 'parent_info': {}, 'children_info': [], 'searchform': searchform } if u_exists: u = Auth_user.objects.get(Q(id=user_id) | Q(username=username)) date_joined = utils.dt_field_to_local(u.date_joined) \ .strftime('%Y-%m-%d %H:%M:%S') try: last_login = utils.dt_field_to_local(u.last_login) \ .strftime('%Y-%m-%d %H:%M:%S') except: last_login = '' data['user_info'] = { 'id': u.id, 'username': u.username, 'email': u.email, 'first_name': u.first_name, 'date_joined': date_joined, 'last_login': last_login, 'reg_ip': '', 'cash': 0, 'invite_benifit': 0, 'total_amount': 0 } try: uinfo = UserInfo.objects.get(user=u) data['user_info']['reg_ip'] = uinfo.reg_ip except: pass try: ubalance = UserBalance.objects.get(user=u) data['user_info']['cash'] = float(ubalance.ubalance) data['user_info']['invite_benifit'] = float(ubalance.invite_benifit) data['user_info']['total_amount'] = float(ubalance.total) except: pass data['parent_info'] = services._get_parent_info(u.id) data['children_info'] = services._get_childs(u.id) except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/user/relation.html', data)
def cbcd_buy(request): if request.method == 'POST': if not services.is_hall_open(): return utils.ErrResp(errors.HallNotOpened) num = int(request.POST.get('num', 0)) price = float(request.POST.get('price', 0)) if not num or not price: return utils.ErrResp(errors.ArgMiss) current_order = UserOrderSell.objects.filter(status=0).order_by('id').first() if num > int(current_order.num_unsell): return utils.ErrResp(errors.CBCDLimit) price = float(current_order.price) # 买家付款 try: buyer = UserBalance.objects.get(user_id=request.user.id) except: utils.debug() return utils.ErrResp(errors.MoneyLimit) # 美元 money = float(num * price) if not buyer.cash or float(buyer.cash) < money: return utils.ErrResp(errors.MoneyLimit) buyer.point = buyer.point + num buyer.cash = float(buyer.cash) - money buyer.save() # 更新订单状态 current_order.num_unsell = current_order.num_unsell - num if int(current_order.num_unsell) == 0: current_order.status = 1 current_order.save() # 卖家收钱 seller = UserBalance.objects.get(user=current_order.seller_user) seller.cash = float(seller.cash) + float(num * price) seller.save() # 写买入记录 buyorder = UserOrderBuy( seller_order_id=current_order.order_id, buyer_user=request.user, price=price, num=num ) buyorder.save() return utils.NormalResp()
def common_setting(request): try: Sseting = SiteSetting.objects.order_by('-id').first() data = {'form': SsetingEditForm(instance=Sseting)} if request.method == 'POST': data['form'] = SsetingEditForm(request.POST) if data['form'].is_valid(): Sseting.user_buy_price = request.POST.get('user_buy_price') Sseting.save() except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/statics/site_setting.html', data)
def train_wrapper(config): print_config(config) t0 = perf_counter() debug(f"overwriting soft link ./latest_cwd --> {config['_cwd']}") os.unlink('./latest_cwd') os.symlink(config['_cwd'], './latest_cwd', target_is_directory=True) train(config) print(f"cwd: {config['_cwd']}") print(f"total running time: {str(timedelta(seconds=perf_counter() - t0))}")
def edit(request): try: data = {'msg': '', 'index': 'news', 'form': '', 'news_id': ''} if request.method == 'POST': news_id = request.POST.get('id', '') title = request.POST.get('title', '') content = request.POST.get('content', '') try: status = int(request.POST.get('status', 1)) except: status = 1 try: category = int(request.POST.get('category', 1)) except: category = 1 if not title: data['msg'] = '标题不能为空' else: u_exists = News.objects.filter(id=news_id).exists() if not u_exists: data['msg'] = '资讯不存在' else: u = News.objects.get(id=news_id) u.title = title u.content = content u.category_id = category u.status = status u.save() data['msg'] = '修改成功' news_id = request.GET.get('id', '') if news_id: form = EditForm() try: u = News.objects.get(id=news_id) form_initial = { 'id': u.id, 'title': u.title, 'category': u.category_id, 'content': u.content, 'status': u.status, } form = EditForm(initial=form_initial) except: pass data['form'] = form data['news_id'] = news_id except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/news/edit.html', data)
def get_current_order(): result = { 'user_id': 0, 'price': 0, 'num': 0 } try: order = UserOrderSell.objects \ .filter(status=0).order_by('id').first() result['user_id'] = order.seller_user_id result['price'] = float(order.price) result['num'] = int(order.num_unsell) except: utils.debug() finally: return result
def _RmQ_BB(self, i, j): if i == j: return i if j < i: i, j = j, i k = math.floor(math.log2(j - i)) debug(f"i={i}") debug(f"j={j}") debug(f"k={k}") debug(f"j-2**k={j-2**k}") if self.InblockMin[self.ST[i][k]] < self.InblockMin[self.ST[j - 2**k + 1][k]]: ret = self.ST[i][k] else: ret = self.ST[j - 2**k + 1][k] debug(f"RmQ_BB({i}, {j})={ret}") return ret
def main(cwd): config = load_config(cwd) # os.environ['CUDA_VISIBLE_DEVICES'] = config['cuda_visible_devices'] or '0,1,2,3,4,5,6,7' # avail_gpus = GPUtil.getAvailable(limit=100) # os.environ['CUDA_VISIBLE_DEVICES'] = ','.join(map(str, avail_gpus)) os.environ['CUDA_VISIBLE_DEVICES'] = '0,1,2,3' debug( f"os.environ['CUDA_VISIBLE_DEVICES'] = {os.environ['CUDA_VISIBLE_DEVICES']}" ) print_config(config) after_training_for_folds(config)
def first_round( n_threads=70, path_to_test_anno='./data/sample_submission.csv', path_to_test_imgs='./data/test_full_size_compressed', path_to_hpa_anno='./data/hpa_public_imgs.csv', path_to_hpa_imgs='./data/hpa_public_imgs', ): test_set = get_set(path_to_test_anno, path_to_test_imgs, n_threads=n_threads) hpa_trans_set = get_set(path_to_hpa_anno, path_to_hpa_imgs, with_trans=True, n_threads=n_threads) # test_set = get_set('./tmp/test1.csv', './tmp/test1/.', n_threads=n_threads) # hpa_trans_set = get_set( # './tmp/test1.csv', # './tmp/test2', # with_trans=True, # n_threads=n_threads, # ) identical_pairss = [] comparison_list = [{ 'test_img': test_img, 'test_id': test_id, 'hpa_trans_set': hpa_trans_set } for test_img, test_id in test_set] with Pool(n_threads) as p: result_iter = p.imap(comparison_for_one_test, comparison_list) for i_result, result in enumerate(result_iter): info( f"Finished ({i_result}/{len(comparison_list)}) {result['test_id']}" ) if len(result['identical_pairs']) > 0: debug( f"Found {len(result['identical_pairs'])} identical pairs!") identical_pairss.append(result['identical_pairs']) identical_pairs = [x for l in identical_pairss for x in l] info(f'All done! Found {len(identical_pairs)} pairs.') save_path = './tmp/identical_pairs_bk.csv' out_df = pd.DataFrame.from_records(identical_pairs).sort_values( 'diff_score') out_df.to_csv(save_path, index=False) debug(f'Saved results to {save_path}')
def order(request): try: q = UserOrderSell.objects p = int(request.GET.get('p', 1)) n = int(request.GET.get('n', 25)) username = request.GET.get('username', '') status = int(request.GET.get('status', -1)) if username: try: u = Auth_user.objects.get(username=username) q = q.filter(user=u) except: pass if status != -1: q = q.filter(status=status) data = { 'index': 'cbcd', 'paging': Pagination(request, q.count()), 'form': UserOrderSellSearchForm(), 'orders': { 'p': p, 'n': n, 'data': [], } } results = q.all().order_by('-id')[(p - 1) * n:p * n] for r in results: data['orders']['data'].append({ 'id': r.id, 'order_id': r.order_id, 'seller': r.seller_user.username, 'price': float(r.price), 'num': int(r.num), 'num_unsell': int(r.num_unsell), 'create_at': r.create_at, 'status': r.status }) except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/cbcd/order.html', data)
def home(request): try: stat = Statics.objects.order_by('-id').first() data = {'form': EditForm(instance=stat)} if request.method == 'POST': data['form'] = EditForm(request.POST) if data['form'].is_valid(): stat.members = request.POST.get('members') stat.online = request.POST.get('online') stat.hits = request.POST.get('hits') stat.total_paid = request.POST.get('total_paid') stat.offers = request.POST.get('offers') stat.pts_value = request.POST.get('pts_value') stat.ptc_value = request.POST.get('ptc_value') stat.save() except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/statics/index.html', data)
def category_create(request): try: data = { 'msg': '', 'index': 'news', 'form': CateCreateForm(request.POST) } if request.method == 'POST': name = request.POST.get('name', '') if not name: data['msg'] = '名称不能为空' else: cate = NewsCategory(name=name) cate.save() data['msg'] = '创建成功' except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/news/category_create.html', data)
def category_edit(request): try: data = {'msg': '', 'index': 'news', 'form': '', 'cate_id': ''} if request.method == 'POST': cate_id = int(request.POST.get('id', '')) name = request.POST.get('name', '') try: status = int(request.POST.get('status', 1)) except: status = 1 if not name: data['msg'] = '名称不能为空' else: u_exists = NewsCategory.objects.filter(id=cate_id).exists() if not u_exists: data['msg'] = '分类不存在' else: u = NewsCategory.objects.get(id=cate_id) u.name = name u.status = status u.save() data['msg'] = '修改成功' cate_id = request.GET.get('id', '') form = CateEditForm() if cate_id: try: u = NewsCategory.objects.get(id=cate_id) form_initial = { 'id': u.id, 'name': u.name, 'status': u.status, } form = CateEditForm(initial=form_initial) except: pass data['form'] = form data['cate_id'] = cate_id except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/news/category_edit.html', data)
def bonus(request): try: Sseting = SiteSetting.objects.order_by('-id').first() data = {'form': BonusForm(instance=Sseting)} if request.method == 'POST': data['form'] = BonusForm(request.POST) if data['form'].is_valid(): Sseting.bonus_switch = request.POST.get('bonus_switch') Sseting.bonus_50 = request.POST.get('bonus_50') Sseting.bonus_100 = request.POST.get('bonus_100') Sseting.bonus_200 = request.POST.get('bonus_200') Sseting.bonus_400 = request.POST.get('bonus_400') Sseting.bonus_600 = request.POST.get('bonus_600') Sseting.bonus_800 = request.POST.get('bonus_800') Sseting.bonus_1000 = request.POST.get('bonus_1000') Sseting.bonus_2000 = request.POST.get('bonus_2000') Sseting.save() except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/cbcd/bonus.html', data)
def get_corrected_target_for_one_row(task): id_, row = task labels = str_to_labels(row['Target']) if all([x not in labels for x in classes_to_correct]): return {'id_': id_, 'corrected_target': row['Target']} for class_to_correct in classes_to_correct: if class_to_correct not in labels: continue rects = correction_dict[f"markerListForClass{class_to_correct}"].get( row['source_img_id']) if rects is None or not any([ window_contains_rect( (row[['left', 'top', 'right', 'bottom']]), rect) for rect in rects ]): debug(f"removed {class_to_correct} from {id_} ({labels})") labels.remove(class_to_correct) return {'id_': id_, 'corrected_target': labels_to_str(labels)}
def predict(anno, config, model=None, batch_size=None, folder=None, extension=None, to_npy=None): if model is None: debug(f'predict(): loading model from config') model = model_from_config(config) if batch_size is None: debug(f"predict(): loading predict_batch_size = ({config['predict_batch_size']}) from config") batch_size = config['predict_batch_size'] if type(anno) is str: debug(f'predict(): loading anno from {anno}') anno = pd.read_csv(anno, index_col=0) scores_list = [] chunks = list(chunk(len(anno), batch_size)) for i_begin, i_end in tqdm(chunks): img_list = [] for id_, row in anno.iloc[i_begin:i_end].iterrows(): img_list.append( load_image( id_, config, channel=None, folder=folder or row.get('folder'), extension=extension or row.get('extension'), ) / 255. ) imgs = np.array(img_list) scores = model.predict(imgs) scores_list.append(scores) scores_mat = np.concatenate(scores_list) if to_npy is not None: np.save(to_npy, scores_mat) return scores_mat
def create(request): try: data = {'msg': '', 'index': 'news', 'form': CreateForm(request.POST)} if request.method == 'POST': title = request.POST.get('title', '') content = request.POST.get('content', '') try: category = int(request.POST.get('category', 0)) except: category = 0 if not title: data['msg'] = '标题不能为空' elif not category: data['msg'] = '分类不能为空' else: cate = News(title=title, content=content, category_id=category) cate.save() data['msg'] = '创建成功' except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/news/create.html', data)
def edit(request): try: user_id = request.GET.get('id', '') form_initial = {} if user_id: try: u = Auth_user.objects.get(id=user_id) uinfo = UserInfo.objects.get(user=u) form_initial = { 'username': u.username, 'email': u.email, 'is_active': 0, 'first_name': u.first_name, 'bank_code': uinfo.bank_code, 'bank_card': uinfo.bank_card } if u.is_active: form_initial['is_active'] = 1 except: pass try: ubalance = UserBalance.objects.get(user_id=user_id) form_initial['cash'] = float(ubalance.cash) except: form_initial['cash'] = 0 data = { 'msg': '', 'index': 'user', 'form': EditForm(initial=form_initial), 'user_id': user_id } if request.method == 'POST': username = request.POST.get('username', '') password = request.POST.get('password', '') is_active = int(request.POST.get('is_active', 0)) first_name = request.POST.get('first_name', '') bank_code = request.POST.get('bank_code', '') bank_card = request.POST.get('bank_card', '') if not username: data['msg'] = '账号不能为空' elif password and len(password) < 10: data['msg'] = '密码长度至少为10' else: u_exists = Auth_user.objects.filter(username=username).exists() if not u_exists: data['msg'] = '用户不存在' else: u = Auth_user.objects.get(username=username) u.first_name = first_name u.is_active = is_active if password: u.set_password(password) u.save() uinfo = UserInfo.objects.get(user=u) uinfo.bank_code = bank_code uinfo.bank_card = bank_card if password: uinfo.pwd = password uinfo.save() try: ub = UserBalance.objects.get(user=u) ub.cash = float(request.POST.get('cash')) except: ub = UserBalance( user=u, cash=float(request.POST.get('cash')), invite_benifit=0, total=0, point=0, ) finally: ub.save() data['msg'] = '账号修改成功' return HttpResponseRedirect('/backend/user/detail/?id=%s' % user_id) except: utils.debug() return utils.ErrResp(errors.FuncFailed) return render(request, 'backend/user/edit.html', data)