@@ -8,8 +8,9 @@ from django_logit import logit  | 
            ||
| 8 | 8 | 
                from django_response import response  | 
            
| 9 | 9 | 
                from TimeConvert import TimeConvert as tc  | 
            
| 10 | 10 | 
                 | 
            
| 11 | 
                -from mch.models import ConsumeInfoSubmitLogInfo, AdministratorInfo  | 
            |
| 12 | 
                -from utils.error.errno_utils import AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode, ProductMachineStatusCode  | 
            |
| 11 | 
                +from mch.models import AdministratorInfo, ConsumeInfoSubmitLogInfo  | 
            |
| 12 | 
                +from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode,  | 
            |
| 13 | 
                + ProductMachineStatusCode)  | 
            |
| 13 | 14 | 
                 | 
            
| 14 | 15 | 
                 | 
            
| 15 | 16 | 
                WECHAT = settings.WECHAT  | 
            
                @@ -5,7 +5,8 @@ from django_file_upload import views as file_views  | 
            ||
| 5 | 5 | 
                 | 
            
| 6 | 6 | 
                from account import tourguide_views  | 
            
| 7 | 7 | 
                from account import views as account_views  | 
            
| 8 | 
                -from api import admin_views, clerk_views, distributor_views, encrypt_views, mch_views, model_views, operator_views, sr_views  | 
            |
| 8 | 
                +from api import (admin_views, clerk_views, distributor_views, encrypt_views, mch_views, model_views, operator_views,  | 
            |
| 9 | 
                + sr_views)  | 
            |
| 9 | 10 | 
                from box import views as box_views  | 
            
| 10 | 11 | 
                from geo import views as geo_views  | 
            
| 11 | 12 | 
                from group import (groupuser_views, lensman_views, tourguidegroup_views, tourguidegroupadmin_views,  | 
            
                @@ -8,7 +8,8 @@ from TimeConvert import TimeConvert as tc  | 
            ||
| 8 | 8 | 
                 | 
            
| 9 | 9 | 
                from integral.models import SaleclerkSubmitLogInfo  | 
            
| 10 | 10 | 
                from mch.models import BrandInfo, DistributorInfo, ModelInfo, SaleclerkInfo  | 
            
| 11 | 
                -from sales.models import SalesResponsibilityInfo, SalesResponsibilityInfoModelsSaleStatisticInfo, SuperSalesResponsibilityInfoModelsSaleStatisticInfo  | 
            |
| 11 | 
                +from sales.models import (SalesResponsibilityInfo, SalesResponsibilityInfoModelsSaleStatisticInfo,  | 
            |
| 12 | 
                + SuperSalesResponsibilityInfoModelsSaleStatisticInfo)  | 
            |
| 12 | 13 | 
                 | 
            
| 13 | 14 | 
                 | 
            
| 14 | 15 | 
                 logger = logging.getLogger('console')
               | 
            
                @@ -1,7 +1,7 @@  | 
            ||
| 1 | 1 | 
                # -*- coding: utf-8 -*-  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                from django.contrib import admin  | 
            
| 4 | 
                -from django_admin import ReadOnlyModelAdmin, AdvancedExportExcelModelAdmin  | 
            |
| 4 | 
                +from django_admin import AdvancedExportExcelModelAdmin, ReadOnlyModelAdmin  | 
            |
| 5 | 5 | 
                 | 
            
| 6 | 6 | 
                from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo  | 
            
| 7 | 7 | 
                 | 
            
                @@ -112,3 +112,15 @@ def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None):  | 
            ||
| 112 | 112 | 
                operator_id=optor_id,  | 
            
| 113 | 113 | 
                app_version=version,  | 
            
| 114 | 114 | 
                )  | 
            
| 115 | 
                +  | 
            |
| 116 | 
                +    zbar = int(request.POST.get('zbar', 0))
               | 
            |
| 117 | 
                + if zbar:  | 
            |
| 118 | 
                + import os  | 
            |
| 119 | 
                + from utils.zbar.zbar import zbar  | 
            |
| 120 | 
                +  | 
            |
| 121 | 
                + file_path = os.path.join(settings.MEDIA_ROOT, file_path)  | 
            |
| 122 | 
                + zbars = zbar(file_path)  | 
            |
| 123 | 
                +  | 
            |
| 124 | 
                +        return {
               | 
            |
| 125 | 
                + 'zbars': zbars,  | 
            |
| 126 | 
                + }  | 
            
                @@ -356,6 +356,7 @@ def clerk_integral_list_api(request):  | 
            ||
| 356 | 356 | 
                'left_integral': clerk.integral,  | 
            
| 357 | 357 | 
                })  | 
            
| 358 | 358 | 
                 | 
            
| 359 | 
                +  | 
            |
| 359 | 360 | 
                @logit  | 
            
| 360 | 361 | 
                def clerk_model_list_api(request):  | 
            
| 361 | 362 | 
                     brandID = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_PK)
               | 
            
                @@ -2,11 +2,11 @@  | 
            ||
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                from __future__ import division  | 
            
| 4 | 4 | 
                 | 
            
| 5 | 
                -import xlrd  | 
            |
| 6 | 5 | 
                from django.conf import settings  | 
            
| 7 | 6 | 
                from pysnippets.strsnippets import strip  | 
            
| 8 | 7 | 
                from TimeConvert import TimeConvert as tc  | 
            
| 9 | 8 | 
                 | 
            
| 9 | 
                +import xlrd  | 
            |
| 10 | 10 | 
                from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo  | 
            
| 11 | 11 | 
                from statistic.models import (ConsumeDistributorSaleStatisticInfo, ConsumeModelSaleStatisticInfo,  | 
            
| 12 | 12 | 
                ConsumeProvinceSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo,  | 
            
                @@ -1,10 +1,10 @@  | 
            ||
| 1 | 1 | 
                Django==1.11.20  | 
            
| 2 | 
                -django-admin==1.3.2  | 
            |
| 2 | 
                +django-admin==2.0.0  | 
            |
| 3 | 3 | 
                django-cors-headers==2.4.0  | 
            
| 4 | 4 | 
                django-curtail-uuid==1.0.4  | 
            
| 5 | 5 | 
                django-detect==1.0.8  | 
            
| 6 | 
                -django-file-md5==1.0.2  | 
            |
| 7 | 
                -django-file-upload==1.1.0  | 
            |
| 6 | 
                +django-file-md5==1.0.3  | 
            |
| 7 | 
                +django-file-upload==1.1.1  | 
            |
| 8 | 8 | 
                django-ip==1.0.2  | 
            
| 9 | 9 | 
                django-json-render==1.0.2  | 
            
| 10 | 10 | 
                django-json-response==1.1.5  | 
            
                @@ -12,13 +12,12 @@ django-logit==1.1.3  | 
            ||
| 12 | 12 | 
                django-mobi==0.1.7  | 
            
| 13 | 13 | 
                django-models-ext==1.1.8  | 
            
| 14 | 14 | 
                django-multidomain==1.1.4  | 
            
| 15 | 
                -django-paginator2==1.0.4  | 
            |
| 15 | 
                +django-paginator2==1.1.3  | 
            |
| 16 | 16 | 
                django-query==1.0.3  | 
            
| 17 | 17 | 
                django-redis-connector==1.0.1  | 
            
| 18 | 18 | 
                django-response==1.1.1  | 
            
| 19 | 19 | 
                django-rlog==1.0.7  | 
            
| 20 | 20 | 
                django-shortuuidfield==0.1.3  | 
            
| 21 | 21 | 
                django-six==1.0.4  | 
            
| 22 | 
                -django-uniapi==1.0.5  | 
            |
| 23 | 
                -django-we==1.4.2  | 
            |
| 24 | 
                -djangorestframework==3.7.7  | 
            |
| 22 | 
                +django-uniapi==1.0.7  | 
            |
| 23 | 
                +django-we==1.5.3rk==3.7.7  | 
            
                @@ -2,7 +2,8 @@  | 
            ||
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                from django.contrib import admin  | 
            
| 4 | 4 | 
                 | 
            
| 5 | 
                -from sales.models import SalesResponsibilityInfo, SalesResponsibilityInfoModelsSaleStatisticInfo, SuperSalesResponsibilityInfoModelsSaleStatisticInfo  | 
            |
| 5 | 
                +from sales.models import (SalesResponsibilityInfo, SalesResponsibilityInfoModelsSaleStatisticInfo,  | 
            |
| 6 | 
                + SuperSalesResponsibilityInfoModelsSaleStatisticInfo)  | 
            |
| 6 | 7 | 
                 | 
            
| 7 | 8 | 
                 | 
            
| 8 | 9 | 
                class SalesResponsibilityInfoAdmin(admin.ModelAdmin):  | 
            
                @@ -3,4 +3,5 @@ from __future__ import unicode_literals  | 
            ||
| 3 | 3 | 
                 | 
            
| 4 | 4 | 
                from django.test import TestCase  | 
            
| 5 | 5 | 
                 | 
            
| 6 | 
                +  | 
            |
| 6 | 7 | 
                # Create your tests here.  | 
            
                @@ -9,8 +9,9 @@ from TimeConvert import TimeConvert as tc  | 
            ||
| 9 | 9 | 
                 | 
            
| 10 | 10 | 
                from account.models import UserInfo  | 
            
| 11 | 11 | 
                from mch.models import DistributorInfo  | 
            
| 12 | 
                -from sales.models import SalesResponsibilityInfo, SalesResponsibilityInfoModelsSaleStatisticInfo, SuperSalesResponsibilityInfoModelsSaleStatisticInfo  | 
            |
| 13 | 
                -from utils.error.errno_utils import UserStatusCode, SalesResponsibilityStatusCode  | 
            |
| 12 | 
                +from sales.models import (SalesResponsibilityInfo, SalesResponsibilityInfoModelsSaleStatisticInfo,  | 
            |
| 13 | 
                + SuperSalesResponsibilityInfoModelsSaleStatisticInfo)  | 
            |
| 14 | 
                +from utils.error.errno_utils import SalesResponsibilityStatusCode, UserStatusCode  | 
            |
| 14 | 15 | 
                 | 
            
| 15 | 16 | 
                 | 
            
| 16 | 17 | 
                @logit  | 
            
      
                @@ -0,0 +1,40 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from PIL import Image, ImageEnhance  | 
            |
| 4 | 
                +from pyzbar import pyzbar  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +# The zbar DLLs are included with the Windows Python wheels.  | 
            |
| 8 | 
                +# On other operating systems, you will need to install the zbar shared library.  | 
            |
| 9 | 
                +#  | 
            |
| 10 | 
                +# Mac OS X:  | 
            |
| 11 | 
                +# brew install zbar  | 
            |
| 12 | 
                +#  | 
            |
| 13 | 
                +# Linux:  | 
            |
| 14 | 
                +# sudo apt-get install libzbar0  | 
            |
| 15 | 
                +#  | 
            |
| 16 | 
                +# Install this Python wrapper; use the second form to install dependencies of the command-line scripts:  | 
            |
| 17 | 
                +# pip install pyzbar  | 
            |
| 18 | 
                +  | 
            |
| 19 | 
                +  | 
            |
| 20 | 
                +def zbar(path):  | 
            |
| 21 | 
                + img = Image.open(path)  | 
            |
| 22 | 
                +  | 
            |
| 23 | 
                + # img = ImageEnhance.Brightness(img).enhance(2.0) # 增加亮度  | 
            |
| 24 | 
                + # img = ImageEnhance.Sharpness(img).enhance(17.0) # 锐利化  | 
            |
| 25 | 
                + # img = ImageEnhance.Contrast(img).enhance(4.0) # 增加对比度  | 
            |
| 26 | 
                +    # img = img.convert('L')  # 灰度化
               | 
            |
| 27 | 
                +  | 
            |
| 28 | 
                + # img.show()  | 
            |
| 29 | 
                +  | 
            |
| 30 | 
                + barcodes = pyzbar.decode(img)  | 
            |
| 31 | 
                +  | 
            |
| 32 | 
                + # for barcode in barcodes:  | 
            |
| 33 | 
                +    #     barcodeData = barcode.data.decode("utf-8")
               | 
            |
| 34 | 
                + # print(barcodeData)  | 
            |
| 35 | 
                +  | 
            |
| 36 | 
                +    return [bar.data.decode('utf-8') for bar in barcodes]
               | 
            |
| 37 | 
                +  | 
            |
| 38 | 
                +  | 
            |
| 39 | 
                +if __name__ == '__main__':  | 
            |
| 40 | 
                +    print zbar('zbar.jpg')
               |