def switch_permission_lock(request, model_class, action): """权限管理 权限状态切换""" try: if request.method == 'POST' and request.is_ajax(): if action == 'lock': action = 0 elif action == 'un_lock': action = 1 print action print bool(action) pk = int(request.POST['id']) MODEL_DICT[model_class].objects.filter(pk=pk).update(is_active=bool(action)) result = { 'status': 1, 'msg': '%s操作成功' % ('启用' if bool(action) else '禁用'), } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def add_user(request): try: if request.method == 'POST' and request.is_ajax(): print request.POST['username'] print request.POST['password'] User.objects.create_user( username=request.POST['username'], password=request.POST['password'], usertype=request.POST['usertype'], ) result = { 'status': 1, 'msg': '添加成功', } else: result = { 'status': 0, 'msg': '账户添加错误', } except Enterprise, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def switch_lock(request, model_class, action): """公用 锁定 解锁""" try: if request.method == 'POST' and request.is_ajax(): id_list = request.POST['id_list'] is_lock = int(request.POST['is_lock']) if id_list: id_list = json.loads(id_list) kwargs = {} kwargs[action] = bool(is_lock) MODEL_DICT[model_class].objects.filter(pk__in=id_list).update(**kwargs) result = { 'status': 1, # 'msg': '%s操作成功' % ('锁定' if is_lock else '解锁'), 'msg': '操作成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def create_lack_register(request): """添加缺货登记""" try: if request.method == 'POST' and request.is_ajax(): kwargs = {} kwargs['people'] = request.user good_id = int(request.POST['good_id']) flag = LackRegister.objects.filter(good__id=good_id) if flag: result = { 'status': 0, 'msg': '您已登记该物品,无法重复登记!' } else: kwargs['good_id'] = good_id kwargs['note'] = request.POST.get('note', '') LackRegister.objects.create(**kwargs) result = { 'status': 1, 'msg': '缺货登记成功' } except Exception, e: log.error("lack_register,error:%s" % e) result = { 'status': 0, 'msg': str(e) }
def delete_good_category_byid(request, obj_id): """根据id删除商品分类""" try: obj_id = int(obj_id) if request.method == 'POST' and request.is_ajax(): obj = GoodCategory.objects.filter(id=obj_id).first() if obj: children = GoodCategory.objects.filter(path__contains=obj.full_path) if children: result = { 'status': 0, 'msg': '先删除子项', } else: obj.delete() result = { 'status': 1, 'msg': '删除成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def get_modal_byid(request, modal_name, obj_id): """根据id渲染模态对话框""" try: obj_id = int(obj_id) if request.method == 'POST' and request.is_ajax(): model_class, modal_templ = MODAL_DICT[modal_name] obj = model_class.objects.get(pk=obj_id) obj.csrfmiddlewaretoken = request.POST['csrfmiddlewaretoken'] if model_class == User: obj.usertype_choices = USERTYPE_CHOICES # TODO 需要转换为实例方法 by zhongchao 2017/3/20 if model_class == Role: obj.usertype_choices = SettingsType.get_item_list('USERTYPE') if model_class == PaymentMethod: obj.pay_type_choices = PAY_TYPE_CHOICES obj.api_args = json.loads(obj.api_args) if model_class == ShippingMethod: obj.shipping_type_choices = SHIPPING_TYPE_CHOICES return render(request, modal_templ, {'obj': obj}) else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def migrate_EGBALANCE(self): from good.models import Good select_sql = ''' select TOP %s GOODSID, STORNUM from dts.dbo.EGBALANCE; ''' % self.ROWS_TOP delete_sql = 'delete top (%s) from dts.dbo.EGBALANCE;' % self.ROWS_TOP mssql_field_map = { 'external_id': 'GOODSID', 'stock_amount': 'STORNUM', } while True: self.mssql_cursor.execute(select_sql) rows = self.mssql_cursor.fetchall() if not rows: break for row in rows: temp_data = { k: row.get(v) or '' for k, v in mssql_field_map.items() } if temp_data.get('stock_amount'): try: temp_data['stock_amount'] = int( temp_data['stock_amount']) except Exception, e: log.error( 'python manage.py init_ksoa_data migrate_EGBALANCE stock_amount error: %s, stock_amount=%s' % (e, temp_data['stock_amount'])) temp_data['stock_amount'] = None else: temp_data['stock_amount'] = None Good.objects.filter( external_id=temp_data['external_id']).update(**temp_data) self.mssql_cursor.execute(delete_sql) self.mssql_conn.commit()
def upload_file(up_file, file_path): """ @description 上传文件 @param up_file: 待上传文件 @param file_path: 文件存储路径 """ try: # 拼接文件存放路径 roll_file_path = os.path.join(settings.MEDIA_ROOT, file_path) # 获取文件名后缀 file_type = up_file.name.split(".")[-1] # 生成随机字符串加后缀的文件名【新的文件名】 filename = str(uuid.uuid1()) + '.' + file_type # 文件最终存放路径 file_path = roll_file_path + filename # 打开文件流 of = open(file_path, 'wb+') # 向指定路径写入文件 for chunk in up_file.chunks(): of.write(chunk) # 写入内容 of.close() # 关闭连接 # 返回文件上传后存放的路径 return file_path except Exception, e: log.error(">>>>>>>>>>>>>>> 文件上传失败,原因:%s >>>>>>>>>>>>>>>>>>" % e)
def add_shopping_cart(request): try: list_pk = json.loads(request.POST.get('pk', '[]')) if request.method == 'POST' and request.is_ajax(): kwargs = {} kwargs['buyer'] = request.user for good in list_pk: obj = ShoppingCartItem.objects.filter( buyer=request.user).filter(good_id=good["pk"]).first() if obj: obj.quantity = obj.quantity + int(good["num"]) obj.save() else: kwargs['good_id'] = good["pk"] kwargs['quantity'] = good["num"] ShoppingCartItem.objects.update_or_create(**kwargs) result = { 'status': 1, 'msg': '添加成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def update_object_byform(request, form_class): """利用form修改数据对象""" try: if request.method == 'POST' and request.is_ajax(): form_class = FORM_DICT[form_class] model_class = form_class.Meta.model obj = model_class.objects.get(pk=int(request.POST['id'])) form = form_class(request.POST, instance=obj) if form.is_valid(): form.save() result = { 'status': 1, 'msg': '修改成功', } else: result = { 'status': 0, 'msg': '输入参数异常', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def migrate_ENTDOC(self): from dtsauth.models import Enterprise select_sql = ''' select TOP %s ENTID, ENTNAME, TELEPHONE, [ADDRESS], INDUSTRYTYPE, ENTTYPE, BEACTIVE, SYSMASTER, ISFREEZE, ISLEGAL from dts.dbo.ENTDOC; ''' % self.ROWS_TOP delete_sql = 'delete top (%s) from dts.dbo.ENTDOC;' % self.ROWS_TOP mssql_field_map = { 'external_id': 'ENTID', 'name': 'ENTNAME', 'short_name': 'ENTNAME', 'pinyin': 'ENTNAME', 'address': 'ADDRESS', 'operate_mode': 'INDUSTRYTYPE', 'phone': 'TELEPHONE', 'economic_type': 'ENTTYPE', 'is_master': 'SYSMASTER', } while True: self.mssql_cursor.execute(select_sql) rows = self.mssql_cursor.fetchall() if not rows: break data_list = [] for row in rows: temp_data = { k: row.get(v) or '' for k, v in mssql_field_map.items() } if temp_data.get('pinyin'): temp_data['pinyin'] = utils_string.get_pinyin_code( temp_data['pinyin']) if temp_data.get('is_master') == 'Y': temp_data['is_master'] = True else: temp_data['is_master'] = False data_list.append(temp_data) try: with transaction.atomic(): Enterprise.objects.bulk_create( [Enterprise(**data) for data in data_list]) self.mssql_cursor.execute(delete_sql) self.mssql_conn.commit() except Exception, e: log.error( 'python manage.py init_ksoa_data migrate_ENTDOC bulk_create error: %s' % e) for data in data_list: try: Enterprise.objects.update_or_create( external_id=data['external_id'], defaults=data) self.mssql_cursor.execute( "delete from dts.dbo.ENTDOC where ENTID='%s';" % data['external_id']) except Exception, e: log.error( 'python manage.py init_ksoa_data migrate_ENTDOC update_or_create error: %s, external_id=%s' % (e, data['external_id']))
def execute_query_sql_return_tuple(sql): '''执行查询sql,直接返回tuple;限制:1、限于执行查询语句;2、直接返回tuple结果''' try: cursor = connection.cursor() cursor.execute(sql) return cursor.fetchall() except Exception, e: log.error('query tuple error, sql=%s, e=%s' % (sql, e)) return ()
def transit(self): """任务迁移""" if self.process.ended: return False, '该工作流程已经结束' process_state_dict = self.process.get_process_state() task_state = process_state_dict.get(self.name, {}).get("state", None) if task_state is None: log.info('The task is not in order in process<%s>: %s' % (self.process.id, self.name)) return False, '该操作当前不可执行' elif task_state == self.TASK_RUNNIG: log.info('The task has been running in process<%s>: %s' % (self.process.id, self.name)) return False, '该操作已在处理中' elif task_state == self.TASK_SUCCEED: self.turn_in_target_list() return True, '操作已完成' elif task_state == self.TASK_TRANSITED: log.info('The task was transited in process<%s>: %s' % (self.process.id, self.name)) return False, '不能重复执行此操作' elif not self.is_ready(): log.info('The task is not ready in process<%s>: %s' % (self.process.id, self.name)) return False, '该操作尚未准备就绪' else: now_ = datetime.datetime.now() try: if callable(self.run): task_state, msg, org_kwargs = self.run(self) else: task_state, msg, org_kwargs = self.TASK_SUCCEED, '', {} if task_state == self.TASK_SUCCEED: self.turn_in_target_list(org_kwargs) else: self.process.update_process_state(self.name, { "state": task_state, "updated": now_, }) if self.mutex and task_state in [ self.TASK_SUCCEED, self.TASK_RUNNIG ]: self.handle_mutex() return True, msg except Exception, e: self.process.update_process_state(self.name, { "state": self.TASK_FAIL, "updated": now_, }) log.error('This task failed in process<%s>: %s, error: %s' % (self.process.id, self.name, e)) return False, '发生系统错误'
def migrate_GOODSDOC(self): from good.models import Good select_sql = ''' select TOP %s GOODSID, BARCODE, GOODSNAME, GOODSSPEC, MANUFACTURER from dts.dbo.GOODSDOC; ''' % self.ROWS_TOP delete_sql = 'delete top (%s) from dts.dbo.GOODSDOC;' % self.ROWS_TOP mssql_field_map = { 'external_id': 'GOODSID', 'name': 'GOODSNAME', 'trade_name': 'GOODSNAME', 'pinyin': 'GOODSNAME', 'external_spec': 'GOODSSPEC', 'manufacturer': 'MANUFACTURER', 'barcode': 'BARCODE', } while True: self.mssql_cursor.execute(select_sql) rows = self.mssql_cursor.fetchall() if not rows: break data_list = [] for row in rows: temp_data = { k: row.get(v) or '' for k, v in mssql_field_map.items() } temp_data['is_online'] = ONLINE_YES temp_data['online_time'] = datetime.datetime.now() if temp_data.get('pinyin'): temp_data['pinyin'] = utils_string.get_pinyin_code( temp_data['pinyin']) temp_data['pinyin_tn'] = temp_data['pinyin'] data_list.append(temp_data) try: with transaction.atomic(): Good.objects.bulk_create( [Good(**data) for data in data_list]) self.mssql_cursor.execute(delete_sql) self.mssql_conn.commit() except Exception, e: log.error( 'python manage.py init_ksoa_data migrate_GOODSDOC bulk_create error: %s' % e) for data in data_list: try: Good.objects.update_or_create( external_id=data['external_id'], defaults=data) self.mssql_cursor.execute( "delete from dts.dbo.GOODSDOC where GOODSID='%s';" % data['external_id']) except Exception, e: log.error( 'python manage.py init_ksoa_data migrate_GOODSDOC update_or_create error: %s, external_id=%s' % (e, data['external_id']))
def install_custom_model_to_db(custom_model): '''创建动态模型''' try: # 检查表是否已存在 table_name = custom_model._meta.db_table if table_name and is_table_exist(table_name): return True except Exception, e: log.error('check table exist error, table_name=%s, e=%s' % (table_name, e)) return False
def read_txt_file(file_path): '''逐行读取本地txt文本文件''' if not file_path or not os.path.exists(file_path): log.error("file not exist, file_path=%s" % (file_path)) return False try: file_r = open(file_path, 'r') data = file_r.readlines() except Exception, e: log.error("read file error, file_path=%s, e=%s" % (file_path, e)) return False
def perm_check(request, codename): """验证权限""" try: if codename is not None: if request.user.has_perm(codename): log.info('perm_check info: ====》权限已匹配') return True else: log.info('perm_check info: ====》权限没有匹配') return False else: return False except Exception, e: log.error("perm_check raise exception,error:%s" % e) return False
def is_ready(self): """判断任务的前置条件是否都已满足""" try: if self.condition_list: for condition in self.condition_list: if callable(condition): if not condition(self): return False elif not condition: return False return True except Exception, e: log.error( 'Task condition_list error in process<%s>: %s, error: %s' % (self.process.id, self.name, e)) return False
def create_table_by_model(table_suffix, model_class, ref_model_list, engine_type=''): '''根据静态Model、表名后缀、静态Model的关联其它Model创建一个表''' try: # 检查表是否已存在 org_db_table = model_class._meta.db_table table_name = org_db_table + "_" + str(table_suffix) if table_name and is_table_exist(table_name): log.info("table %s already exist" % (table_name)) return True except Exception, e: log.error('check table exist error, table_name=%s, e=%s' % (table_name, e)) return False
def bluk_delete_byids(request, model_class): """根据id删除某个对象""" try: obj_id_list = json.loads(request.POST.get('id_list'), '[]') if obj_id_list and request.method == 'POST' and request.is_ajax(): MODEL_DICT[model_class].objects.filter(id__in=obj_id_list).delete() result = { 'status': 1, 'msg': '删除成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def delete_object_byid(request, model_class, obj_id): """根据id删除某个对象""" try: obj_id = int(obj_id) if request.method == 'POST' and request.is_ajax(): MODEL_DICT[model_class].objects.filter(id=obj_id).delete() result = { 'status': 1, 'msg': '删除成功', } else: raise Exception('异常请求') except ProtectedError, e: log.error(e) result = { 'status': 0, 'msg': '请先删掉关联字段', }
def test_upload_file(request): """测试上传图片""" from .forms import TestUploadFileForm try: if request.method == 'POST' and request.is_ajax(): for photo in request.FILES.getlist('photo'): form = TestUploadFileForm(request.POST, {'photo': photo}) if form.is_valid(): form.save() result = { 'status': 1, 'msg': '上传成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = {'status': 0, 'msg': str(e)}
def delete_info_publish(request, modal_name, obj_id): """根据id删除某个对象""" try: obj_id = int(obj_id) if request.method == 'POST' and request.is_ajax(): with transaction.atomic(): Informations.objects.filter(id=obj_id).delete() result = { 'status': 1, 'msg': '删除成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def delete_consult_feedback(request, obj_id): """根据id删除某个对象""" try: obj_id = int(obj_id) if request.method == 'POST' and request.is_ajax(): with transaction.atomic(): ConsultFeedback.objects.filter(id=obj_id).delete() result = { 'status': 1, 'msg': '删除成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def update_object_bypk(request, model_name, obj_pk): """修改数据对象""" try: if request.method == 'POST' and request.is_ajax(): update_dict = request.POST.dict() update_dict.pop('csrfmiddlewaretoken') MODEL_DICT[model_name].objects.filter(pk=obj_pk).update(**update_dict) result = { 'status': 1, 'msg': '修改成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def verify_enterprise(request, model_class, obj_id): """审核企业""" from django.db.models import F try: obj_id = int(obj_id) if request.method == 'POST' and request.is_ajax(): MODEL_DICT[model_class].objects.filter(id=obj_id).update(is_active=False if F('is_active') else True) result = { 'status': 1, 'msg': '修改成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def switch_bool(request, model_class, obj_id, field): """公用 bool 启用 禁用""" try: if request.method == 'POST' and request.is_ajax(): kwargs = {field: bool(int(request.POST['is_lock']))} p = MODEL_DICT[model_class].objects.filter(pk=obj_id).update(**kwargs) result = { 'status': 1, 'msg': '操作成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def get_info_publish(request, modal_name, obj_id): """根据id渲染info_publish模态对话框""" try: obj_id = int(obj_id) if request.method == 'POST' and request.is_ajax(): obj = Informations.objects.get(pk=obj_id) obj.csrfmiddlewaretoken = request.POST['csrfmiddlewaretoken'] _, modal_templ = MODAL_DICT[modal_name] return render(request, modal_templ, { 'obj': obj }) else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def get_consult_feedback(request, modal_name, obj_id): """根据id渲染consult_feedback模态对话框""" try: obj_id = int(obj_id) replied = None if request.method == 'POST' and request.is_ajax(): obj =ConsultFeedback.objects.filter(pk=obj_id).first() obj.csrfmiddlewaretoken = request.POST['csrfmiddlewaretoken'] _, modal_templ = MODAL_DICT[modal_name] return render(request, modal_templ, { 'obj': obj }) else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }
def delete_favorites(request): #####################################删除收藏############################################################ try: user_pk = request.user.id list_pk = json.loads(request.POST.get('pk', '[]')) if request.method == 'POST' and request.is_ajax(): MyFavorites.objects.filter(pk__in=list_pk, coll_user__pk=user_pk).delete() result = { 'status': 1, 'msg': '删除成功', } else: raise Exception('异常请求') except Exception, e: log.error(e) result = { 'status': 0, 'msg': str(e), }