Ir al contenido
Menú
Se marcó esta pregunta
1316 Vistas

Morning Guys. I have this module that has a kanban view and i would like to display all the stages nut fold the ones with no record in them. Here is my model

# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
from itertools import groupby
import json

import PyPDF2
import re
import io
from odoo import api, Command, fields, models, tools, SUPERUSER_ID, _, _lt
from random import randint
from datetime import date, datetime, timedelta

import logging

_logger = logging.getLogger(__name__)



class TenderTracker(models.Model):
_name = 'tender.initial'
_description = 'Tender Initialization'
_inherit = ['mail.thread', 'mail.activity.mixin', 'rating.mixin']

name = fields.Char(string='Tender Title', required=True, tracking=True)
validity_period = fields.Integer(string='Validity Period (Days)', tracking=True)
submission_deadline = fields.Datetime(string='Submission Deadline', tracking=True)
opening_date = fields.Datetime(string='Tender Opening Date', tracking=True)
document_fee = fields.Float(string='Document Fee')
bid_bond_required = fields.Boolean(string='Bid Bond Required')
eligibility_criteria = fields.Text(string='Eligibility Criteria')
document = fields.Binary(string='Document', tracking=True)
user_name = fields.Many2one('tender.users')
email = fields.Char(related='user_name.email')

extracted_text = fields.Text(string='Extracted Text')
progress = fields.Integer()
progress_percentage = fields.Float(compute='_compute_progress_percentage')
priority = fields.Selection([
('0', 'Normal'),
('1', 'Important'),
], default='0', index=True, string="Starred")
color = fields.Text(string='Color Index')
stage_id = fields.Many2one('tender.stage', string='Stage', trscking=True)
tag_ids = fields.Many2one('tender.tags', string='Tags')
kanban_state = fields.Selection([
('draft', 'Draft'),
('bidding', 'Bidding'),
('evaluation', 'Evaluation'),
('won', 'Won'),
('lost', 'Lost'),
('cancelled', 'Cancelled'),
('dropped', 'Dropped')],
string='Status', copy=False, default='draft', group_expand='_expand_states', index=True, required=True)

def _expand_states(self, states, domain, order):
return [key for key, val in type(self).kanban_state.selection]

@api.onchange('stage_id')
def _onchange_stage_id(self):
# Update kanban_state based on the selected stage
if self.stage_id:
# Your logic to map stages to kanban_state values
if self.stage_id.name == 'Draft':
self.kanban_state = 'draft'
elif self.stage_id.name == 'Bidding':
self.kanban_state = 'bidding'
elif self.stage_id.name == 'Evaluation':
self.kanban_state = 'evaluation'
elif self.stage_id.name == 'Won':
self.kanban_state = 'won'
elif self.stage_id.name == 'Lost':
self.kanban_state = 'lost'
elif self.stage_id.name == 'Cancelled':
self.kanban_state = 'cancelled'
else:
self.kanban_state = 'dropped'

@api.onchange('document')
def _onchange_document(self):
_logger.info("Onchange Document method triggered")
try:
if self.document:
# Extract text from the document
extracted_text = self.extract_text_from_pdf()
_logger.info("Text has been extracted")
self.update({'extracted_text': extracted_text})
_logger.info("Extracted text has been saved into the 'extracted_text' variable")

# Update tender information based on extracted text
self.update_tender_info_from_text(extracted_text)
_logger.info("Tender information updated using the extracted text")

except Exception as e:
_logger.error(f"Error during onchange_document: {e}")


class TenderUsers(models.Model):
# _inherit = "res.users"
""" Tags of tender's users """
_name = "tender.users"
_description = "Tender Users"
_inherit = ['mail.thread', 'mail.activity.mixin', 'rating.mixin']
name = fields.Text(string='Name', required=True, tracking=True)
email = fields.Char(string='Email', required=True, tracking=True)


class TenderStage(models.Model):
_name = 'tender.stage'
_description = 'Tender Stage'
_inherit = ['mail.thread', 'mail.activity.mixin']
# _fold_name = 'fold'

name = fields.Char(string='Stage Name', required=True, tracking=True)
sequence = fields.Float(string='Sequence', help="Gives the sequence order when displaying a list of tenders.")
description = fields.Text(tracking=True)
fold = fields.Boolean('Folded in Kanban', help="This stage is folded in the kanban view where there are no records in that stage to display.", default=True)



What do i need to change to achieve this? Thanks.

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
1
jun 25
1852
3
jul 25
3471
1
may 25
1595
1
may 25
1840
4
may 25
2949