sipro blueprint
This commit is contained in:
		
							
								
								
									
										1
									
								
								app.py
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								app.py
									
									
									
									
									
								
							@@ -30,6 +30,7 @@ blueprints = [
 | 
				
			|||||||
    (routes.assembly_blueprint, '/assembly'),
 | 
					    (routes.assembly_blueprint, '/assembly'),
 | 
				
			||||||
    (routes.general_blueprint, '/general'),
 | 
					    (routes.general_blueprint, '/general'),
 | 
				
			||||||
    (routes.application_blueprint, '/application'),
 | 
					    (routes.application_blueprint, '/application'),
 | 
				
			||||||
 | 
					    (routes.sipro_blueprint, '/sipro'),
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for blueprint, url_prefix in blueprints:
 | 
					for blueprint, url_prefix in blueprints:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										11
									
								
								auxiliary.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								auxiliary.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					def to_nested_dict(row):
 | 
				
			||||||
 | 
					    result = {}
 | 
				
			||||||
 | 
					    for key, value in row._mapping.items():
 | 
				
			||||||
 | 
					        keys = key.split('.')
 | 
				
			||||||
 | 
					        current_level = result
 | 
				
			||||||
 | 
					        for part in keys[:-1]:
 | 
				
			||||||
 | 
					            if part not in current_level:
 | 
				
			||||||
 | 
					                current_level[part] = {}
 | 
				
			||||||
 | 
					            current_level = current_level[part]
 | 
				
			||||||
 | 
					        current_level[keys[-1]] = value
 | 
				
			||||||
 | 
					    return result
 | 
				
			||||||
@@ -5,3 +5,4 @@ from routes.printing import printing_blueprint
 | 
				
			|||||||
from routes.assembly import assembly_blueprint
 | 
					from routes.assembly import assembly_blueprint
 | 
				
			||||||
from routes.general import general_blueprint
 | 
					from routes.general import general_blueprint
 | 
				
			||||||
from routes.application import application_blueprint
 | 
					from routes.application import application_blueprint
 | 
				
			||||||
 | 
					from routes.sipro import sipro_blueprint
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										53
									
								
								routes/sipro.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								routes/sipro.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
				
			|||||||
 | 
					from enum import StrEnum
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from flask import Blueprint, request
 | 
				
			||||||
 | 
					from sqlalchemy import func
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import auxiliary
 | 
				
			||||||
 | 
					import database
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					sipro_blueprint = Blueprint('sipro', __name__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ExpandParam(StrEnum):
 | 
				
			||||||
 | 
					    USER = 'user'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@sipro_blueprint.before_request
 | 
				
			||||||
 | 
					def auth():
 | 
				
			||||||
 | 
					    API_KEY = '5D809ED08080B5F204443B31374BD6A5'
 | 
				
			||||||
 | 
					    if request.headers.get('Authorization') != API_KEY:
 | 
				
			||||||
 | 
					        return {'error': 'Unauthorized'}, 401
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@sipro_blueprint.post('/assemblyInfo')
 | 
				
			||||||
 | 
					def assembly_info():
 | 
				
			||||||
 | 
					    params: dict = request.json
 | 
				
			||||||
 | 
					    expand_param = params.get('expand')
 | 
				
			||||||
 | 
					    order_ids = params.get('orderIds')
 | 
				
			||||||
 | 
					    expand_list = expand_param if expand_param else []
 | 
				
			||||||
 | 
					    datetime_format = 'YYYY-MM-DD HH24:MI:SS'
 | 
				
			||||||
 | 
					    entity_list = [
 | 
				
			||||||
 | 
					        database.Assembly.id.label('id'),
 | 
				
			||||||
 | 
					        database.Assembly.order_id.label('order_id'),
 | 
				
			||||||
 | 
					        func.to_char(database.Assembly.created_at, datetime_format).label('created_at'),
 | 
				
			||||||
 | 
					        func.to_char(database.Assembly.ended_at, datetime_format).label('ended_at'),
 | 
				
			||||||
 | 
					        database.Assembly.is_active.label('is_active'),
 | 
				
			||||||
 | 
					        database.Assembly.state.label('state')
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					    query = database.Assembly.query
 | 
				
			||||||
 | 
					    for expand in expand_list:
 | 
				
			||||||
 | 
					        match expand:
 | 
				
			||||||
 | 
					            case ExpandParam.USER:
 | 
				
			||||||
 | 
					                query = query.join(database.User)
 | 
				
			||||||
 | 
					                entity_list.extend([
 | 
				
			||||||
 | 
					                    database.User.id.label('user.id'),
 | 
				
			||||||
 | 
					                    database.User.login.label('user.login'),
 | 
				
			||||||
 | 
					                ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if order_ids:
 | 
				
			||||||
 | 
					        query = query.filter(database.Assembly.order_id.in_(order_ids))
 | 
				
			||||||
 | 
					    query = query.with_entities(*entity_list)
 | 
				
			||||||
 | 
					    result = query.all()
 | 
				
			||||||
 | 
					    json_result = [auxiliary.to_nested_dict(row) for row in result]
 | 
				
			||||||
 | 
					    return json_result
 | 
				
			||||||
		Reference in New Issue
	
	Block a user