def list(self, request, *args, **kwargs): response = super().list(request, *args, **kwargs) implementer_list = list( UserService.batch_get_user_by_accountid( settings.AUDIT_USERS).values()) for item in implementer_list: item['email_prefix'] = UserService.get_email_prefix(item['email']) item['name'] = item['name'] response.data['priority_list'] = PriorityEnum.to_seq() response.data['status_list'] = ProcessStatusEnum.to_seq() response.data['clickable_key'] = self.clickable_key return response
def record_log(self, action, request, serializer): """ 记录操作日志 """ log_data = { 'operator': UserService.get_email_prefix(request.user.email), 'operate_time': datetime.datetime.now(), 'operate_type': action } clean_content = {} content = serializer.data model_fields = serializer.Meta.model._fields model_meta = serializer.Meta.model._meta for mf in model_fields: clean_content[mf] = content.get(mf) or '' id_field = model_meta['id_field'] log_data['table_name'] = model_meta.get( 'verbose_name') or model_meta['collection'] log_data['table_id'] = str(content[id_field]) log_data['name'] = clean_content.get('name') or clean_content.get( 'content') or log_data['table_id'] log_data['content'] = json.dumps(clean_content, ensure_ascii=False) log_serializer = OperationLogSerializer(data=log_data) log_serializer.is_valid(raise_exception=True) log_serializer.save()
def get(self, request, *args, **kwargs): email = request.GET.get('email') users = UserService.search_user(email) for user in users: user['email_prefix'] = user['email'].replace( settings.EMAIL_SUFFIX, '') return JsonResponse({'results': users})
def get_user_name(self, user): user_name = user try: ums_info = UserService.query_accountid(user) other_user_name = ums_info.get('name') return other_user_name or user_name except: return user_name
def submitter_render(self): if not self.submitter: return '-' user_info = UserService.batch_get_user_by_email(self.submitter) names = [] for email in self.submitter: name = (user_info.get(email) or {}).get('name') if name: names.append(name) return ','.join(names) or '-'
def _get_auto_data(self, request, *args, **kwargs): """ 填充自动变更的非表单数据, 如表单有对应字段, 以填充的为准 """ auto_data = {} _fields = self.serializer_class.Meta.model._fields if 'submitter' in _fields: auto_data['submitter'] = [ UserService.get_email_prefix(request.user.email) ] return auto_data
def validate_sys(self): """ 验证业务线所有人员离职情况 """ # 下面的所有user都是accountid all_users = self.get_audit_sys_users() not_staff_users = [] for user in all_users: is_staff = UserService.is_staff(user) if not is_staff: not_staff_users.append(user) self.update_risk_users(not_staff_users)
def convert_user_to_id(self, users: list): user_account_ids = [] self.id2user = {} for user in users: user = str(user) accountid = user if not user.isdigit(): ums_info = UserService.get_user_by_email(user) or {} accountid = ums_info.get('accountid') or None if accountid: self.id2user[accountid] = user if accountid: user_account_ids.append(accountid) return user_account_ids
def record_task_risk_users(self, task, user_ids): """记录风险用户""" if not user_ids: return step = 50 emails = [] for _ids in split_large_collection(user_ids, step): id2emails = UserService.batch_id_to_email(_ids) emails.extend(id2emails.values()) clear_emails = [get_email_prefix(em) for em in emails] nonnormal_user_names = self.get_nonnormal_names(user_ids) user_ids += nonnormal_user_names clear_emails += nonnormal_user_names JobTransferRiskModel.save_risk(task, user_ids, clear_emails)
def batch_send_to_persons(cls, text, to_list): emails = UserService.batch_id_to_email(to_list, clear_email=False) cls.send_mail(emails, cls.SUB, text)