def clean(self): cleaned_data = super(AccountModifyForm, self).clean() # 통신사 선택 체크 companyTp = self.instance.companyTp.comCd if companyTp == 'S0004D': # 딜러점일 경우 if is_empty(self.request.POST.getlist("networkCompanyIdD")): self.add_error('networkCompanyIdD', _('통신사를 선택해 주세요.')) elif companyTp == 'S0004A': # 대리점일 경우 if is_empty(self.request.POST.get("networkCompanyIdA")): self.add_error('networkCompanyIdA', _('통신사를 선택해 주세요.')) elif companyTp == 'S0004C': # 유선사업일 경우 if is_empty(self.request.POST.getlist("networkCompanyIdC")): self.add_error('networkCompanyIdC', _('통신사를 선택해 주세요.'))
def masking_id(data): ''' 아이디 마스킹 처리 ''' if not is_empty(data) and len(data) > 0: data = data[:2].ljust(4, "*") + data[-2:] return data
def masking_tel_no(data=None): ''' 전화번호 마스킹 처리 ''' if not is_empty(data) and len(data) > 0: data = data[:1].ljust(4, "*") return data
def masking_name(data): ''' 이름 마스킹 처리 ''' if not is_empty(data) and len(data) > 0: data = data[:1].ljust(len(data), "*") return data
def makeJsonDump(result=True, resultMessage=None, form=None, resultData=None, maskYn=False, maskFields=None): ''' json결과 세팅 ''' jsonData = {} resultCode = "OK" if result else "NG" errorItem = "" # From 데이터가 있는 경우 if form is not None: if len(form.errors) == 0: resultCode = "OK" else: errorItem = list(form.errors.keys())[0] resultMessage = form[errorItem].errors.as_text().replace( "* ", "\n") resultCode = "NG" # 데이터 마스킹 처리 if not is_empty(resultData) and maskYn and not is_empty(maskFields): for data in resultData: for keyField, valType in maskFields.items(): data[keyField] = masking_data(data[keyField], valType) # 결과 코드 세팅 jsonData['resultCode'] = resultCode jsonData[ 'resultMessage'] = resultMessage if resultMessage is not None else "" jsonData['resultData'] = resultData if resultData is not None else {} jsonData['errorItem'] = errorItem jsonDumps = json.dumps( jsonData, default=jsonDefault, indent=2, ) # Json 데이터 확인 if settings.DEBUG: print(jsonDumps) return jsonDumps
def masking_data(data=None, maskType=None): ''' 데이터 마스킹 처리 ''' if is_empty(data) or is_empty(maskType): return data if maskType == "T": # 전화번호 data = masking_tel_no(data) elif maskType == "N": # 이름 data = masking_name(data) elif maskType == "I": # 아이디 data = masking_id(data) else: pass return data
def clean(self): cleaned_data = super(SysAppreqRegistForm, self).clean() # 사용가능한 ID인지 체크 if not isUsableId(cleaned_data.get('userId')): self.add_error('userId', _('사용하실 수 없는 아이디입니다.')) # 비밀번호 & 비밀번호 확인 일치 여부 체크 password = cleaned_data.get('password') passwordChk = cleaned_data.get('passwordChk') if password != passwordChk: self.add_error('password', _('비밀번호확인과 일치하지 않습니다.')) # 통신사 선택 체크 companyTp = self.request.POST.get('companyTp') if companyTp == 'S0004D': # 딜러점일 경우 if is_empty(self.request.POST.getlist("networkCompanyIdD")): self.add_error('networkCompanyIdD', _('통신사를 선택해 주세요.')) elif companyTp == 'S0004A': # 대리점일 경우 if is_empty(self.request.POST.get("networkCompanyIdA")): self.add_error('networkCompanyIdA', _('통신사를 선택해 주세요.')) elif companyTp == 'S0004C': # 유선사업일 경우 if is_empty(self.request.POST.getlist("networkCompanyIdC")): self.add_error('networkCompanyIdC', _('통신사를 선택해 주세요.'))
def accountmanJsonModify(request): ''' 거래처정보 수정 요청처리 ''' userAuth = request.user.userAuth_id # 사용자 권한 코드 if userAuth in [ "S0001M", "S0001C", "S0001A", ]: # 시스템관리자, 대표, 총괄만 가능 resultData = {} # 수정할 데이터 획득 accountInfo = SysCompany.objects.for_account( companyId=request.user.shopId.companyId, realYn=False, # 실제 매장은 수정대상이 아님 ).get(companyId__exact=request.POST.get("accountId")) # 거래처정보 수정 폼 accountModifyForm = AccountModifyForm( request.POST, instance=accountInfo, request=request, ) # 데이터 검증 후 저장 if accountModifyForm.is_valid(): accountModifyForm.save() # 거래처 연결 사용여부 저장 comapnyAccount = SysCompanyAccount.objects.for_company( request.user.shopId.companyId).get( accountId=accountInfo.companyId, ) comapnyAccount.useYn = not is_empty(request.POST.get("useYn")) comapnyAccount.modId = request.user comapnyAccount.save() return HttpResponse( makeJsonDump( form=accountModifyForm, resultMessage="수정되었습니다.", resultData=resultData, ), content_type="application/json", ) else: raise PermissionDenied()
def save(self, commit=True): cleaned_data = super(StaffModifyForm, self).clean() instanceStaffModify = super(StaffModifyForm, self).save(commit=False) instanceStaffModify.connLimit = "".join( self.request.POST.getlist("connLimit")) # 접속제한 # 비밀번호가 입력되었을 경우 if not is_empty(self.request.POST.get("password")): instanceStaffModify.password = make_password( self.request.POST.get("password")) # 현재사용매장 세팅 instanceStaffModify.shopId = cleaned_data.get("orgShopId") instanceStaffModify.modId = self.request.user # 수정자ID if commit: instanceStaffModify.save() return instanceStaffModify
def accountmanJsonRegist(request): ''' 거래처정보 등록 요청처리 ''' userAuth = request.user.userAuth_id # 사용자 권한 코드 if userAuth in ["S0001M", "S0001C", "S0001A"]: # 시스템관리자, 대표, 총괄만 가능 resultData = {} # 거래처정보 등록 폼 accountRegistForm = AccountRegistForm( request.POST, request=request, ) # 거래처 정보 등록 if accountRegistForm.is_valid(): # 거래처 회사 등록 accountCompany = accountRegistForm.save() # 거래처 연결 등록 SysCompanyAccount.objects.create( companyId=request.user.shopId.companyId, accountId=accountCompany, useYn=not is_empty(request.POST.get("useYn")), regId=request.user, modId=request.user, ) return HttpResponse(makeJsonDump( form=accountRegistForm, resultMessage="등록되었습니다.", resultData=resultData, ), content_type="application/json") else: raise PermissionDenied()
def accountmanJsonList(request): ''' 환경설정 > 거래처관리 : 리스트 데이터 Json ''' userAuth = request.user.userAuth_id # 사용자 권한 코드 if userAuth in ["S0001M", "S0001C", "S0001A"]: # 시스템관리자, 대표, 총괄만 가능 # 검색조건(Parameter) sUseYn = request.POST.get("sUseYn") sCompanyTp = request.POST.get("sCompanyTp") sAccountNm = request.POST.get("sAccountNm") # Query qry = Q() #################### # 검색 조건 #################### if not is_empty(sUseYn): # 사용여부 qry &= Q(useYn__exact=sUseYn) qry &= Q(accountId__companyTp__comCd__contains=sCompanyTp) # 거래처구분 qry &= Q(accountId__companyNm__contains=sAccountNm) # 거래처명 accountInfos = SysCompanyAccount.objects.for_company( request.user.shopId.companyId) accountInfos = accountInfos.filter(qry).annotate( accountNm=F('accountId__companyNm'), # 거래처명 companyTp=F('accountId__companyTp'), # 거래처구분 companyTpNm=F('accountId__companyTp__comNm'), # 거래처구분명 telNo1=F('accountId__telNo1'), # 거래처전화1 telNo2=F('accountId__telNo2'), # 거래처전화2 telNo3=F('accountId__telNo3'), # 거래처전화3 faxNo1=F('accountId__faxNo1'), # 거래처Fax1 faxNo2=F('accountId__faxNo2'), # 거래처Fax2 faxNo3=F('accountId__faxNo3'), # 거래처Fax3 cellNo1=F('accountId__cellNo1'), # 거래처담당자휴대폰1 cellNo2=F('accountId__cellNo2'), # 거래처담당자휴대폰2 cellNo3=F('accountId__cellNo3'), # 거래처담당자휴대폰3 addr1=F('accountId__addr1'), # 거래처주소1 addr2=F('accountId__addr2'), # 거래처주소2 realYn=F('accountId__realYn'), # 시스템사용 실 거래처 여부 networkCompanyId=F('accountId__networkCompanyId'), # 망통신사 chargerNm=F('accountId__chargerNm'), # 담당자명 ).order_by( "-useYn", "accountNm", ).values( "id", "companyId", "accountId", "accountNm", "companyTp", "companyTpNm", "addr1", "addr2", "useYn", "cellNo1", "cellNo2", "cellNo3", "telNo1", "telNo2", "telNo3", "faxNo1", "faxNo2", "faxNo3", "realYn", "networkCompanyId", "chargerNm", "regDt", "regId", "modDt", "modId", ) return HttpResponse( makeJsonDump(resultData=list(accountInfos), ), content_type="application/json", ) else: raise PermissionDenied()
def shopmanJsonList(request): ''' 환경설정 > 매장관리 : 리스트 데이터 Json ''' userAuth = request.user.userAuth_id # 사용자 권한 코드 if userAuth in ["S0001M", "S0001C", "S0001A"]: # 시스템관리자, 대표, 총괄만 가능 # 검색조건(Parameter) sUseYn = request.POST.get("sUseYn") sShopNm = request.POST.get("sShopNm") # Query qry = Q() #################### # 검색 조건 #################### if not is_empty(sUseYn): # 사용여부 qry &= Q(useYn__exact=sUseYn) if not is_empty(sShopNm): # 매장명 qry = Q(shopNm__exact=sShopNm) shopInfos = SysShop.objects.for_company( companyId=request.user.orgShopId.companyId).filter(qry).annotate( staffCnt=Count("r_system_sysuser_org_shop_id"), staffCntUseY=Count( Case( When(r_system_sysuser_org_shop_id__useYn__exact=True, then=1), output_field=IntegerField(), )), staffCntUseN=Count( Case( When(r_system_sysuser_org_shop_id__useYn__exact=False, then=1), output_field=IntegerField(), )), ).order_by("-useYn", ).values( "shopId", "shopNm", "zipCd", "addr1", "addr2", "useYn", "cellNo1", "cellNo2", "cellNo3", "telNo1", "telNo2", "telNo3", "faxNo1", "faxNo2", "faxNo3", "mainYn", "staffCnt", "staffCntUseY", "staffCntUseN", "regDt", "regId", "modDt", "modId", ) return HttpResponse( makeJsonDump(resultData=list(shopInfos), maskYn=is_masked_data(request.user), maskFields={ "cellNo2": "T", }), content_type="application/json", ) else: raise PermissionDenied()
def staffmanJsonList(request): ''' 환경설정 > 직원관리 : 리스트 데이터 Json ''' userAuth = request.user.userAuth_id # 사용자 권한 코드 # 시스템관리자, 대표, 총괄, 점장만 가능 if userAuth in ["S0001M", "S0001C", "S0001A", "S0001T"]: # 검색조건(Parameter) sUseYn = request.POST.get("sUseYn") sOrgShopId = request.POST.get("sOrgShopId") sUserNm = request.POST.get("sUserNm") sUserId = request.POST.get("sUserId") sUserAuth = request.POST.get("sUserAuth") # Query qry = Q() #################### # 검색 조건 #################### if not is_empty(sUseYn): # 사용여부 qry &= Q(useYn__exact=sUseYn) if not is_empty(sOrgShopId): # 검색 매장아이디가 있을 경우 qry &= Q(orgShopId__exact=sOrgShopId) qry &= Q(userNm__contains=sUserNm) # 직원명 qry &= Q(userId__contains=sUserId) # 직원아이디 qry &= Q(userAuth__comCd__contains=sUserAuth) # 직원권한 #################### # 제외 조건 #################### # Exclude Query qryEx = Q() if userAuth not in ["S0001M", "S0001C", "S0001A"]: # 시스템관리자, 대표, 총괄이 아닐 경우 팀장 이하만 조회 qryEx &= Q(userAuth__in=["S0001M", "S0001C", "S0001A"]) elif userAuth not in ["S0001M", "S0001C"]: # 시스템관리자, 대표가 아닐 경우 총괄 이하만 조회 qryEx &= Q(userAuth__in=["S0001M", "S0001C"]) elif userAuth not in ["S0001M"]: # 시스템관리자 아닐 경우 대표 이하만 조회 qryEx &= Q(userAuth__in=["S0001M"]) #################### # 조회 #################### staffInfos = None if userAuth == "S0001T": # 점장일 경우 staffInfos = SysUser.objects.for_shop( orgShopId=request.user.orgShopId) else: staffInfos = SysUser.objects.for_company( companyId=request.user.orgShopId.companyId) staffInfos = staffInfos.filter(qry).exclude(qryEx).annotate( shopNm=F('shopId__shopNm'), # 매장명 orgShopNm=F('orgShopId__shopNm'), # 소속매장명 companyNm=F('shopId__companyId__companyNm'), # 회사명 userAuthNm=F('userAuth__comNm'), # 권한명 regNm=F('regId__userNm'), # 등록자명 modNm=F('modId__userNm'), # 수정자명 lastLogin=F('last_login'), # 마지막 로그인 일시 authSeq=F('userAuth__ordSeq'), # 권한정렬순서 ).order_by( "-useYn", "orgShopId", "authSeq", "userNm", ).values( "useYn", "shopNm", "orgShopNm", "userAuth", "userAuthNm", "userNm", "userId", "telNo1", "telNo2", "telNo3", "cellNo1", "cellNo2", "cellNo3", "addr1", "connLimit", "loginCnt", "lastLogin", "regDt", "companyNm", "email", "authSeq", ) return HttpResponse( makeJsonDump(resultData=list(staffInfos), maskYn=is_masked_data(request.user), maskFields={ "cellNo2": "T", "telNo2": "T", "userId": "I", }), content_type="application/json", ) else: raise PermissionDenied()