93fa8104 by Gruel

upload doc interface

1 parent 23b64aee
File mode changed
1 from django.contrib import admin
2
3 # Register your models here.
1 from django.apps import AppConfig
2
3
4 class DocConfig(AppConfig):
5 name = 'doc'
1 from django.db import models
2
3 # Create your models here.
4
5
6 class Document(models.Model):
7 id = models.AutoField(primary_key=True, verbose_name="id")
8 application_id = models.CharField(max_length=64, verbose_name="申请id")
9 main_applicant = models.CharField(max_length=16, verbose_name="主申请人")
10 co_applicant = models.CharField(max_length=16, verbose_name="共同申请人")
11 guarantor_1 = models.CharField(max_length=16, verbose_name="担保人1")
12 guarantor_2 = models.CharField(max_length=16, verbose_name="担保人2")
13 document_name = models.CharField(max_length=255, verbose_name="文件名")
14 document_scheme = models.CharField(max_length=64, verbose_name="文件格式") # TODO 确认verbose_name
15 business_type = models.CharField(max_length=64, verbose_name="业务类型")
16 data_source = models.CharField(max_length=64, verbose_name="数据源")
17 metadata_version_id = models.CharField(max_length=64, verbose_name="元数据版本id")
18 upload_finish_time = models.DateTimeField(verbose_name="上传完成时间")
19 update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
20 create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
21
22 class Meta:
23 managed = False
24 db_table = 'document'
25
1 from django.test import TestCase
2
3 # Create your tests here.
1 from django.urls import path
2 from . import views
3
4
5 urlpatterns = [
6 path(r'', views.DocView.as_view()),
7 ]
1 from django.shortcuts import render
2 from webargs import fields
3 from webargs.djangoparser import use_args, parser
4 from common.mixins import GenericView
5 from common import response
6 from .models import Document
7
8 # Create your views here.
9
10
11 # restframework将request.body封装至request.data, webargs从request.data中获取参数
12 @parser.location_loader("data")
13 def load_data(request, schema):
14 return request.data
15
16
17 application_data = {'applicationId': fields.Str(required=True)}
18
19 applicant_data = {
20 'mainApplicantName': fields.Str(required=True),
21 'coApplicantName': fields.Str(required=True),
22 'guarantor1Name': fields.Str(required=True),
23 'guarantor2Name': fields.Str(required=True),
24 }
25
26 document = {
27 'documentName': fields.Str(required=True),
28 'documentScheme': fields.Str(required=True),
29 'businessType': fields.Str(required=True),
30 'uploadFinishTime': fields.DateTime(required=True),
31 'dataSource': fields.Str(required=True),
32 'metadataVersionId': fields.Str(required=True),
33 }
34
35 doc_upload = {
36 'applicationData': fields.Nested(application_data, required=True),
37 'applicantData': fields.Nested(applicant_data, required=True),
38 'document': fields.Nested(document, required=True),
39 }
40
41
42 class DocView(GenericView):
43 permission_classes = []
44
45 # 创建模型
46 @use_args(doc_upload, location='data')
47 def post(self, request, args):
48 Document.objects.create(
49 application_id=args.get('applicationId'),
50 main_applicant=args.get('mainApplicantName'),
51 co_applicant=args.get('coApplicantName'),
52 guarantor_1=args.get('guarantor1Name'),
53 guarantor_2=args.get('guarantor2Name'),
54 document_name=args.get('documentName'),
55 document_scheme=args.get('documentScheme'),
56 business_type=args.get('businessType'),
57 data_source=args.get('dataSource'),
58 metadata_version_id=args.get('metadataVersionId'),
59 upload_finish_time=args.get('uploadFinishTime'),
60 )
61 self.running_log.info('[doc upload success] [args={0}]'.format(args))
62 return response.ok()
...@@ -19,4 +19,5 @@ from django.urls import path, include ...@@ -19,4 +19,5 @@ from django.urls import path, include
19 urlpatterns = [ 19 urlpatterns = [
20 path('admin/', admin.site.urls), 20 path('admin/', admin.site.urls),
21 path(r'apis/v1/users/', include('apps.account.urls')), 21 path(r'apis/v1/users/', include('apps.account.urls')),
22 path(r'apis/v1/doc/', include('apps.doc.urls')),
22 ] 23 ]
......
...@@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _ ...@@ -5,6 +5,7 @@ from django.utils.translation import ugettext_lazy as _
5 from django.http import Http404 5 from django.http import Http404
6 from rest_framework import exceptions, status 6 from rest_framework import exceptions, status
7 from rest_framework.response import Response 7 from rest_framework.response import Response
8 from marshmallow.exceptions import ValidationError
8 9
9 from .response import MetaStatus, res_content, APIResponse 10 from .response import MetaStatus, res_content, APIResponse
10 11
...@@ -47,6 +48,11 @@ def exception_handler(exc, context): ...@@ -47,6 +48,11 @@ def exception_handler(exc, context):
47 48
48 return Response(data, status=status.HTTP_403_FORBIDDEN) 49 return Response(data, status=status.HTTP_403_FORBIDDEN)
49 50
51 elif isinstance(exc, ValidationError):
52 meta_status = MetaStatus.INVALID_PARAMS.value
53 # msg = MetaStatus.INVALID_PARAMS.verbose_name
54 return APIResponse(meta_status, msg=str(exc))
55
50 elif isinstance(exc, Exception) and hasattr(exc, 'API_META_STATUS'): 56 elif isinstance(exc, Exception) and hasattr(exc, 'API_META_STATUS'):
51 msg = exc.API_META_STATUS.verbose_name 57 msg = exc.API_META_STATUS.verbose_name
52 return APIResponse(exc.API_META_STATUS.value, msg=msg) 58 return APIResponse(exc.API_META_STATUS.value, msg=msg)
......
...@@ -22,7 +22,7 @@ BASE_DIR = conf.BASE_DIR ...@@ -22,7 +22,7 @@ BASE_DIR = conf.BASE_DIR
22 # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/ 22 # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
23 23
24 # SECURITY WARNING: keep the secret key used in production secret! 24 # SECURITY WARNING: keep the secret key used in production secret!
25 SECRET_KEY = 'd!l6b6vz6s5dm9ysdfc-y1n*q3vukr-cix9rntx&5me$-)@wli' 25 SECRET_KEY = conf.SECRET_KEY
26 26
27 # SECURITY WARNING: don't run with debug turned on in production! 27 # SECURITY WARNING: don't run with debug turned on in production!
28 DEBUG = conf.DEBUG 28 DEBUG = conf.DEBUG
...@@ -41,6 +41,7 @@ INSTALLED_APPS = [ ...@@ -41,6 +41,7 @@ INSTALLED_APPS = [
41 'django.contrib.staticfiles', 41 'django.contrib.staticfiles',
42 'rest_framework', 42 'rest_framework',
43 'common', 43 'common',
44 'apps.account',
44 ] 45 ]
45 46
46 MIDDLEWARE = [ 47 MIDDLEWARE = [
...@@ -139,3 +140,6 @@ REST_FRAMEWORK = { ...@@ -139,3 +140,6 @@ REST_FRAMEWORK = {
139 # 日志配置 140 # 日志配置
140 LOGGING_CONFIG = None 141 LOGGING_CONFIG = None
141 config.fileConfig(conf.LOGGING_CONFIG_FILE, disable_existing_loggers=False) 142 config.fileConfig(conf.LOGGING_CONFIG_FILE, disable_existing_loggers=False)
143
144 # url路径添加/
145 APPEND_SLASH = False
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!