diff --git a/hb_server/.gitignore b/hb_server/.gitignore index 8322a3e..4fdd10f 100644 --- a/hb_server/.gitignore +++ b/hb_server/.gitignore @@ -11,4 +11,5 @@ celerybeat-schedule.bak celerybeat-schedule.dat celerybeat-schedule.dir db.sqlite3 -temp/ \ No newline at end of file +temp/ +nohup.out \ No newline at end of file diff --git a/hb_server/apps/mtm/migrations/0011_alter_recordformfield_field_type.py b/hb_server/apps/mtm/migrations/0011_alter_recordformfield_field_type.py new file mode 100644 index 0000000..760d341 --- /dev/null +++ b/hb_server/apps/mtm/migrations/0011_alter_recordformfield_field_type.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.6 on 2021-09-10 05:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mtm', '0010_auto_20210907_1111'), + ] + + operations = [ + migrations.AlterField( + model_name='recordformfield', + name='field_type', + field=models.CharField(choices=[('string', '字符串'), ('int', '整型'), ('float', '浮点'), ('boolean', '布尔'), ('date', '日期'), ('time', '时间'), ('datetime', '日期时间'), ('radio', '单选'), ('checkbox', '多选'), ('select', '单选下拉'), ('selects', '多选下拉'), ('textarea', '文本域')], max_length=50, verbose_name='类型'), + ), + ] diff --git a/hb_server/apps/mtm/models.py b/hb_server/apps/mtm/models.py index 038140c..06f1672 100644 --- a/hb_server/apps/mtm/models.py +++ b/hb_server/apps/mtm/models.py @@ -98,6 +98,7 @@ class RecordFormField(CommonAModel): ('float', '浮点'), ('boolean', '布尔'), ('date', '日期'), + ('time', '时间'), ('datetime', '日期时间'), ('radio', '单选'), ('checkbox', '多选'), diff --git a/hb_server/apps/sam/models.py b/hb_server/apps/sam/models.py index 904101f..1925c07 100644 --- a/hb_server/apps/sam/models.py +++ b/hb_server/apps/sam/models.py @@ -1,4 +1,3 @@ -from numpy import product from apps.system.models import CommonAModel from django.db import models from django.contrib.auth.models import AbstractUser @@ -7,7 +6,6 @@ import django.utils.timezone as timezone from django.db.models.query import QuerySet from utils.model import SoftModel, BaseModel -from simple_history.models import HistoricalRecords from apps.mtm.models import Material @@ -29,7 +27,7 @@ class Customer(CommonAModel): def __str__(self): return self.name -class Contact(CommonAModel): +class Contract(CommonAModel): """ 合同信息 """ @@ -37,7 +35,6 @@ class Contact(CommonAModel): number = models.CharField('合同编号', max_length=100, unique=True) amount = models.IntegerField('合同金额', default=0) customer = models.ForeignKey(Customer, verbose_name='关联客户', on_delete=models.CASCADE, related_name='contact_customer') - # contactuser = models.CharField('合同签订人', max_length=100, unique=True, blank=True, null=True) sign_date = models.DateField('签订日期') description = models.CharField('描述', max_length=200, blank=True, null=True) @@ -54,7 +51,7 @@ class Order(CommonAModel): """ number = models.CharField('订单编号', max_length=100) customer = models.ForeignKey(Customer, verbose_name='客户', on_delete=models.CASCADE) - contact = models.ForeignKey(Contact, verbose_name='所属合同', null=True, blank=True, on_delete=models.SET_NULL) + contract = models.ForeignKey(Contract, verbose_name='所属合同', null=True, blank=True, on_delete=models.SET_NULL) product = models.ForeignKey(Material, verbose_name='所需产品', on_delete=models.CASCADE) count = models.IntegerField('所需数量', default=0) delivery_date = models.DateField('交货日期') diff --git a/hb_server/apps/sam/serializers.py b/hb_server/apps/sam/serializers.py index 50d8845..3ecfd51 100644 --- a/hb_server/apps/sam/serializers.py +++ b/hb_server/apps/sam/serializers.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from .models import Contact, Customer +from .models import Contract, Customer, Order class CustomerSerializer(serializers.ModelSerializer): @@ -13,12 +13,35 @@ class CustomerCreateUpdateSerializer(serializers.ModelSerializer): model = Customer fields = ['name', 'address', 'contact', 'contact_phone', 'description'] -class ContactSerializer(serializers.ModelSerializer): +class CustomerSimpleSerializer(serializers.ModelSerializer): class Meta: - model = Contact + fields = ['id', 'name'] + +class ContractSerializer(serializers.ModelSerializer): + + class Meta: + model = Contract fields = '__all__' -class ContactCreateUpdateSerializer(serializers.ModelSerializer): +class ContractSimpleSerializer(serializers.ModelSerializer): class Meta: - model = Contact - fields = ['name', 'number', 'amount', 'customer', 'sign_date', 'description'] \ No newline at end of file + model = Contract + fields = ['id', 'name', 'number'] + +class ContractCreateUpdateSerializer(serializers.ModelSerializer): + class Meta: + model = Contract + fields = ['name', 'number', 'amount', 'customer', 'sign_date', 'description'] + + +class OrderCreateUpdateSerializer(serializers.ModelSerializer): + class Meta: + model = Order + fields = ['number', 'customer', 'contract', 'product', 'count', 'delivery_date'] + +class OrderSerializer(serializers.ModelSerializer): + contract_ = ContractSimpleSerializer(source='contract', read_only=True) + customer_ = CustomerSimpleSerializer(source='customer', read_only=True) + class Meta: + model = Order + fields = '__all__' \ No newline at end of file diff --git a/hb_server/apps/sam/views.py b/hb_server/apps/sam/views.py index 7164c7f..8f66873 100644 --- a/hb_server/apps/sam/views.py +++ b/hb_server/apps/sam/views.py @@ -1,5 +1,5 @@ -from apps.sam.serializers import CustomerCreateUpdateSerializer, CustomerSerializer -from apps.sam.models import Customer +from apps.sam.serializers import ContractCreateUpdateSerializer, ContractSerializer, CustomerCreateUpdateSerializer, CustomerSerializer, OrderCreateUpdateSerializer, OrderSerializer +from apps.sam.models import Contract, Customer, Order from rest_framework.viewsets import ModelViewSet from apps.system.mixins import CreateUpdateCustomMixin from django.shortcuts import render @@ -21,3 +21,38 @@ class CustomerViewSet(CreateUpdateCustomMixin, ModelViewSet): if self.action in ['create', 'update']: return CustomerCreateUpdateSerializer return CustomerSerializer + + +class ContractViewSet(CreateUpdateCustomMixin, ModelViewSet): + """ + 合同-增删改查 + """ + perms_map = {'*': '*'} + queryset = Contract.objects.select_related('customer').all() + serializer_class = ContractSerializer + search_fields = ['name'] + filterset_fields = [] + ordering_fields = ['create_time'] + ordering = ['-create_time'] + + def get_serializer_class(self): + if self.action in ['create', 'update']: + return ContractCreateUpdateSerializer + return ContractSerializer + +class OrderViewSet(CreateUpdateCustomMixin, ModelViewSet): + """ + 订单-增删改查 + """ + perms_map = {'*': '*'} + queryset = Order.objects.select_related('contract', 'customer').all() + serializer_class = OrderSerializer + search_fields = ['number', 'product'] + filterset_fields = [] + ordering_fields = ['create_time'] + ordering = ['-create_time'] + + def get_serializer_class(self): + if self.action in ['create', 'update']: + return OrderCreateUpdateSerializer + return OrderSerializer \ No newline at end of file diff --git a/hb_server/apps/system/views.py b/hb_server/apps/system/views.py index cc9842d..a05fb3f 100644 --- a/hb_server/apps/system/views.py +++ b/hb_server/apps/system/views.py @@ -380,7 +380,6 @@ class FaceLogin(CreateAPIView): filepath = settings.BASE_DIR +'/temp/' + filename +'.png' with open(filepath, 'wb') as f: data = tran64(request.data.get('base64').replace(' ', '+')) - # data = request.data.get('base64') f.write(base64.urlsafe_b64decode(data)) picture_of_me = face_recognition.load_image_file(settings.BASE_DIR +'/temp/me.png') my_face_encoding = face_recognition.face_encodings(picture_of_me)[0]