Beispiel #1
0
    def send2workwechat(self):
        if not self.pic:
            myLogger.error('No pic found')
            return False, 'No pic found'

        if not self.corp:
            myLogger.error('No corp info')
            return False, 'No corp info'

        try:
            agent = self.corp.apps.all().get(name=AGENT_NAME)
        except CorpApp.DoesNotExist:
            myLogger.error('Corp [{0}] does NOT have agent'.format(
                self.corp.name))
            return False, 'Corp [{0}] does NOT have agent'.format(
                self.corp.name)

        wechat = WorkWechat(agent)
        filepath = self.pic.path
        filename = os.path.basename(filepath)
        content_type = mimetypes.guess_type(filepath)[0]
        with open(filepath, 'rb') as filedata:
            media_file = (filename, filedata, content_type)
            status, res = wechat.upload_image(media_file)
            if not status:
                myLogger.error(res.get('errmsg'))
                return False, res.get('errmsg')

            myLogger.info(res)
            self.wechat_url = res.get('url')
            self.save()
            return True, ''
Beispiel #2
0
    def sync(self, request):
        result = {'result': 'FAIL', 'message': '', 'code': 20000}
        corpid = request.data.get('corpid')
        try:
            corp = Corporation.objects.get(id=corpid)
        except Corporation.DoesNotExist:
            myLogger.error('公司[{0}]不存在'.format(corpid))
            result['message'] = '公司[{0}]不存在'.format(corpid)
            return Response(result)

        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            myLogger.error('应用获取失败')
            result['message'] = '应用获取失败'
            return Response(result)

        wechat = WorkWechat(myapp)
        wechat = WorkWechat(myapp)
        status, res = wechat.get_groupchat_list()
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        groupchat_list = res.get('group_chat_list')
        for g in groupchat_list:
            chat_id = g.get('chat_id')
            chat_status = g.get('status')

            # Fetch the detail of the groupchat
            status, res = wechat.get_groupchat_detail(chat_id)
            if not status:
                myLogger.error(
                    'Error in fetch the groupchat detail: {0}'.format(
                        res.get('errmsg')))

            chat_detail = res.get('group_chat')
            a_chat, created = GroupChat.objects.get_or_create(corp=corp,
                                                              chat_id=chat_id)
            a_chat.name = chat_detail.get('name')
            a_chat.owner = chat_detail.get('owner')
            a_chat.create_time = chat_detail.get('create_time')
            a_chat.notice = chat_detail.get('notice', '')
            a_chat.members = chat_detail.get('member_list')
            a_chat.status = chat_status
            a_chat.save()

        result['result'] = 'OK'
        return Response(result)
Beispiel #3
0
    def destroy(self, request, *args, **kwargs):
        result = {'result': 'FAIL', 'message': '', 'code': 20000}
        instance = self.get_object()
        try:
            myapp = CorpApp.objects.get(corp=instance.taggroup.corp,
                                        agent_id='crm')
        except CorpApp.DoesNotExist:
            myLogger.debug('Failed to delete the tag: [{0}]'.format(
                instance.tagname))
            result['message'] = 'Failed to delete the tag: [{0}]'.format(
                instance.tagname)
            return Response(result)

        status, res = WorkWechat(myapp).delete_corp_tag([instance.tagid])
        if not status:
            myLogger.debug(res.get('errmsg'))
            result['message'] = res.get('errmsg')
            return Response(result)
        else:
            myLogger.debug('Successfully deleted the tag: [{0}]'.format(
                instance.tagname))

        tgroup = instance.taggroup
        instance.delete()

        # If all the tags under the group were deleted, delete the taggroup
        if tgroup.tags.count() == 0:
            tgroup.delete()

        result['result'] = 'OK'
        return Response(result)
Beispiel #4
0
    def get_tag_users(self, request):
        result = {'result': 'FAIL', 'message': ''}
        corpid = request.data.get('corpid')
        try:
            corp = Corporation.objects.get(id=corpid)
        except Corporation.DoesNotExist:
            myLogger.error('公司[{0}]不存在'.format(corpid))
            result['message'] = '公司[{0}]不存在'.format(corpid)
            return Response(result)

        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            myLogger.error('应用获取失败')
            result['message'] = '应用获取失败'
            return Response(result)

        tagid = request.data.get('tagid')
        status, res = WorkWechat(myapp).get_user_from_tag(tagid)
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        result['result'] = 'OK'
        result['tagname'] = res.get('tagname')
        result['userlist'] = res.get('userlist')
        result['partylist'] = res.get('partylist')

        return Response(result)
Beispiel #5
0
    def update(self, instance, validated_data):

        remark = validated_data.get('remark', instance.remark)
        description = validated_data.get('description', instance.description)
        remark_corp_name = validated_data.get('remark_corp_name', instance.description)
        remark_mobiles = validated_data.get('remark_mobiles', instance.remark_mobiles)

        myLogger.debug('rms: {0}'.format(remark_mobiles))
        try:
            myapp = CorpApp.objects.get(corp=instance.member.corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('APP信息获取失败')

        status, res = WorkWechat(myapp).update_customer_remark(instance.member.userid,
                                                               instance.customer.external_userid,
                                                               remark=remark,
                                                               description=description,
                                                               remark_company=remark_corp_name,
                                                               remark_mobiles=json.loads(remark_mobiles))
        myLogger.debug('{0}:{1}'.format(status, res))
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        instance.remark = remark
        instance.description = description
        instance.remark_corp_name = remark_corp_name
        instance.remark_mobiles = remark_mobiles
        instance.save()

        return instance
Beispiel #6
0
    def update(self, instance, validated_data):
        try:
            myapp = CorpApp.objects.get(corp=instance.corp, agent_id='contact')
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('通讯录APP信息获取失败')

        name = validated_data.get('name', instance.name)
        #name_en = validated_data.get('name_en', instance.name_en)
        parent = validated_data.get('parent', instance.parent)
        order = validated_data.get('order', instance.order)

        status, res = WorkWechat(myapp).update_department(
            instance.department_id,
            name=name,
            parentid=parent.department_id,
            order=order)
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        instance.name = name
        instance.parent = parent
        instance.order = order
        instance.save()

        return instance
Beispiel #7
0
    def create(self, validated_data):
        corp = validated_data.get('corp')
        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id='contact')
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('通讯录APP信息获取失败')

        parent = validated_data.get('parent')
        order = validated_data.get('order')
        if parent:
            parentid = parent.department_id
        else:
            parentid = 1

        status, res = WorkWechat(myapp).create_department(
            validated_data.get('name'), parentid, order)
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        myLogger.info('Successfully created the department: {0}'.format(
            validated_data.get('name')))
        department_id = res.get('id')

        department = Department(corp=validated_data.get('corp'),
                                name=validated_data.get('name'),
                                department_id=department_id,
                                parent=parent,
                                order=order)
        department.save()
        return department
Beispiel #8
0
    def create(self, validated_data):
        corp = validated_data.get('corp')
        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('APP信息获取失败')
        wechat = WorkWechat(myapp)

        status, res = wechat.add_contact_way(
            userid_li=validated_data.get('user', []),
            party_li=validated_data.get('party', []),
            type=validated_data.get('type', 2),
            scene=validated_data.get('scene', 2),
            style=validated_data.get('style', 1),
            remark=validated_data.get('remark', ''),
            skip_verify=validated_data.get('skip_verify', True),
            state=validated_data.get('state', '')
        )
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        config_id = res.get('config_id')
        myLogger.info('Successfully created the contactme: {0}'.format(config_id))

        a_contactme = ContactMe(corp=corp,
                                config_id=config_id,
                                user=validated_data.get('user', []),
                                party=validated_data.get('party', []),
                                type=validated_data.get('type', 2),
                                scene=validated_data.get('scene', 2),
                                style=validated_data.get('style', 1),
                                remark=validated_data.get('remark', ''),
                                skip_verify=validated_data.get('skip_verify', True),
                                state=validated_data.get('state', ''),
                                tags=validated_data.get('tags', []),
                                welcome_code=validated_data.get('welcome_code', {}))

        status, res = wechat.get_contact_way(config_id)
        if not status:
            myLogger.error('Error in fetching the info of the contactme[{0}]: {1}'.format(config_id, res.get('errmsg')))
        else:
            a_contactme.qr_code = res.get('contact_way').get('qr_code', '')

        a_contactme.save()

        return a_contactme
Beispiel #9
0
    def update(self, instance, validated_data):
        try:
            myapp = CorpApp.objects.get(corp=instance.corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('APP信息获取失败')

        remark = validated_data.get('remark', instance.remark)
        skip_verify = validated_data.get('skip_verify', instance.skip_verify)
        style = validated_data.get('style', instance.style)
        state = validated_data.get('state', instance.state)
        user = validated_data.get('user', instance.user)
        party = validated_data.get('party', instance.party)
        tags = validated_data.get('tags', instance.tags)
        welcome_code = validated_data.get('welcome_code', instance.welcome_code)

        wechat = WorkWechat(myapp)
        status, res = wechat.update_contact_way(instance.config_id,
                                                remark=remark,
                                                skip_verify=skip_verify,
                                                style=style,
                                                state=state,
                                                user=user,
                                                party=party)
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        instance.remark = remark
        instance.skip_verify = skip_verify
        instance.style = style
        instance.state = state
        instance.user = user
        instance.party = party
        instance.tags = tags
        instance.welcome_code = welcome_code

        status, res = wechat.get_contact_way(instance.config_id)
        if not status:
            myLogger.error('Error in fetching the info of the contactme[{0}]: {1}'.format(instance.config_id, res.get('errmsg')))
        else:
            instance.qr_code = res.get('contact_way').get('qr_code', '')

        instance.save()

        return instance
Beispiel #10
0
    def sync(self, request):
        result = {'result': 'FAIL', 'message': '', 'code': 20000}
        corpid = request.data.get('corpid')
        try:
            corp = Corporation.objects.get(id=corpid)
        except Corporation.DoesNotExist:
            myLogger.error('公司[{0}]不存在'.format(corpid))
            result['message'] = '公司[{0}]不存在'.format(corpid)
            return Response(result)

        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id='crm')
        except CorpApp.DoesNotExist:
            myLogger.error('应用获取失败')
            result['message'] = '应用获取失败'
            return Response(result)

        wechat = WorkWechat(myapp)
        status, res = wechat.get_corp_tag_list()
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        tag_groups = res.get('tag_group')
        for g in tag_groups:
            taggroup, created = TagGroup.objects.get_or_create(
                corp=corp, groupname=g.get('group_name'))
            taggroup.groupid = g.get('group_id')
            taggroup.create_time = g.get('create_time')
            taggroup.order = g.get('order')
            taggroup.save()

            tags = g.get('tag')
            for t in tags:
                tag, created = Tag.objects.get_or_create(taggroup=taggroup,
                                                         tagname=t.get('name'))
                tag.tagid = t.get('id')
                tag.create_time = t.get('create_time')
                tag.order = t.get('order')
                tag.save()

        result['result'] = 'OK'
        return Response(result)
Beispiel #11
0
    def mark_tag(self, request, pk=None):
        result = {'result': 'FAIL', 'message': '', 'code': 20000}
        instance = self.get_object()

        try:
            myapp = CorpApp.objects.get(corp=instance.member.corp,
                                        agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            result['message'] = '应用获取失败'
            return Response(result)

        tags = request.data.get('tags', [])
        isadd = request.data.get('isadd', '0')

        wechat = WorkWechat(myapp)
        if isadd == '0':
            status, res = wechat.mark_tag(instance.member.userid,
                                          instance.customer.external_userid,
                                          remove_tag=tags)
        else:
            status, res = wechat.mark_tag(instance.member.userid,
                                          instance.customer.external_userid,
                                          add_tag=tags)

        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        status, res = wechat.get_customer_detail(
            instance.customer.external_userid)
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        follow_user_li = res.get('follow_user')
        for f in follow_user_li:
            if f.get('userid') == instance.member.userid:
                instance.tags = json.dumps(f.get('tags'))
                instance.save()
                result['result'] = 'OK'
                return Response(result)
Beispiel #12
0
    def perform_destroy(self, instance):
        try:
            myapp = CorpApp.objects.get(corp=instance.corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            myLogger.debug('Failed to find the app')
            return

        status, res = WorkWechat(myapp).delete_tag(instance.tagid)
        if not status:
            myLogger.debug(res.get('errmsg'))
            return
        else:
            myLogger.debug('Successfully deleted the tag: [{0}, {1}]'.format(
                instance.tagname, instance.tagid))

        instance.delete()
Beispiel #13
0
    def perform_destroy(self, instance):
        try:
            myapp = CorpApp.objects.get(corp=instance.corp, agent_id='contact')
        except CorpApp.DoesNotExist:
            myLogger.debug('Failed to delete the department: [{0}, {1}]'.format(instance.name, instance.department_id))
            return

        status, res = WorkWechat(myapp).delete_department(instance.department_id)
        if not status:
            myLogger.debug(res.get('errmsg'))
            return
        else:
            myLogger.debug('Successfully deleted the department: [{0}, {1}]'.format(
                instance.name, instance.department_id))

        instance.delete()
Beispiel #14
0
    def update(self, instance, validated_data):
        corp = validated_data.get('corp')
        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('APP信息获取失败')

        tagname = validated_data.get('tagname', instance.tagname)

        status, res = WorkWechat(myapp).update_tag(instance.tagid, tagname)
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        instance.tagname = tagname
        instance.save()

        return instance
Beispiel #15
0
    def perform_destroy(self, instance):
        try:
            myapp = CorpApp.objects.get(corp=instance.corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            myLogger.debug('Failed to delete the contactme: [{0}]'.format(
                instance.config_id))
            return

        status, res = WorkWechat(myapp).del_contact_way(instance.config_id)
        if not status:
            myLogger.error(res.get('errmsg'))
            raise ValidationError(res.get('errmsg'))
        else:
            myLogger.debug('Successfully deleted the contactme: [{0}]'.format(
                instance.config_ids))

        instance.delete()
Beispiel #16
0
    def sync_members(self, request):
        result = {'result': 'FAIL', 'message': ''}
        corpid = request.data.get('corpid')
        try:
            corp = Corporation.objects.get(id=corpid)
        except Corporation.DoesNotExist:
            myLogger.error('公司[{0}]不存在'.format(corpid))
            result['message'] = '公司[{0}]不存在'.format(corpid)
            return Response(result)

        try:
            contactapp = CorpApp.objects.get(corp=corp, agent_id='contact')
        except CorpApp.DoesNotExist:
            myLogger.error('通讯录应用获取失败')
            result['message'] = '通讯录应用获取失败'
            return Response(result)

        status, res = WorkWechat(contactapp).get_users_in_department_detail(request.data.get('departmentid'),
                                                                            fetch_child=1)
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        for u in res.get('userlist'):
            myLogger.debug(u)
            myLogger.debug(type(u))
            m, created = Member.objects.get_or_create(corp=corp, userid=u.get('userid'))
            m.naruto = uuid.uuid3(uuid.NAMESPACE_URL, m.userid)
            m.name = u.get('name')
            m.position = u.get('position')
            m.mobile = u.get('mobile')
            m.gender = u.get('gender')
            m.email = u.get('email')
            m.avatar = u.get('avatar')
            m.status = u.get('status')
            m.enable = u.get('enable')
            m.telephone = u.get('telephone')
            m.qr_code = u.get('qr_code')
            m.alias = u.get('alias')
            m.thumb_avatar = u.get('thumb_avatar')
            m.save()

        result['result'] = 'OK'
        return Response(result)
Beispiel #17
0
    def update(self, instance, validated_data):
        corp = instance.taggroup.corp
        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id='crm')
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('APP信息获取失败')

        tagname = validated_data.get('tagname', instance.tagname)
        order = validated_data.get('order', instance.order)

        status, res = WorkWechat(myapp).update_corp_tag(instance.tagid, tagname, order)
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        instance.tagname = tagname
        instance.order = order
        instance.save()

        return instance
Beispiel #18
0
    def create(self, validated_data):
        corp = validated_data.get('corp')
        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('APP信息获取失败')

        tagname = validated_data.get('tagname')
        status, res = WorkWechat(myapp).create_tag(tagname)
        if not status:
            raise serializers.ValidationError(res.get("errmsg"))

        myLogger.info('Successfully created the tag: {0}'.format(
            validated_data.get('tagname')))
        tagid = res.get('tagid')

        tag = Tag(corp=corp,
                  tagname=validated_data.get('tagname'),
                  tagid=tagid)
        tag.save()

        return tag
Beispiel #19
0
    def create(self, validated_data):
        corpid = validated_data.get('corpid', 1)
        try:
            corp = Corporation.objects.get(id=corpid)
        except Corporation.DoesNotExist:
            raise serializers.ValidationError('企业{0}信息获取失败'.format(corpid))

        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id='crm')
        except CorpApp.DoesNotExist:
            raise serializers.ValidationError('APP信息获取失败')

        group_name = validated_data.get('group_name')
        tagname = validated_data.get('tagname')
        status, res = WorkWechat(myapp).create_corp_tag(group_name=group_name, tagname_li=[tagname])
        if not status:
            myLogger.error(res.get('errmsg'))
            raise serializers.ValidationError(res.get("errmsg"))

        myLogger.info('Successfully created the tag: {0} under group: {1}'.format(tagname, group_name))
        group_res = res.get('tag_group')

        taggroup, created = TagGroup.objects.get_or_create(corp=corp, groupname=group_name)
        if created:
            taggroup.groupid = group_res.get('group_id')
            taggroup.create_time = group_res.get('create_time')
            taggroup.order = group_res.get('order')
            taggroup.save()

        created_tag = group_res.get('tag')[0]
        tag, created = Tag.objects.get_or_create(taggroup=taggroup, tagname=tagname)
        tag.tagid = created_tag.get('id')
        tag.create_time = created_tag.get('create_time')
        tag.order = created_tag.get('order')
        tag.save()

        return tag
Beispiel #20
0
    def post(self, request):
        sToken = "mLOLPDZdSVqAMCxFEFu7DRBeU7HK"
        sEncodingAESKey = "GrVwDhSRfY4k2tjfVwcmjd3aqcAawbNsHqVYk3MQeNM"
        sCorpID = "wwcfaf880742304045"
        corp = 1

        wechat = None
        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id='crm')
            wechat = WorkWechat(myapp)
        except CorpApp.DoesNotExist:
            myLogger.error(
                'Corp:[{0}], Agent:[crm] does NOT exist'.format(corp))
        wxcpt = WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID)

        params = request.GET
        sReqMsgSig = params.get('msg_signature')
        sReqTimeStamp = params.get('timestamp')
        sReqNonce = params.get('nonce')
        myLogger.debug('{0}, {1}, {2}'.format(sReqMsgSig, sReqTimeStamp,
                                              sReqNonce))
        myLogger.debug('body:{0}'.format(request.body))
        sReqData = request.body
        ret, sMsg = wxcpt.DecryptMsg(sReqData, sReqMsgSig, sReqTimeStamp,
                                     sReqNonce)
        if ret:
            myLogger.error("ERR: DecryptMsg ret: {0}".format(ret))
            return HttpResponse('ERR: VerifyURL ret: {0}'.format(ret))

        myLogger.debug(sMsg)
        # 解密成功,sMsg即为xml格式的明文
        # TODO: 对明文的处理
        # For example:
        xml_tree = ET.fromstring(sMsg)
        event = xml_tree.find('Event').text
        changeType = xml_tree.find('ChangeType').text
        myLogger.debug('Event: [{0}], type:[{1}]'.format(event, changeType))

        if event == 'change_external_contact':
            if xml_tree.find('ChangeType').text == 'add_external_contact':
                userid = xml_tree.find('UserID').text
                externaluserid = xml_tree.find('ExternalUserID').text

                state = xml_tree.find('State').text
                welcomecode = xml_tree.find('WelcomeCode').text
                myLogger.debug('{0}, {1}, {2}, {3}'.format(
                    userid, externaluserid, state, welcomecode))

                contactme = ContactMe.objects.filter(state=state)
                if contactme.count() == 0:
                    return HttpResponse('OK')

                # Set tags
                status, res = wechat.mark_tag(userid,
                                              externaluserid,
                                              add_tag=contactme[0].tags)
                if not status:
                    myLogger.error(res.get('errmsg'))

                # Send Welcome
                welcome_msg = contactme[0].welcome_code
                welcome_msg['welcome_code'] = welcomecode
                myLogger.debug(welcome_msg)
                status, res = wechat.send_welcome_msg(welcome_msg)
                if not status:
                    myLogger.error(res.get('errmsg'))

        return HttpResponse('OK')
Beispiel #21
0
    def sync(self, request):
        result = {'result': 'FAIL', 'message': '', 'code': 20000}
        corpid = request.data.get('corpid')
        try:
            corp = Corporation.objects.get(id=corpid)
        except Corporation.DoesNotExist:
            myLogger.error('公司[{0}]不存在'.format(corpid))
            result['message'] = '公司[{0}]不存在'.format(corpid)
            return Response(result)

        try:
            myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
        except CorpApp.DoesNotExist:
            myLogger.error('应用获取失败')
            result['message'] = '应用获取失败'
            return Response(result)

        wechat = WorkWechat(myapp)
        status, res = wechat.get_follow_user_list()
        if not status:
            result['message'] = res.get('errmsg')
            return Response(result)

        follow_user = res.get('follow_user')
        customer_li = []
        for user in follow_user:
            status, res = wechat.get_customer_list(user)
            if status:
                customer_li.extend(res.get('external_userid'))
            else:
                myLogger.error(
                    'Failed to get the customer list for user: {0}'.format(
                        user))

        for c in list(set(customer_li)):
            status, res = wechat.get_customer_detail(c)
            myLogger.debug(res)
            a_customer, created = Customer.objects.get_or_create(
                corp=corp, external_userid=c)
            customer_info = res.get('external_contact')
            a_customer.name = customer_info.get('name')
            a_customer.type = customer_info.get('type', 1)
            a_customer.avatar = customer_info.get('avatar')
            a_customer.gender = customer_info.get('gender')
            a_customer.save()

            # Setup the bounding
            follow_user_li = res.get('follow_user')
            for f in follow_user_li:
                myLogger.debug('remark info:{0}'.format(f))
                try:
                    a_member = Member.objects.get(corp=corp,
                                                  userid=f.get('userid'))
                    cfurel, created = CustomerFollowUserRelationship.objects.get_or_create(
                        member=a_member, customer=a_customer)
                    cfurel.remark = f.get('remark')
                    cfurel.description = f.get('description')
                    cfurel.createtime = f.get('createtime')
                    cfurel.remark_corp_name = f.get('remark_corp_name', '')
                    cfurel.add_way = f.get('add_way', 0)
                    cfurel.remark_mobiles = json.dumps(
                        f.get('remark_mobiles')).encode('utf-8').decode(
                            'unicode_escape')
                    cfurel.tags = json.dumps(
                        f.get('tags')).encode('utf-8').decode('unicode_escape')
                    cfurel.save()
                except Member.DoesNotExist:
                    myLogger.error('成员{0}不存在'.format(f.get('userid')))

        result['result'] = 'OK'
        return Response(result)
Beispiel #22
0
import os
import sys
import mimetypes
from pathlib import Path
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
import django
django.setup()
from workwechat_assist.utils.workwechat_sdk import WorkWechat
from workwechat_assist.corporation.models import Corporation, CorpApp, Department, Member, \
    DepartmentMemberRelationShip, Tag

if __name__ == '__main__':
    corp = Corporation.objects.get(id=1)
    #app = CorpApp.objects.get(corp=corp, agent_id='crm')
    app = CorpApp.objects.get(id=1)
    w = WorkWechat(app)

    #status, res = w.get_follow_user_list()
    #status, res = w.get_customer_list('YaoQiuJie')
    #status, res = w.get_customer_detail('wmb82tCgAAgT9Vbtc3GSpJMrQ2r5Ga3Q')
    #status, res = w.get_corp_tag_list()
    #status, res = w.create_corp_tag('北京展会', ['周一', '周二'])
    #status, res = w.delete_corp_tag(['etb82tCgAiwfsRk1ro4cZMMKWkAA', ])
    #status, res = w.get_groupchat_detail('wrb82tCgAAG_wMhrloPU4wkfcq92X7UQ')

    #status, res = w.send_msg_to_groupchat('YaoQiuJie', msg_type='text', content='Greetings from Django')
    #status, res = w.send_msg_to_multiuser(external_userid_li=['wmb82tCgAAsSbiFIIYcO_T-_ZVi3T4vw',], msg_type='text', content='Greetings from Django')
    #status, res = w.get_group_msg_result('msgb82tCgAAgrXmwKrDqNIeY8QGlM5HNA')
    #status, res = w.get_contact_way("8ce274acc7e3592307bd6c9403a4b740")
    status, res = w.get_contact_way("8ce274acc7e3592307bd6c9403a4b740")
    #status, res = w.get_unassigned_list()
Beispiel #23
0
def work_wx_login(request):
    result = {'result': 'FAIL', 'msg': '', 'code': 20000}
    code = request.data.get('code', 'CODE')
    state = request.data.get('state', 'STATE')

    myLogger.info('code:{0}, state:{1}'.format(code, state))

    try:
        corp = Corporation.objects.get(id=1)
    except Corporation.DoesNotExist:
        myLogger.error('公司不存在')
        result['message'] = '公司不存在'
        return Response(result)

    try:
        myapp = CorpApp.objects.get(corp=corp, agent_id=AGENT_ID)
    except CorpApp.DoesNotExist:
        myLogger.error('应用获取失败')
        result['message'] = '应用获取失败'
        return Response(result)

    wechat = WorkWechat(myapp)

    sts, res = wechat.get_userid(code)
    if not sts:
        result['message'] = res.get('errmsg')
        return Response(result)
    myLogger.debug(res)
    userid = res.get('UserId')
    sts, res = wechat.get_user(userid)
    if not sts:
        result['message'] = res.get('errmsg')
        return Response(result)

    myLogger.debug(res)
    # The account is not in active state
    if res.get('status') != 1:
        result['message'] = 'account[{0}] is not in active state'.format(
            res.get('userid'))
        return Response(result)

    user, created = User.objects.get_or_create(username=res.get('userid'))
    if created:
        user.name = res.get('name')
        user.mobile = res.get('mobile')
        user.gender = res.get('gender')
        user.avatarUrl = res.get('avatar')
        user.email = res.get('email')
        user.is_staff = True
        user.save()

    payload = jwt_payload_handler(user)
    result['token'] = jwt_encode_handler(payload)
    result['id'] = user.id
    result['name'] = user.name
    result['username'] = user.username
    result['mobile'] = user.mobile
    result['email'] = user.email
    result['roles'] = 'admin'  #TODO
    result['nickName'] = user.nickName
    result['avatar'] = res.get('thumb_avatar')
    result['avatarUrl'] = user.avatarUrl
    result['result'] = 'OK'

    return Response(result, status=status.HTTP_200_OK)