@@ -1,5 +1,8 @@  | 
            ||
| 1 | 1 | 
                # -*- coding: utf-8 -*-  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 
                +import base64  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +import requests  | 
            |
| 3 | 6 | 
                from django_logit import logit  | 
            
| 4 | 7 | 
                from django_response import response  | 
            
| 5 | 8 | 
                from TimeConvert import TimeConvert as tc  | 
            
                @@ -62,15 +65,41 @@ def get_contribtion_contract_api(request):  | 
            ||
| 62 | 65 | 
                })  | 
            
| 63 | 66 | 
                 | 
            
| 64 | 67 | 
                 | 
            
| 68 | 
                +def generate_file_from_qiniu(file_url):  | 
            |
| 69 | 
                + try:  | 
            |
| 70 | 
                + data = requests.get(file_url).content  | 
            |
| 71 | 
                +        data = base64.b64encode(data).decode('utf-8')
               | 
            |
| 72 | 
                + except Exception:  | 
            |
| 73 | 
                + data = None  | 
            |
| 74 | 
                + return data  | 
            |
| 75 | 
                +  | 
            |
| 76 | 
                +  | 
            |
| 77 | 
                +def generate_files_from_qiniu(file_urls):  | 
            |
| 78 | 
                + files = []  | 
            |
| 79 | 
                + for file_url in file_urls:  | 
            |
| 80 | 
                + file_b64str = generate_file_from_qiniu(file_url)  | 
            |
| 81 | 
                + if not file_b64str:  | 
            |
| 82 | 
                + continue  | 
            |
| 83 | 
                +        files.append({
               | 
            |
| 84 | 
                + 'FileBody': file_b64str,  | 
            |
| 85 | 
                +            'FileName': file_url.split('/')[-1]
               | 
            |
| 86 | 
                + })  | 
            |
| 87 | 
                + return files  | 
            |
| 88 | 
                +  | 
            |
| 89 | 
                +  | 
            |
| 65 | 90 | 
                def upload_contribution_images(contribution_id):  | 
            
| 66 | 91 | 
                # 上传MemberActivityContributionInfo图片 https://qian.tencent.com/developers/companyApis/templatesAndFiles/UploadFiles  | 
            
| 67 | 92 | 
                 | 
            
| 68 | 93 | 
                contribtuon = MemberActivityContributionInfo.objects.get(contribution_id=contribution_id)  | 
            
| 69 | 94 | 
                 | 
            
| 70 | 95 | 
                # TODO: 从 MemberActivityContributionInfo 生成 files 对象  | 
            
| 71 | 
                -    file_names = [image['image_url'].split('/')[-1] for image in contribtuon.images]
               | 
            |
| 96 | 
                + file_urls = [image['image_url'] for image in contribtuon.images]  | 
            |
| 97 | 
                +    file_names = [file_url.split('/')[-1] for file_url in file_urls]
               | 
            |
| 72 | 98 | 
                     file_type = file_names[0].split('.')[-1]
               | 
            
| 73 | 99 | 
                files = get_images_data(file_names)  | 
            
| 100 | 
                + # Redis 已无缓存的数据  | 
            |
| 101 | 
                + if len(files) != len(file_names):  | 
            |
| 102 | 
                + files = generate_files_from_qiniu(file_urls)  | 
            |
| 74 | 103 | 
                # files = [  | 
            
| 75 | 104 | 
                     #     {
               | 
            
| 76 | 105 | 
                # "FileBody": "文件base64编码,不含逗号前字符,即data:image/png;base64,",  | 
            
                @@ -21,4 +21,4 @@ def get_images_data(file_names):  | 
            ||
| 21 | 21 | 
                     return [{
               | 
            
| 22 | 22 | 
                'FileBody': v,  | 
            
| 23 | 23 | 
                'FileName': k  | 
            
| 24 | 
                - } for k, v in zip(file_names, file_b64strs)]  | 
            |
| 24 | 
                + } for k, v in zip(file_names, file_b64strs) if v]  |