No Description

tenancy_admin_views.py 7.7KB

    # -*- coding: utf-8 -*- from __future__ import division from django.db import transaction from django_logit import logit from django_response import response from paginator import pagination from TimeConvert import TimeConvert as tc from api.tenancy_views import tenancy_tracking_info_subscribe from kodo.decorators import check_admin from tenancy.models import TenancyShotInfo, TenancyShotRequestInfo from utils.error.errno_utils import TenancyStatusCode @logit @check_admin def shot_list(request, administrator): page = request.POST.get('page', 1) num = request.POST.get('num', 20) shots = TenancyShotInfo.objects.filter(status=True).order_by('-pk') shots = [shot.data for shot in shots] shots, left = pagination(shots, page, num) return response(data={ 'shots': shots, 'left': left, }) @logit @check_admin def shot_detail(request, administrator): shot_id = request.POST.get('shot_id', '') try: shot = TenancyShotInfo.objects.get(shot_id=shot_id, status=True) except TenancyShotInfo.DoesNotExist: return response(TenancyStatusCode.TENANCY_SHOT_NOT_FOUND) return response(data={ 'shot': shot.data, }) @logit @check_admin def shot_create(request, administrator): model_id = request.POST.get('model_id', '') model_name = request.POST.get('model_name', '') sn = request.POST.get('sn', '') front_cap_status = request.POST.get('front_cap_status', 1) rear_cap_status = request.POST.get('rear_cap_status', 1) lens_hood_status = request.POST.get('lens_hood_status', 1) tripod_ring_status = request.POST.get('tripod_ring_status', 1) appearance_performance_status = request.POST.get('appearance_performance_status', 1) tenancy_status = request.POST.get('tenancy_status', 0) shot = TenancyShotInfo.objects.create( model_id=model_id, model_name=model_name, sn=sn, front_cap_status=front_cap_status, rear_cap_status=rear_cap_status, lens_hood_status=lens_hood_status, tripod_ring_status=tripod_ring_status, appearance_performance_status=appearance_performance_status, tenancy_status=tenancy_status, ) return response(data={ 'shot': shot.data, }) @logit @check_admin def shot_update(request, administrator): shot_id = request.POST.get('shot_id', '') model_id = request.POST.get('model_id', '') model_name = request.POST.get('model_name', '') sn = request.POST.get('sn', '') front_cap_status = request.POST.get('front_cap_status', 1) rear_cap_status = request.POST.get('rear_cap_status', 1) lens_hood_status = request.POST.get('lens_hood_status', 1) tripod_ring_status = request.POST.get('tripod_ring_status', 1) appearance_performance_status = request.POST.get('appearance_performance_status', 1) tenancy_status = request.POST.get('tenancy_status', 0) shot, _ = TenancyShotInfo.objects.update_or_create(shot_id=shot_id, defaults={ 'model_id': model_id, 'model_name': model_name, 'sn': sn, 'front_cap_status': front_cap_status, 'rear_cap_status': rear_cap_status, 'lens_hood_status': lens_hood_status, 'tripod_ring_status': tripod_ring_status, 'appearance_performance_status': appearance_performance_status, 'tenancy_status': tenancy_status, }) return response(data={ 'shot': shot.data, }) @logit @check_admin def shot_request_list(request, administrator): page = request.POST.get('page', 1) num = request.POST.get('num', 20) reqs = TenancyShotRequestInfo.objects.filter(status=True).order_by('-pk') reqs = [req.data for req in reqs] reqs, left = pagination(reqs, page, num) return response(data={ 'reqs': reqs, 'left': left, }) @logit @check_admin def shot_request_detail(request, administrator): req_id = request.POST.get('req_id') or request.POST.get('request_id') try: req = TenancyShotRequestInfo.objects.get(request_id=req_id, status=True) except TenancyShotRequestInfo.DoesNotExist: return response(TenancyStatusCode.TENANCY_SHOT_REQUEST_NOT_FOUND) return response(data={ 'req': req.data, }) @logit @check_admin @transaction.atomic def shot_request_update(request, administrator): req_id = request.POST.get('req_id') or request.POST.get('request_id') shot_id = request.POST.get('shot_id', '') name = request.POST.get('name', '') phone = request.POST.get('phone', '') postcode = request.POST.get('postcode', '') location = request.POST.get('location', '') purpose = request.POST.get('purpose', '') return_date = request.POST.get('return_date', '') request_status = request.POST.get('request_status', '') tracking_number = request.POST.get('tracking_number', '') back_tracking_number = request.POST.get('back_tracking_number', '') try: req = TenancyShotRequestInfo.objects.select_for_update().get(request_id=req_id, status=True) except TenancyShotRequestInfo.DoesNotExist: return response(TenancyStatusCode.TENANCY_SHOT_REQUEST_NOT_FOUND) old_tracking_number = req.tracking_number old_back_tracking_number = req.back_tracking_number if shot_id: req.shot_id = shot_id if name: req.name = name if phone: req.phone = phone if postcode: req.postcode = postcode if location: req.location = location if purpose: req.purpose = purpose if return_date: req.return_date = tc.to_date(return_date) if request_status: req.request_status = request_status if tracking_number: req.tracking_number = tracking_number if back_tracking_number: req.back_tracking_number = back_tracking_number req.save() if tracking_number and tracking_number != old_tracking_number: tenancy_tracking_info_subscribe(req, 'tracking') if back_tracking_number and back_tracking_number != old_back_tracking_number: tenancy_tracking_info_subscribe(req, 'back_tracking') return response(data={ 'req': req.data, }) @logit @check_admin @transaction.atomic def shot_request_audit(request, administrator): req_id = request.POST.get('req_id') or request.POST.get('request_id') audit_status = request.POST.get('audit_status', 0) try: req = TenancyShotRequestInfo.objects.select_for_update().get(request_id=req_id, status=True) except TenancyShotRequestInfo.DoesNotExist: return response(TenancyStatusCode.TENANCY_SHOT_REQUEST_NOT_FOUND) req.audit_status = audit_status req.save() return response(data={ 'req': req.data, }) @logit @check_admin @transaction.atomic def shot_request_send(request, administrator): req_id = request.POST.get('req_id') or request.POST.get('request_id') tracking_number = request.POST.get('tracking_number', '') try: req = TenancyShotRequestInfo.objects.select_for_update().get(request_id=req_id, status=True) except TenancyShotRequestInfo.DoesNotExist: return response(TenancyStatusCode.TENANCY_SHOT_REQUEST_NOT_FOUND) req.tracking_number = tracking_number req.save() return response(data={ 'req': req.data, }) @logit @check_admin @transaction.atomic def shot_request_signed(request, administrator): req_id = request.POST.get('req_id') or request.POST.get('request_id') try: req = TenancyShotRequestInfo.objects.select_for_update().get(request_id=req_id, status=True) except TenancyShotRequestInfo.DoesNotExist: return response(TenancyStatusCode.TENANCY_SHOT_REQUEST_NOT_FOUND) req.request_status = TenancyShotRequestInfo.TENANCY_TRACKING_BACK_SIGNED req.save() return response(data={ 'req': req.data, })