| @@ -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') |