feat: cancel assembly by id
This commit is contained in:
		@@ -2,6 +2,7 @@ import datetime
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from flask import Blueprint, request, jsonify
 | 
					from flask import Blueprint, request, jsonify
 | 
				
			||||||
from flask_jwt_extended import get_jwt_identity
 | 
					from flask_jwt_extended import get_jwt_identity
 | 
				
			||||||
 | 
					from sqlalchemy.orm import joinedload
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import database
 | 
					import database
 | 
				
			||||||
from database.enums import AssemblyState
 | 
					from database.enums import AssemblyState
 | 
				
			||||||
@@ -17,13 +18,17 @@ def create_assembly():
 | 
				
			|||||||
        data: dict = request.json
 | 
					        data: dict = request.json
 | 
				
			||||||
        order_id: int = data.get('orderId')
 | 
					        order_id: int = data.get('orderId')
 | 
				
			||||||
        user_id = get_jwt_identity()
 | 
					        user_id = get_jwt_identity()
 | 
				
			||||||
        existing_assembly = database.Assembly.query.filter_by(order_id=order_id).first()
 | 
					        existing_assembly = (database.Assembly.query.
 | 
				
			||||||
 | 
					                             options(joinedload(database.Assembly.user)).
 | 
				
			||||||
 | 
					                             filter_by(order_id=order_id).
 | 
				
			||||||
 | 
					                             first())
 | 
				
			||||||
        if existing_assembly:
 | 
					        if existing_assembly:
 | 
				
			||||||
            response = {
 | 
					            response = {
 | 
				
			||||||
                'ok': False,
 | 
					                'ok': False,
 | 
				
			||||||
                'message': 'Сборка этого товара уже была запущена',
 | 
					                'message': 'Сборка этого товара уже была запущена',
 | 
				
			||||||
                'assemblyId': existing_assembly.id,
 | 
					                'assemblyId': existing_assembly.id,
 | 
				
			||||||
                'statusCode': 'ASSEMBLY_ALREADY_EXISTS'
 | 
					                'statusCode': 'ASSEMBLY_ALREADY_EXISTS',
 | 
				
			||||||
 | 
					                'userName': existing_assembly.user.login
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            return jsonify(response)
 | 
					            return jsonify(response)
 | 
				
			||||||
        active_assembly = database.Assembly.query.filter(database.Assembly.user_id == user_id,
 | 
					        active_assembly = database.Assembly.query.filter(database.Assembly.user_id == user_id,
 | 
				
			||||||
@@ -111,6 +116,33 @@ def cancel_assembly():
 | 
				
			|||||||
        return jsonify(response)
 | 
					        return jsonify(response)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@assembly_blueprint.post('/cancelById')
 | 
				
			||||||
 | 
					def cancel_assembly_by_id():
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        assembly_id = request.json.get('assemblyId')
 | 
				
			||||||
 | 
					        assembly = database.db.session.get(database.Assembly, assembly_id)
 | 
				
			||||||
 | 
					        if not assembly:
 | 
				
			||||||
 | 
					            response = {
 | 
				
			||||||
 | 
					                'ok': False,
 | 
				
			||||||
 | 
					                'message': f'Сборка {assembly_id} не найдена'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return jsonify(response)
 | 
				
			||||||
 | 
					        database.db.session.delete(assembly)
 | 
				
			||||||
 | 
					        database.db.session.commit()
 | 
				
			||||||
 | 
					        response = {
 | 
				
			||||||
 | 
					            'ok': True,
 | 
				
			||||||
 | 
					            'message': f'Сборка {assembly_id} успешно отменена!'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return jsonify(response)
 | 
				
			||||||
 | 
					    except Exception as e:
 | 
				
			||||||
 | 
					        response = {
 | 
				
			||||||
 | 
					            'ok': False,
 | 
				
			||||||
 | 
					            'message': f'Неудалось отменить сборку, ошибка: {e}'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return jsonify(response)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@assembly_blueprint.get('/hasActive')
 | 
					@assembly_blueprint.get('/hasActive')
 | 
				
			||||||
def user_has_active_assembly():
 | 
					def user_has_active_assembly():
 | 
				
			||||||
    user_id = get_jwt_identity()
 | 
					    user_id = get_jwt_identity()
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user