[FIX] website_sale_aplicoop: Remove redundant string= attributes and fix OCA linting warnings
- Remove redundant string= from 17 field definitions where name matches string value (W8113) - Convert @staticmethod to instance methods in selection methods for proper self.env._() access - Fix W8161 (prefer-env-translation) by using self.env._() instead of standalone _() - Fix W8301/W8115 (translation-not-lazy) by proper placement of % interpolation outside self.env._() - Remove unused imports of odoo._ from group_order.py and sale_order_extension.py - All OCA linting warnings in website_sale_aplicoop main models are now resolved Changes: - website_sale_aplicoop/models/group_order.py: 21 field definitions cleaned - website_sale_aplicoop/models/sale_order_extension.py: 5 field definitions cleaned + @staticmethod conversion - Consistent with OCA standards for addon submission
This commit is contained in:
parent
5c89795e30
commit
6fbc7b9456
73 changed files with 5386 additions and 4354 deletions
|
|
@ -1,8 +1,8 @@
|
|||
# CSS Architecture - Website Sale Aplicoop
|
||||
|
||||
**Refactoring Date**: 7 de febrero de 2026
|
||||
**Status**: ✅ Complete
|
||||
**Previous Size**: 2,986 líneas en 1 archivo
|
||||
**Refactoring Date**: 7 de febrero de 2026
|
||||
**Status**: ✅ Complete
|
||||
**Previous Size**: 2,986 líneas en 1 archivo
|
||||
**New Size**: ~400 líneas distribuidas en 15 archivos modulares
|
||||
|
||||
---
|
||||
|
|
@ -59,43 +59,43 @@ website_sale_aplicoop/static/src/css/
|
|||
## 📊 Desglose de Archivos
|
||||
|
||||
### **base/** - Fundamentos
|
||||
- **variables.css** (~80 líneas)
|
||||
- **variables.css** (~80 líneas)
|
||||
Colores, tipografía, espaciados, sombras, transiciones, z-index
|
||||
- **utilities.css** (~15 líneas)
|
||||
- **utilities.css** (~15 líneas)
|
||||
Clases utilitarias reutilizables (.sr-only, .text-muted, etc)
|
||||
|
||||
### **layout/** - Estructura Global
|
||||
- **pages.css** (~70 líneas)
|
||||
- **pages.css** (~70 líneas)
|
||||
Fondos de página, gradientes, pseudo-elementos (::before)
|
||||
- **header.css** (~100 líneas)
|
||||
- **header.css** (~100 líneas)
|
||||
Headers, navegación, títulos, información de pedidos
|
||||
- **responsive.css** (~200 líneas)
|
||||
- **responsive.css** (~200 líneas)
|
||||
Todas las media queries (4 breakpoints: 992px, 768px, 576px, etc)
|
||||
|
||||
### **components/** - Elementos Reutilizables
|
||||
- **product-card.css** (~80 líneas)
|
||||
- **product-card.css** (~80 líneas)
|
||||
Tarjetas de producto con hover, imagen, título, precio
|
||||
- **order-card.css** (~100 líneas)
|
||||
- **order-card.css** (~100 líneas)
|
||||
Tarjetas de orden (Eskaera) con metadatos, badges
|
||||
- **cart.css** (~150 líneas)
|
||||
- **cart.css** (~150 líneas)
|
||||
Carrito lateral, items, total, botones save/reload
|
||||
- **buttons.css** (~80 líneas)
|
||||
- **buttons.css** (~80 líneas)
|
||||
Botones primarios, checkout, acciones
|
||||
- **quantity-control.css** (~100 líneas)
|
||||
- **quantity-control.css** (~100 líneas)
|
||||
Control de cantidad (spinners + input numérico)
|
||||
- **forms.css** (~70 líneas)
|
||||
- **forms.css** (~70 líneas)
|
||||
Inputs, selects, checkboxes, labels
|
||||
- **alerts.css** (~50 líneas)
|
||||
- **alerts.css** (~50 líneas)
|
||||
Alertas, notificaciones, toasts
|
||||
|
||||
### **sections/** - Layouts Específicos de Página
|
||||
- **products-grid.css** (~25 líneas)
|
||||
- **products-grid.css** (~25 líneas)
|
||||
Grid de productos con responsive
|
||||
- **order-list.css** (~40 líneas)
|
||||
- **order-list.css** (~40 líneas)
|
||||
Lista de órdenes (Eskaera page)
|
||||
- **checkout.css** (~100 líneas)
|
||||
- **checkout.css** (~100 líneas)
|
||||
Tabla de checkout, totales, summary
|
||||
- **info-cards.css** (~50 líneas)
|
||||
- **info-cards.css** (~50 líneas)
|
||||
Tarjetas de información, metadatos
|
||||
|
||||
---
|
||||
|
|
@ -183,7 +183,7 @@ Permitiría mejor nesting y variables más poderosas.
|
|||
|
||||
## 📈 Cambios Visuales
|
||||
|
||||
✅ **NINGUNO** - La refactorización es solo organizacional
|
||||
✅ **NINGUNO** - La refactorización es solo organizacional
|
||||
El CSS compilado genera **exactamente el mismo output** que antes.
|
||||
|
||||
---
|
||||
|
|
@ -231,6 +231,6 @@ grep -r "components/\|sections/\|base/\|layout/" css/website_sale.css
|
|||
|
||||
---
|
||||
|
||||
**Mantenido por**: Equipo de Frontend
|
||||
**Última actualización**: 7 de febrero de 2026
|
||||
**Mantenido por**: Equipo de Frontend
|
||||
**Última actualización**: 7 de febrero de 2026
|
||||
**Licencia**: AGPL-3.0
|
||||
|
|
|
|||
|
|
@ -16,26 +16,27 @@
|
|||
--info-color: #17a2b8;
|
||||
--light-color: #f8f9fa;
|
||||
--dark-color: #2d3748;
|
||||
|
||||
|
||||
/* Text colors */
|
||||
--text-primary: #1a202c;
|
||||
--text-secondary: #4a5568;
|
||||
--text-muted: #6b7280;
|
||||
|
||||
|
||||
/* Border colors */
|
||||
--border-light: #e2e8f0;
|
||||
--border-medium: #cbd5e0;
|
||||
--border-dark: #718096;
|
||||
|
||||
|
||||
/* ========== TYPOGRAPHY ========== */
|
||||
--font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||
--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue",
|
||||
Arial, sans-serif;
|
||||
--font-weight-light: 300;
|
||||
--font-weight-normal: 400;
|
||||
--font-weight-medium: 500;
|
||||
--font-weight-semibold: 600;
|
||||
--font-weight-bold: 700;
|
||||
--font-weight-extrabold: 800;
|
||||
|
||||
|
||||
/* ========== SPACING ========== */
|
||||
--spacing-xs: 0.25rem;
|
||||
--spacing-sm: 0.5rem;
|
||||
|
|
@ -43,23 +44,23 @@
|
|||
--spacing-lg: 1.5rem;
|
||||
--spacing-xl: 2rem;
|
||||
--spacing-2xl: 3rem;
|
||||
|
||||
|
||||
/* ========== BORDER RADIUS ========== */
|
||||
--radius-sm: 0.25rem;
|
||||
--radius-md: 0.5rem;
|
||||
--radius-lg: 0.75rem;
|
||||
--radius-xl: 1rem;
|
||||
|
||||
|
||||
/* ========== SHADOWS ========== */
|
||||
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||
--shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.12);
|
||||
|
||||
|
||||
/* ========== TRANSITIONS ========== */
|
||||
--transition-fast: 200ms ease;
|
||||
--transition-normal: 320ms cubic-bezier(.2, .9, .2, 1);
|
||||
--transition-normal: 320ms cubic-bezier(0.2, 0.9, 0.2, 1);
|
||||
--transition-slow: 500ms ease;
|
||||
|
||||
|
||||
/* ========== Z-INDEX ========== */
|
||||
--z-dropdown: 1000;
|
||||
--z-sticky: 1020;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,8 @@
|
|||
border: 1px solid rgba(90, 103, 216, 0.12);
|
||||
border-radius: 0.75rem;
|
||||
box-shadow: 0 6px 18px rgba(28, 37, 80, 0.06);
|
||||
transition: transform 320ms cubic-bezier(.2, .9, .2, 1), box-shadow 320ms, border-color 320ms, background 320ms;
|
||||
transition: transform 320ms cubic-bezier(0.2, 0.9, 0.2, 1), box-shadow 320ms, border-color 320ms,
|
||||
background 320ms;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -139,7 +140,7 @@
|
|||
}
|
||||
|
||||
.eskaera-order-card .btn::before {
|
||||
content: '';
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
|
|
|
|||
|
|
@ -51,7 +51,11 @@
|
|||
}
|
||||
|
||||
.product-card:hover .card-body {
|
||||
background: linear-gradient(135deg, rgba(108, 117, 125, 0.10) 0%, rgba(108, 117, 125, 0.08) 100%);
|
||||
background: linear-gradient(
|
||||
135deg,
|
||||
rgba(108, 117, 125, 0.1) 0%,
|
||||
rgba(108, 117, 125, 0.08) 100%
|
||||
);
|
||||
}
|
||||
|
||||
.product-card .card-title {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
.add-to-cart-form .input-group {
|
||||
width: 100%;
|
||||
gap: 0;
|
||||
padding: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
/**
|
||||
* Tag Filter Badges Component
|
||||
*
|
||||
*
|
||||
* Styles for interactive tag filter badges in the product search/filter bar.
|
||||
* Badges toggle between secondary (unselected) and primary (selected) states.
|
||||
*/
|
||||
|
|
@ -65,7 +65,7 @@
|
|||
.tag-filter-badges {
|
||||
gap: 0.375rem;
|
||||
}
|
||||
|
||||
|
||||
.tag-filter-badge {
|
||||
padding: 0.375rem 0.625rem;
|
||||
font-size: 0.8125rem;
|
||||
|
|
|
|||
|
|
@ -4,13 +4,15 @@
|
|||
* Page backgrounds and main layout structures
|
||||
*/
|
||||
|
||||
html, body {
|
||||
html,
|
||||
body {
|
||||
background-color: transparent !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
body.website_published {
|
||||
background: linear-gradient(135deg,
|
||||
background: linear-gradient(
|
||||
135deg,
|
||||
color-mix(in srgb, var(--primary-color) 30%, white),
|
||||
color-mix(in srgb, var(--primary-color) 60%, black)
|
||||
) !important;
|
||||
|
|
@ -32,21 +34,24 @@ body.website_published .eskaera-checkout-page {
|
|||
|
||||
.eskaera-page,
|
||||
.eskaera-generic-page {
|
||||
background: linear-gradient(180deg,
|
||||
background: linear-gradient(
|
||||
180deg,
|
||||
color-mix(in srgb, var(--primary-color) 10%, white),
|
||||
color-mix(in srgb, var(--primary-color) 70%, black)
|
||||
) !important;
|
||||
}
|
||||
|
||||
.eskaera-shop-page {
|
||||
background: linear-gradient(135deg,
|
||||
background: linear-gradient(
|
||||
135deg,
|
||||
color-mix(in srgb, var(--primary-color) 10%, white),
|
||||
color-mix(in srgb, var(--primary-color) 10%, rgb(135, 135, 135))
|
||||
) !important;
|
||||
}
|
||||
|
||||
.eskaera-checkout-page {
|
||||
background: linear-gradient(-135deg,
|
||||
background: linear-gradient(
|
||||
-135deg,
|
||||
color-mix(in srgb, var(--primary-color) 0%, white),
|
||||
color-mix(in srgb, var(--primary-color) 60%, black)
|
||||
) !important;
|
||||
|
|
@ -54,29 +59,54 @@ body.website_published .eskaera-checkout-page {
|
|||
|
||||
.eskaera-page::before,
|
||||
.eskaera-generic-page::before {
|
||||
background-image:
|
||||
radial-gradient(circle at 20% 50%, color-mix(in srgb, var(--primary-color, white) 20%, transparent) 0%, transparent 50%),
|
||||
radial-gradient(circle at 80% 80%, color-mix(in srgb, var(--primary-color) 25%, transparent) 0%, transparent 50%),
|
||||
radial-gradient(circle at 40% 20%, color-mix(in srgb, var(--primary-color, white) 15%, transparent) 0%, transparent 50%);
|
||||
background-image: radial-gradient(
|
||||
circle at 20% 50%,
|
||||
color-mix(in srgb, var(--primary-color, white) 20%, transparent) 0%,
|
||||
transparent 50%
|
||||
),
|
||||
radial-gradient(
|
||||
circle at 80% 80%,
|
||||
color-mix(in srgb, var(--primary-color) 25%, transparent) 0%,
|
||||
transparent 50%
|
||||
),
|
||||
radial-gradient(
|
||||
circle at 40% 20%,
|
||||
color-mix(in srgb, var(--primary-color, white) 15%, transparent) 0%,
|
||||
transparent 50%
|
||||
);
|
||||
}
|
||||
|
||||
.eskaera-shop-page::before {
|
||||
background-image:
|
||||
radial-gradient(circle at 15% 30%, color-mix(in srgb, var(--primary-color, white) 18%, transparent) 0%, transparent 50%),
|
||||
radial-gradient(circle at 85% 70%, color-mix(in srgb, var(--primary-color) 22%, transparent) 0%, transparent 50%);
|
||||
background-image: radial-gradient(
|
||||
circle at 15% 30%,
|
||||
color-mix(in srgb, var(--primary-color, white) 18%, transparent) 0%,
|
||||
transparent 50%
|
||||
),
|
||||
radial-gradient(
|
||||
circle at 85% 70%,
|
||||
color-mix(in srgb, var(--primary-color) 22%, transparent) 0%,
|
||||
transparent 50%
|
||||
);
|
||||
}
|
||||
|
||||
.eskaera-checkout-page::before {
|
||||
background-image:
|
||||
radial-gradient(circle at 20% 50%, color-mix(in srgb, var(--primary-color, white) 20%, transparent) 0%, transparent 50%),
|
||||
radial-gradient(circle at 80% 80%, color-mix(in srgb, var(--primary-color) 25%, transparent) 0%, transparent 50%);
|
||||
background-image: radial-gradient(
|
||||
circle at 20% 50%,
|
||||
color-mix(in srgb, var(--primary-color, white) 20%, transparent) 0%,
|
||||
transparent 50%
|
||||
),
|
||||
radial-gradient(
|
||||
circle at 80% 80%,
|
||||
color-mix(in srgb, var(--primary-color) 25%, transparent) 0%,
|
||||
transparent 50%
|
||||
);
|
||||
}
|
||||
|
||||
.eskaera-page::before,
|
||||
.eskaera-shop-page::before,
|
||||
.eskaera-generic-page::before,
|
||||
.eskaera-checkout-page::before {
|
||||
content: '';
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
|
|
|||
|
|
@ -17,20 +17,20 @@
|
|||
.cart-items {
|
||||
max-height: 400px;
|
||||
}
|
||||
|
||||
|
||||
#cart-items-container {
|
||||
width: 100%;
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
|
||||
.list-group-item {
|
||||
padding: 0.75rem;
|
||||
}
|
||||
|
||||
|
||||
.list-group-item h6 {
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
|
||||
.list-group-item strong {
|
||||
min-width: 70px;
|
||||
}
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
.cart-header h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
|
||||
.cart-title-lg {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
|
@ -476,13 +476,13 @@
|
|||
.product-tags {
|
||||
font-size: 1.1rem !important;
|
||||
}
|
||||
|
||||
|
||||
/* Scale down quantity input for 6-column layout */
|
||||
.add-to-cart-form .product-qty {
|
||||
font-size: 0.85rem;
|
||||
max-width: 55px;
|
||||
}
|
||||
|
||||
|
||||
.add-to-cart-form .qty-decrease,
|
||||
.add-to-cart-form .qty-increase {
|
||||
font-size: 0.75rem;
|
||||
|
|
@ -495,13 +495,13 @@
|
|||
.product-tags {
|
||||
font-size: 1.25rem !important;
|
||||
}
|
||||
|
||||
|
||||
/* Scale down quantity input for 5-column layout */
|
||||
.add-to-cart-form .product-qty {
|
||||
font-size: 0.9rem;
|
||||
max-width: 60px;
|
||||
}
|
||||
|
||||
|
||||
.add-to-cart-form .qty-decrease,
|
||||
.add-to-cart-form .qty-increase {
|
||||
font-size: 0.8rem;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
grid-template-columns: 1fr 1fr;
|
||||
gap: 0.5rem;
|
||||
align-items: start;
|
||||
margin-top: 0.5rem;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.card-meta-compact {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
/**
|
||||
* Website Sale Aplicoop - Main CSS Index File
|
||||
* This file imports all component stylesheets in the correct order
|
||||
*
|
||||
*
|
||||
* Architecture:
|
||||
* 1. Base & Variables (colors, spacing, typography)
|
||||
* 2. Layout & Pages (page backgrounds, containers)
|
||||
|
|
@ -15,36 +15,36 @@
|
|||
/* ============================================
|
||||
1. BASE & VARIABLES
|
||||
============================================ */
|
||||
@import 'base/variables.css';
|
||||
@import 'base/utilities.css';
|
||||
@import "base/variables.css";
|
||||
@import "base/utilities.css";
|
||||
|
||||
/* ============================================
|
||||
2. LAYOUT & PAGES
|
||||
============================================ */
|
||||
@import 'layout/pages.css';
|
||||
@import 'layout/header.css';
|
||||
@import "layout/pages.css";
|
||||
@import "layout/header.css";
|
||||
|
||||
/* ============================================
|
||||
3. COMPONENTS (Reusable UI elements)
|
||||
============================================ */
|
||||
@import 'components/product-card.css';
|
||||
@import 'components/order-card.css';
|
||||
@import 'components/cart.css';
|
||||
@import 'components/buttons.css';
|
||||
@import 'components/quantity-control.css';
|
||||
@import 'components/forms.css';
|
||||
@import 'components/alerts.css';
|
||||
@import 'components/tag-filter.css';
|
||||
@import "components/product-card.css";
|
||||
@import "components/order-card.css";
|
||||
@import "components/cart.css";
|
||||
@import "components/buttons.css";
|
||||
@import "components/quantity-control.css";
|
||||
@import "components/forms.css";
|
||||
@import "components/alerts.css";
|
||||
@import "components/tag-filter.css";
|
||||
|
||||
/* ============================================
|
||||
4. SECTIONS (Page-specific layouts)
|
||||
============================================ */
|
||||
@import 'sections/products-grid.css';
|
||||
@import 'sections/order-list.css';
|
||||
@import 'sections/checkout.css';
|
||||
@import 'sections/info-cards.css';
|
||||
@import "sections/products-grid.css";
|
||||
@import "sections/order-list.css";
|
||||
@import "sections/checkout.css";
|
||||
@import "sections/info-cards.css";
|
||||
|
||||
/* ============================================
|
||||
5. RESPONSIVE DESIGN (Media queries)
|
||||
============================================ */
|
||||
@import 'layout/responsive.css';
|
||||
@import "layout/responsive.css";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue