import time from django import forms from django.core.exceptions import ValidationError from pingcap_sso.models import FXCRMLeads, FXCRMStaffManualSyncLeads from pingcap_sso.lib.user import user_profile_for_marketing class ManualCreateCRMLeadsForm(forms.ModelForm): def clean(self): if self.errors: return if FXCRMStaffManualSyncLeads.objects.filter(user=self.user).exists(): self.add_error('', '这个用户已经创建过 CRM 线索了') self.user_profile = user_profile_for_marketing(self.user) if not self.user_profile['phone']: self.add_error('', '该用户还没有提供手机号, 不能在 CRM 中创建线索') return self.cleaned_data class Meta: model = FXCRMStaffManualSyncLeads fields = ['remark', 'company'] def __init__(self, user, staff, *args, **kwargs): self.user = user self.staff = staff super(ManualCreateCRMLeadsForm, self).__init__(*args, **kwargs) def save(self): user_profile = self.user_profile admin_user_detail_url = f'https://accounts.pingcap.cn/manage#/users/{self.user.username}/info' instance = super(ManualCreateCRMLeadsForm, self).save(commit=False) instance.user = self.user instance.creator = self.staff instance.leads = FXCRMLeads.objects.create( leads_type='r303W021k', # 社区线索 leads_poll_id=FXCRMLeads.LEADS_POLL_CEG, source_code='0z11Swnbp', source_text='AskTUG', primary_source_code='N8n065zgC', primary_source_text='社区', secondary_source_code='e4cky057t', secondary_source_text='网站注册', leads_stage_code='2', leads_stage_text='MQL', mark_mql_at_str=str(int(time.time() * 1000)), crm_remark=f'管理员手动同步(用户详情页 {admin_user_detail_url}), 备注: {instance.remark}', phone=user_profile['phone'], email=user_profile['email'], name=user_profile['name'], address=user_profile['address'], wechat_id=user_profile['wechat_id'], company=instance.company, customer_type_code='02n9P9aO1', customer_type_text='AskTUG', user_id=self.user.openid, username=self.user.username, job_title_code=self.user.job_title_code, job_title_text=self.user.job_title_text, related_user=self.user, remark='管理员手动同步(用户详情页)', crm_creator_openid='FSUID_EE7A00DA91B32217C313554BCDD45793', # 黄漫绅 creator=self.staff ) instance.save()