@@ -6,41 +6,83 @@ _logger = logging.getLogger(__name__)
66CUSTOMER_FIELD = 'customer_id'
77INTERNAL_USAGE = 'internal'
88
9-
109class MyController(http.Controller):
10+ """
11+ Controller for managing inventory-related HTTP requests.
12+ """
1113
1214 def _get_partner_inventory(self, partner):
15+ """
16+ Fetch inventory items associated with the given partner.
17+ Args:
18+ partner: res.partner record.
19+ Returns:
20+ Recordset of stock.quant matching the criteria.
21+ """
1322 serials = http.request.env['stock.production.lot'].search([(CUSTOMER_FIELD, '=', partner.id)])
1423 return http.request.env['stock.quant'].search([
1524 ('lot_id', 'in', serials.ids),
1625 ('location_id.usage', '=', INTERNAL_USAGE)
1726 ])
1827
28+ def _parse_item_ids(self, form):
29+ """
30+ Helper to safely parse item_ids from form data.
31+ Args:
32+ form: werkzeug.form object.
33+ Returns:
34+ List of item_ids as integers, or None if parsing fails.
35+ """
36+ try:
37+ return [int(id) for id in form.getlist('item_ids')]
38+ except (ValueError, TypeError):
39+ return None
40+
1941 @http.route('/my/inventory/request_pickup', type='http', auth='user', methods=['POST'], csrf=True)
2042 def request_pickup(self, **kw):
43+ """
44+ Handle inventory pickup requests for logged-in users.
45+ """
2146 user = http.request.env.user
2247 partner = user.partner_id
23- _logger.info('Inventory accessed by partner %s', partner.id)
24- try:
25- item_ids = [int(id) for id in http.request.httprequest.form.getlist('item_ids')]
26- except ValueError:
27- _logger.warning("User %s (ID: %s) provided invalid item_ids: %s", user.login, user.id, http.request.httprequest.form.getlist('item_ids'))
28- return http.request.redirect('/my/inventory?error=invalid_item_ids')
29- _logger.info('Pickup requested for items %s by partner %s', item_ids, partner.id)
30- # ...existing code...
48+ _logger.info('Inventory accessed by partner ID %s', partner.id)
49+
50+ item_ids = self._parse_item_ids(http.request.httprequest.form)
51+ if not item_ids:
52+ _logger.warning("User ID: %s provided invalid item_ids: %s", user.id, http.request.httprequest.form.getlist('item_ids'))
53+ # Redirect with error and user friendly message
54+ return http.request.redirect('/my/inventory?error=invalid_item_ids&message=Please+provide+valid+item+IDs.')
55+
56+ _logger.info('Pickup requested for items %s by partner ID %s', item_ids, partner.id)
57+ # ...existing pickup processing code should be placed here...
58+ return http.request.redirect('/my/inventory?success=pickup_requested')
3159
3260 @http.route('/my/inventory', type='http', auth='user', website=True, methods=['GET'], csrf=True)
3361 def my_inventory(self, **kw):
62+ """
63+ Display inventory relevant to the logged-in user.
64+ """
3465 user = http.request.env.user
3566 partner = user.partner_id
3667 quants = self._get_partner_inventory(partner)
68+
69+ # Show error message from query parameters if present
70+ error = http.request.params.get('error')
71+ message = http.request.params.get('message', '')
72+ success = http.request.params.get('success')
73+ if error:
74+ message = message or 'There was a problem with your request.'
75+ elif not quants:
76+ message = 'No inventory items found. Please contact support if this issue persists.'
77+ elif success:
78+ message = 'Your pickup request has been submitted.'
79+
3780 return http.request.render(
3881 'records_management.inventory_template',
3982 {
4083 'quants': quants,
41- 'message': 'No inventory items found.' if not quants else ''
84+ 'message': message
4285 }
4386 )
4487
45- # ...existing code...
46-
88+ # ...other controller logic can be added here...
0 commit comments