This commit is contained in:
Ladebeze66 2025-03-20 10:31:00 +01:00
parent 6f7b59b079
commit 56d7e7271f
46 changed files with 5936 additions and 8 deletions

View File

@ -1,2 +1,3 @@
odoorpc
bs4
bs4
html

Binary file not shown.

View File

@ -0,0 +1,260 @@
import os
import json
import re
from bs4 import BeautifulSoup
import html
import shutil
from typing import Dict, List, Any, Optional, Tuple, Union
def clean_html(html_content: str) -> str:
"""
Nettoie le contenu HTML en supprimant toutes les balises mais en préservant le texte.
Args:
html_content: Contenu HTML à nettoyer
Returns:
Texte nettoyé sans balises HTML
"""
if not html_content:
return ""
# Utiliser BeautifulSoup pour extraire le texte
soup = BeautifulSoup(html_content, 'html.parser')
# Récupérer le texte sans balises HTML
text = soup.get_text(separator=' ', strip=True)
# Décodage des entités HTML spéciales
text = html.unescape(text)
# Nettoyer les espaces multiples
text = re.sub(r'\s+', ' ', text)
# Nettoyer les lignes vides multiples
text = re.sub(r'\n\s*\n', '\n\n', text)
return text.strip()
def process_message_file(message_file_path: str, output_dir: str) -> None:
"""
Traite un fichier de message en nettoyant le contenu HTML des messages.
Args:
message_file_path: Chemin du fichier de message à traiter
output_dir: Répertoire de sortie pour le fichier traité
"""
try:
with open(message_file_path, 'r', encoding='utf-8') as f:
message_data = json.load(f)
# Vérifier si le message contient un corps HTML
if 'body' in message_data and message_data['body']:
# Remplacer le contenu HTML par le texte filtré
message_data['body'] = clean_html(message_data['body'])
# Écrire le message filtré
output_file_path = os.path.join(output_dir, os.path.basename(message_file_path))
with open(output_file_path, 'w', encoding='utf-8') as f:
json.dump(message_data, f, indent=4, ensure_ascii=False)
print(f"Message traité: {os.path.basename(message_file_path)}")
except Exception as e:
print(f"Erreur lors du traitement du fichier {message_file_path}: {e}")
def process_messages_threads(threads_file_path: str, output_dir: str) -> None:
"""
Traite un fichier de threads de messages en nettoyant le contenu HTML.
Args:
threads_file_path: Chemin du fichier de threads de messages
output_dir: Répertoire de sortie pour le fichier traité
"""
try:
with open(threads_file_path, 'r', encoding='utf-8') as f:
threads_data = json.load(f)
# Parcourir tous les threads
for thread_id, thread in threads_data.items():
# Traiter le message principal
if thread.get('main_message') and 'body' in thread['main_message']:
thread['main_message']['body'] = clean_html(thread['main_message']['body'])
# Traiter les réponses
for i, reply in enumerate(thread.get('replies', [])):
if 'body' in reply:
thread['replies'][i]['body'] = clean_html(reply['body'])
# Écrire le fichier de threads filtré
output_file_path = os.path.join(output_dir, os.path.basename(threads_file_path))
with open(output_file_path, 'w', encoding='utf-8') as f:
json.dump(threads_data, f, indent=4, ensure_ascii=False)
print(f"Fichier de threads traité: {os.path.basename(threads_file_path)}")
except Exception as e:
print(f"Erreur lors du traitement du fichier {threads_file_path}: {e}")
def process_messages_collection(messages_file_path: str, output_dir: str) -> None:
"""
Traite un fichier de collection de messages en nettoyant le contenu HTML.
Args:
messages_file_path: Chemin du fichier de collection de messages
output_dir: Répertoire de sortie pour le fichier traité
"""
try:
with open(messages_file_path, 'r', encoding='utf-8') as f:
messages_data = json.load(f)
# Parcourir tous les messages
for i, message in enumerate(messages_data):
if 'body' in message:
messages_data[i]['body'] = clean_html(message['body'])
# Écrire le fichier de messages filtré
output_file_path = os.path.join(output_dir, os.path.basename(messages_file_path))
with open(output_file_path, 'w', encoding='utf-8') as f:
json.dump(messages_data, f, indent=4, ensure_ascii=False)
print(f"Collection de messages traitée: {os.path.basename(messages_file_path)}")
except Exception as e:
print(f"Erreur lors du traitement du fichier {messages_file_path}: {e}")
def process_ticket_folder(ticket_folder: str, output_base_dir: str) -> None:
"""
Traite un dossier de ticket en filtrant les messages HTML.
Args:
ticket_folder: Chemin du dossier du ticket à traiter
output_base_dir: Répertoire de base pour la sortie des fichiers filtrés
"""
ticket_name = os.path.basename(ticket_folder)
output_ticket_dir = os.path.join(output_base_dir, ticket_name)
# Créer le répertoire de sortie s'il n'existe pas
if not os.path.exists(output_ticket_dir):
os.makedirs(output_ticket_dir, exist_ok=True)
# Copier les fichiers d'information du ticket
for file_name in ['ticket_info.json', 'contact_info.json', 'activities.json', 'followers.json', 'attachments_info.json', 'timesheets.json']:
src_file = os.path.join(ticket_folder, file_name)
if os.path.exists(src_file):
dst_file = os.path.join(output_ticket_dir, file_name)
shutil.copy2(src_file, dst_file)
print(f"Fichier copié: {file_name}")
# Traitement des fichiers de messages
src_messages_dir = os.path.join(ticket_folder, 'messages')
if os.path.exists(src_messages_dir):
# Créer le répertoire de messages filtré
filtered_messages_dir = os.path.join(output_ticket_dir, 'messages')
if not os.path.exists(filtered_messages_dir):
os.makedirs(filtered_messages_dir, exist_ok=True)
# Traiter chaque fichier de message individuel
for file_name in os.listdir(src_messages_dir):
if file_name.endswith('.json'):
message_file_path = os.path.join(src_messages_dir, file_name)
process_message_file(message_file_path, filtered_messages_dir)
# Traitement des fichiers de messages regroupés
messages_file = os.path.join(ticket_folder, 'messages.json')
message_threads_file = os.path.join(ticket_folder, 'message_threads.json')
if os.path.exists(messages_file):
process_messages_collection(messages_file, output_ticket_dir)
if os.path.exists(message_threads_file):
process_messages_threads(message_threads_file, output_ticket_dir)
# Copier le répertoire des pièces jointes
src_attachments_dir = os.path.join(ticket_folder, 'attachments')
if os.path.exists(src_attachments_dir):
dst_attachments_dir = os.path.join(output_ticket_dir, 'attachments')
if os.path.exists(dst_attachments_dir):
shutil.rmtree(dst_attachments_dir)
shutil.copytree(src_attachments_dir, dst_attachments_dir)
print(f"Répertoire des pièces jointes copié")
print(f"Traitement du ticket {ticket_name} terminé")
def filter_exported_tickets(source_dir: str = 'exported_tickets', output_dir: str = 'filtered_tickets') -> None:
"""
Filtre les tickets exportés en nettoyant les messages HTML.
Args:
source_dir: Répertoire source contenant les tickets exportés
output_dir: Répertoire de sortie pour les tickets filtrés
"""
if not os.path.exists(source_dir):
print(f"Le répertoire source {source_dir} n'existe pas.")
return
# Créer le répertoire de sortie s'il n'existe pas
if not os.path.exists(output_dir):
os.makedirs(output_dir, exist_ok=True)
# Parcourir tous les éléments du répertoire source
for item in os.listdir(source_dir):
item_path = os.path.join(source_dir, item)
# Vérifier si c'est un dossier qui contient un ticket
if os.path.isdir(item_path) and (
item.startswith('ticket_') or
os.path.exists(os.path.join(item_path, 'ticket_info.json'))
):
process_ticket_folder(item_path, output_dir)
# Si c'est un fichier JSON brut de ticket, le copier simplement
elif os.path.isfile(item_path) and item.endswith('_raw.json'):
shutil.copy2(item_path, os.path.join(output_dir, item))
print(f"Fichier copié: {item}")
print(f"Filtrage des tickets terminé. Les tickets filtrés sont disponibles dans {output_dir}")
def run_filter_wizard() -> None:
"""
Interface utilisateur en ligne de commande pour filtrer les tickets exportés.
"""
print("\n==== FILTRAGE DES MESSAGES DES TICKETS ====")
# Demander le répertoire source
default_source = 'exported_tickets'
source_dir = input(f"Répertoire source (par défaut: {default_source}): ").strip()
if not source_dir:
source_dir = default_source
# Vérifier si le répertoire source existe
if not os.path.exists(source_dir):
print(f"Le répertoire source {source_dir} n'existe pas.")
return
# Demander le répertoire de sortie
default_output = 'filtered_tickets'
output_dir = input(f"Répertoire de sortie (par défaut: {default_output}): ").strip()
if not output_dir:
output_dir = default_output
# Confirmation
print(f"\nLes tickets du répertoire {source_dir} seront filtrés et placés dans {output_dir}.")
confirm = input("Continuer ? (o/n): ").strip().lower()
if confirm == 'o':
filter_exported_tickets(source_dir, output_dir)
print("\nOpération terminée avec succès!")
else:
print("Opération annulée.")
if __name__ == "__main__":
run_filter_wizard()

View File

@ -0,0 +1,478 @@
{
"credit.control.line": "A credit control line",
"account.banking.mandate": "A generic banking mandate",
"account.voucher": "Accounting Voucher",
"agreement": "Agreement",
"account.analytic.account": "Analytic Account",
"hr.applicant": "Applicant",
"account.bank.statement": "Bank Statement",
"res.partner": "Contact",
"hr.contract": "Contract",
"contract.contract": "Contract",
"cetmix.conversation": "Conversation",
"credit.control.communication": "Credit control communication process",
"mail.channel": "Discussion Channel",
"mail.thread": "Email Thread",
"hr.employee": "Employee",
"calendar.event": "Event",
"hr.expense": "Expense",
"hr.expense.sheet": "Expense Report",
"hr.department": "HR Department",
"account.invoice": "Invoice",
"hr.job": "Job Position",
"crm.lead": "Lead/Opportunity",
"mail.blacklist": "Mail Blacklist",
"mail.mass_mailing.contact": "Mass Mailing Contact",
"account.payment.order": "Payment Order",
"account.payment": "Payments",
"product.product": "Product",
"product.template": "Product Template",
"project.project": "Project",
"purchase.order": "Purchase Order",
"sale.order": "Sale Order",
"crm.team": "Sales Channels",
"slide.channel": "Slide Channel",
"slide.slide": "Slides",
"survey.survey": "Survey",
"project.task": "Task",
"credit.control.policy.level": "A credit control policy level",
"mass.operation.mixin": "Abstract Mass Operations",
"mass.operation.wizard.mixin": "Abstract Mass Operations Wizard",
"contract.abstract.contract": "Abstract Recurring Contract",
"contract.abstract.contract.line": "Abstract Recurring Contract Line",
"res.groups": "Access Groups",
"account.account": "Account",
"account.cash.rounding": "Account Cash Rounding",
"account.chart.template": "Account Chart Template",
"account.check.deposit": "Account Check Deposit",
"account.common.report": "Account Common Report",
"account.group": "Account Group",
"account.invoice.send": "Account Invoice Send",
"account.invoice.refund.reason": "Account Invoice refund Reasons",
"report.account.report_journal": "Account Journal Report",
"account.move.reversal": "Account Move Reversal",
"account.print.journal": "Account Print Journal",
"account.reconciliation.widget": "Account Reconciliation widget",
"account.account.tag": "Account Tag",
"account.account.type": "Account Type",
"account.unreconcile": "Account Unreconcile",
"report.account.report_invoice_with_payments": "Account report with payment lines",
"wizard.update.charts.accounts.account": "Account that needs to be updated (new or updated in the template).",
"account.voucher.line": "Accounting Voucher Line",
"account.fiscal.position.account.template": "Accounts Mapping Template of Fiscal Position",
"account.fiscal.position.account": "Accounts Mapping of Fiscal Position",
"ir.actions.act_url": "Action URL",
"ir.actions.act_window": "Action Window",
"ir.actions.act_window_close": "Action Window Close",
"ir.actions.act_window.view": "Action Window View",
"ir.actions.actions": "Actions",
"mail.activity": "Activity",
"mail.activity.mixin": "Activity Mixin",
"mail.activity.type": "Activity Type",
"report.account.report_agedpartnerbalance": "Aged Partner Balance Report",
"agreement.type": "Agreement Types",
"sql.file.wizard": "Allow the user to save the file with sql request's data",
"account.analytic.distribution": "Analytic Account Distribution",
"account.analytic.group": "Analytic Categories",
"account.analytic.line": "Analytic Line",
"account.analytic.tag": "Analytic Tags",
"hr.recruitment.degree": "Applicant Degree",
"ir.module.category": "Application",
"cx.message.partner.assign.wiz": "Assign Partner to Messages",
"project.task.assign.sale": "Assign Sale Order line to tasks",
"ir.attachment": "Attachment",
"product.attribute.value": "Attribute Value",
"auditlog.autovacuum": "Auditlog - Delete old logs",
"auditlog.http.session": "Auditlog - HTTP User session log",
"auditlog.http.request": "Auditlog - HTTP request log",
"auditlog.log": "Auditlog - Log",
"auditlog.log.line": "Auditlog - Log details (fields updated)",
"auditlog.rule": "Auditlog - Rule",
"base.automation": "Automated Action",
"base.automation.line.test": "Automated Rule Line Test",
"base.automation.lead.test": "Automated Rule Test",
"ir.autovacuum": "Automatic Vacuum",
"res.bank": "Bank",
"bank.acc.rec.statement": "Bank Acc Rec Statement",
"res.partner.bank": "Bank Accounts",
"bank.payment.line": "Bank Payment Lines",
"account.bank.statement.cashbox": "Bank Statement Cashbox",
"account.bank.statement.closebalance": "Bank Statement Closing Balance",
"account.bank.statement.line": "Bank Statement Line",
"account.setup.bank.manual.config": "Bank setup manual config",
"base": "Base",
"base_import.import": "Base Import",
"base_import.mapping": "Base Import Mapping",
"board.board": "Board",
"crm.activity.report": "CRM Activity Analysis",
"crm.stage": "CRM Stages",
"calendar.attendee": "Calendar Attendee Information",
"calendar.contacts": "Calendar Contacts",
"mail.shortcode": "Canned Response / Shortcode",
"cash.box.in": "Cash Box In",
"cash.box.out": "Cash Box Out",
"account.cashbox.line": "CashBox Line",
"hr.applicant.category": "Category of applicant",
"change.password.wizard": "Change Password Wizard",
"mail.moderation": "Channel black/white list",
"chorus.flow": "Chorus Flow",
"chorus.partner.service": "Chorus Services attached to a partner",
"ir.actions.client": "Client Action",
"account.common.journal.report": "Common Journal Report",
"base.facturx": "Common methods to generate and parse Factur-X invoices",
"bus.bus": "Communication Bus",
"res.company": "Companies",
"ir.property": "Company Property",
"res.config": "Config",
"res.config.installer": "Config Installer",
"res.config.settings": "Config Settings",
"ir.actions.todo": "Configuration Wizards",
"account.invoice.confirm": "Confirm the selected invoices",
"account.abstract.payment": "Contains the logic shared between models which allows to register payments",
"contract.line": "Contract Line",
"contract.line.wizard": "Contract Line Wizard",
"contract.manually.create.invoice": "Contract Manually Create Invoice Wizard",
"contract.modification": "Contract Modification",
"contract.tag": "Contract Tag",
"contract.template": "Contract Template",
"contract.template.line": "Contract Template Line",
"contract.terminate.reason": "Contract Termination Reason",
"hr.contract.type": "Contract Type",
"crm.lead2opportunity.partner.mass": "Convert Lead to Opportunity (in mass)",
"crm.lead2opportunity.partner": "Convert Lead to Opportunity (not in mass)",
"res.country": "Country",
"res.country.group": "Country Group",
"res.country.state": "Country state",
"project.create.invoice": "Create Invoice from project",
"wizard.ir.model.menu.create": "Create Menu Wizard",
"project.create.sale.order.line": "Create SO Line from project",
"project.create.sale.order": "Create SO from project",
"account.invoice.payment.line.multi": "Create payment lines from invoice tree view",
"credit.control.analysis": "Credit Control Analysis",
"credit.control.policy.changer": "Credit Control Policy Changer",
"account.invoice.refund": "Credit Note",
"credit.control.run": "Credit control line generator",
"res.currency": "Currency",
"res.currency.rate": "Currency Rate",
"ir.ui.view.custom": "Custom View",
"date.range": "Date Range",
"date.range.generator": "Date Range Generator",
"date.range.type": "Date Range Type",
"decimal.precision": "Decimal Precision",
"decimal.precision.test": "Decimal Precision Test",
"ir.default": "Default Values",
"credit.control.policy": "Define a reminder policy",
"ir.demo": "Demo",
"ir.demo_failure.wizard": "Demo Failure wizard",
"ir.demo_failure": "Demo failure",
"res.country.department": "Department",
"digest.digest": "Digest",
"digest.tip": "Digest Tips",
"mail.resend.cancel": "Dismiss notification for resend by model",
"server.config": "Display server configuration",
"mail.followers": "Document Followers",
"prt.mail.message.draft": "Draft Message",
"cx.message.edit.wiz": "Edit Message or Note",
"mail.alias": "Email Aliases",
"mail.alias.mixin": "Email Aliases Mixin",
"mail.mail.statistics": "Email Statistics",
"email_template.preview": "Email Template Preview",
"mail.template": "Email Templates",
"mail.compose.message": "Email composition wizard",
"survey.mail.compose.message": "Email composition wizard for Survey",
"mail.resend.message": "Email resend wizard",
"slide.embed": "Embedded Slides View Counter",
"hr.employee.category": "Employee Category",
"calendar.alarm": "Event Alarm",
"calendar.alarm_manager": "Event Alarm Manager",
"calendar.event.type": "Event Meeting Type",
"hr.expense.refuse.wizard": "Expense Refuse Reason Wizard",
"hr.expense.sheet.register.payment.wizard": "Expense Register Payment Wizard",
"account.csv.export": "Export Accounting",
"ir.exports": "Exports",
"ir.exports.line": "Exports Line",
"account.fr.fec": "Ficher Echange Informatise",
"ir.model.fields": "Fields",
"ir.fields.converter": "Fields Converter",
"ir.filters": "Filters",
"account.fiscal.position": "Fiscal Position",
"account.fiscal.year": "Fiscal Year",
"wizard.update.charts.accounts.fiscal.position": "Fiscal position that needs to be updated (new or updated in the template).",
"format.address.mixin": "Fomat Address",
"account.full.reconcile": "Full Reconcile",
"crm.lead.lost": "Get Lost Reason",
"google.calendar": "Google Calendar",
"google.gmail.mixin": "Google Gmail Mixin",
"google.service": "Google Service",
"portal.wizard": "Grant Portal Access",
"ir.http": "HTTP Routing",
"hr.timesheet.switch": "Helper to quickly switch between timesheet lines",
"account.bank.statement.import": "Import Bank Statement",
"account.invoice.import.wizard": "Import Your Vendor Bills from Files.",
"fetchmail.server": "Incoming Mail Server",
"account.incoterms": "Incoterms",
"res.partner.industry": "Industry",
"base.language.install": "Install Language",
"mail.wizard.invite": "Invite wizard",
"account.invoice.line": "Invoice Line",
"account.invoice.tax": "Invoice Tax",
"account.invoice.report": "Invoices Statistics",
"account.journal": "Journal",
"account.bank.statement.import.journal.creation": "Journal Creation on Bank Statement Import",
"account.move": "Journal Entries",
"account.move.line": "Journal Item",
"base.kanban.abstract": "Kanban Abstract",
"base.kanban.stage": "Kanban Stage",
"base.language.export": "Language Export",
"base.language.import": "Language Import",
"res.lang": "Languages",
"crm.lead.tag": "Lead Tag",
"link.tracker": "Link Tracker",
"link.tracker.click": "Link Tracker Click",
"link.tracker.code": "Link Tracker Code",
"mail.channel.partner": "Listeners of a Channel",
"ir.logging": "Logging",
"mail.activity.team": "Mail Activity Team",
"mail.blacklist.mixin": "Mail Blacklist mixin",
"mail.bot": "Mail Bot",
"ir.mail_server": "Mail Server",
"mail.tracking.value": "Mail Tracking Value",
"mail.bounced.mixin": "Mail bounced mixin",
"mail.tracking.email": "MailTracking email",
"mail.tracking.event": "MailTracking event",
"mail.mass_mailing.list": "Mailing List",
"mass.editing": "Mass Editing",
"mass.editing.line": "Mass Editing Line",
"mail.mass_mailing": "Mass Mailing",
"mail.mass_mailing.campaign": "Mass Mailing Campaign",
"mail.mass_mailing.stage": "Mass Mailing Campaign Stage",
"mass.mailing.schedule.date": "Mass Mailing Scheduling",
"mail.statistics.report": "Mass Mailing Statistics",
"mail.mass_mailing.list_contact_rel": "Mass Mailing Subscription Information",
"mail.mass_mailing.tag": "Mass Mailing Tag",
"credit.control.emailer": "Mass credit line emailer",
"credit.control.marker": "Mass marker",
"credit.control.printer": "Mass printer",
"ir.ui.menu": "Menu",
"mass.mailing.list.merge": "Merge Mass Mailing List",
"crm.merge.opportunity": "Merge Opportunities",
"base.partner.merge.line": "Merge Partner Line",
"base.partner.merge.automatic.wizard": "Merge Partner Wizard",
"base.task.merge.automatic.wizard": "Merge Tasks",
"mail.message": "Message",
"mail.notification": "Message Notifications",
"mail.message.subtype": "Message subtypes",
"date.range.search.mixin": "Mixin class to add a Many2one style period search field",
"hr.timesheet.time_control.mixin": "Mixin for records related with timesheet lines",
"server.env.mixin": "Mixin to add server environment in existing models",
"ir.model.access": "Model Access",
"ir.model.constraint": "Model Constraint",
"ir.model.data": "Model Data",
"ir.model": "Models",
"ir.module.module": "Module",
"report.base.report_irmodulereference": "Module Reference Report (base)",
"base.module.uninstall": "Module Uninstall",
"ir.module.module.dependency": "Module dependency",
"ir.module.module.exclusion": "Module exclusion",
"prt.message.move.wiz": "Move Messages To Other Thread",
"website.multi.mixin": "Multi Website Mixin",
"website.published.multi.mixin": "Multi Website Published Mixin",
"account.financial.year.op": "Opening Balance of Financial Year",
"crm.lost.reason": "Opp. Lost Reason",
"mail.mail": "Outgoing Mails",
"website.page": "Page",
"report.paperformat": "Paper Format Config",
"account.partial.reconcile": "Partial Reconcile",
"res.partner.id_category": "Partner ID Category",
"res.partner.id_number": "Partner ID Number",
"res.partner.payment.action.type": "Partner Payment Action Types",
"res.partner.category": "Partner Tags",
"res.partner.title": "Partner Title",
"crm.partner.binding": "Partner linking/binding in CRM wizard",
"mail.resend.partner": "Partner with additionnal information for mail resend",
"payment.acquirer": "Payment Acquirer",
"payment.icon": "Payment Icon",
"account.payment.line": "Payment Lines",
"account.payment.method": "Payment Methods",
"account.payment.mode": "Payment Modes",
"account.payment.term": "Payment Terms",
"account.payment.term.line": "Payment Terms Line",
"payment.token": "Payment Token",
"payment.transaction": "Payment Transaction",
"payment.acquirer.onboarding.wizard": "Payment acquire onboarding wizard",
"portal.mixin": "Portal Mixin",
"portal.share": "Portal Sharing",
"portal.wizard.user": "Portal User Config",
"account.reconcile.model": "Preset to create journal entries during a invoices and payments matching",
"product.pricelist": "Pricelist",
"product.pricelist.item": "Pricelist Item",
"product.attribute": "Product Attribute",
"product.attribute.custom.value": "Product Attribute Custom Value",
"product.template.attribute.value": "Product Attribute Value",
"product.brand": "Product Brand",
"product.category": "Product Category",
"product.image": "Product Image",
"product.margin": "Product Margin",
"product.packaging": "Product Packaging",
"product.price.history": "Product Price List History",
"report.product.report_pricelist": "Product Price List Report",
"product.price_list": "Product Price per Unit Based on Pricelist Version",
"product.state": "Product State",
"product.style": "Product Style",
"product.template.attribute.exclusion": "Product Template Attribute Exclusion",
"product.template.attribute.line": "Product Template Attribute Line",
"uom.uom": "Product Unit of Measure",
"uom.category": "Product UoM Categories",
"report.sale.report_saleproforma": "Proforma Report",
"project.milestone": "Project Milestone",
"project.profitability.report": "Project Profitability Report",
"project.sale.line.employee.map": "Project Sales line, employee mapping",
"project.tags": "Project Tags",
"project.task.copy.map": "Project Task Copy Map",
"publisher_warranty.contract": "Publisher Warranty Contract",
"purchase.order.line": "Purchase Order Line",
"purchase.report": "Purchase Report",
"purchase.bill.union": "Purchases & Bills Union",
"sale.order.template": "Quotation Template",
"sale.order.template.line": "Quotation Template Line",
"sale.order.template.option": "Quotation Template Option",
"ir.qweb": "Qweb",
"ir.qweb.field": "Qweb Field",
"ir.qweb.field.barcode": "Qweb Field Barcode",
"ir.qweb.field.contact": "Qweb Field Contact",
"ir.qweb.field.date": "Qweb Field Date",
"ir.qweb.field.datetime": "Qweb Field Datetime",
"ir.qweb.field.duration": "Qweb Field Duration",
"ir.qweb.field.float": "Qweb Field Float",
"ir.qweb.field.float_time": "Qweb Field Float Time",
"ir.qweb.field.html": "Qweb Field HTML",
"ir.qweb.field.image": "Qweb Field Image",
"ir.qweb.field.integer": "Qweb Field Integer",
"ir.qweb.field.many2one": "Qweb Field Many to One",
"ir.qweb.field.monetary": "Qweb Field Monerary",
"ir.qweb.field.relative": "Qweb Field Relative",
"ir.qweb.field.selection": "Qweb Field Selection",
"ir.qweb.field.text": "Qweb Field Text",
"ir.qweb.field.qweb": "Qweb Field qweb",
"ir.qweb.field.many2many": "Qweb field many2many",
"rating.rating": "Rating",
"rating.mixin": "Rating Mixin",
"account.reconcile.model.template": "Reconcile Model Template",
"ir.rule": "Record Rule",
"hr.recruitment.stage": "Recruitment Stages",
"account.register.payments": "Register Payments",
"ir.model.relation": "Relation Model",
"ir.actions.report": "Report Action",
"report.account_check_report.check_report": "Report Check Print",
"report.layout": "Report Layout",
"resource.calendar.leaves": "Resource Leaves Detail",
"resource.mixin": "Resource Mixin",
"resource.calendar": "Resource Working Time",
"resource.resource": "Resources",
"website.seo.metadata": "SEO metadata",
"sql.request.mixin": "SQL Request Mixin",
"sql.export": "SQL export",
"sale.invoice.group.method": "Sale Invoice Group Method",
"sale.order.option": "Sale Options",
"sale.payment.acquirer.onboarding.wizard": "Sale Payment acquire onboarding wizard",
"sale.product.configurator": "Sale Product Configurator",
"sale.advance.payment.inv": "Sales Advance Payment Invoice",
"sale.report": "Sales Analysis Report",
"sale.order.line": "Sales Order Line",
"report.all.channels.sales": "Sales by Channel (All in One)",
"mail.mass_mailing.test": "Sample Mail Wizard",
"ir.cron": "Scheduled Actions",
"account.invoice.chorus.send": "Send several invoices to Chorus",
"ir.sequence": "Sequence",
"ir.sequence.date_range": "Sequence Date Range",
"ir.actions.server": "Server Action",
"ir.server.object.lines": "Server Action value mapping",
"server.env.techname.mixin": "Server environment technical name",
"slide.tag": "Slide Tag",
"slide.category": "Slides Category",
"hr.recruitment.source": "Source of Applicants",
"sparse_fields.test": "Sparse fields Test",
"bank.acc.rec.statement.line": "Statement Line",
"product.supplierinfo": "Supplier Pricelist",
"survey.label": "Survey Label",
"survey.page": "Survey Page",
"survey.question": "Survey Question",
"survey.stage": "Survey Stage",
"survey.user_input": "Survey User Input",
"survey.user_input_line": "Survey User Input Line",
"ir.config_parameter": "System Parameter",
"project.task.type": "Task Stage",
"report.project.task.user": "Tasks Analysis",
"account.tax": "Tax",
"tax.adjustments.wizard": "Tax Adjustments Wizard",
"account.tax.group": "Tax Group",
"account.fiscal.position.tax.template": "Tax Mapping Template of Fiscal Position",
"account.fiscal.position.tax": "Tax Mapping of Fiscal Position",
"wizard.update.charts.accounts.tax": "Tax that needs to be updated (new or updated in the template).",
"report.account_payment_order.print_account_payment_order_main": "Technical model for printing payment order",
"account.fiscal.position.template": "Template for Fiscal Position",
"account.account.template": "Templates for Accounts",
"account.tax.template": "Templates for Taxes",
"contract.contract.terminate": "Terminate Contract Wizard",
"resource.test": "Test Resource Model",
"base_import.tests.models.preview": "Tests : Base Import Model Preview",
"base_import.tests.models.char": "Tests : Base Import Model, Character",
"base_import.tests.models.char.noreadonly": "Tests : Base Import Model, Character No readonly",
"base_import.tests.models.char.readonly": "Tests : Base Import Model, Character readonly",
"base_import.tests.models.char.required": "Tests : Base Import Model, Character required",
"base_import.tests.models.char.states": "Tests : Base Import Model, Character states",
"base_import.tests.models.char.stillreadonly": "Tests : Base Import Model, Character still readonly",
"base_import.tests.models.m2o": "Tests : Base Import Model, Many to One",
"base_import.tests.models.m2o.related": "Tests : Base Import Model, Many to One related",
"base_import.tests.models.m2o.required": "Tests : Base Import Model, Many to One required",
"base_import.tests.models.m2o.required.related": "Tests : Base Import Model, Many to One required related",
"base_import.tests.models.o2m": "Tests : Base Import Model, One to Many",
"base_import.tests.models.o2m.child": "Tests : Base Import Model, One to Many child",
"base_import.tests.models.complex": "Tests: Base Import Model Complex",
"base_import.tests.models.float": "Tests: Base Import Model Float",
"theme.ir.attachment": "Theme Attachments",
"theme.ir.ui.view": "Theme UI View",
"theme.utils": "Theme Utils",
"web_tour.tour": "Tours",
"ir.translation": "Translation",
"transmit.method": "Transmit Method of a document",
"unece.code.list": "UNECE nomenclatures",
"utm.campaign": "UTM Campaign",
"utm.medium": "UTM Medium",
"utm.mixin": "UTM Mixin",
"utm.source": "UTM Source",
"_unknown": "Unknown",
"base.module.update": "Update Module",
"base.update.translations": "Update Translations",
"base.module.upgrade": "Upgrade Module",
"bus.presence": "User Presence",
"res.users.role": "User role",
"change.password.user": "User, Change Password Wizard",
"res.users": "Users",
"res.users.log": "Users Log",
"res.users.role.line": "Users associated to a role",
"validate.account.move": "Validate Account Move",
"ir.ui.view": "View",
"web_editor.converter.test.sub": "Web Editor Converter Subtest",
"web_editor.converter.test": "Web Editor Converter Test",
"website": "Website",
"website.form.recaptcha": "Website Form Recaptcha Validations",
"website.menu": "Website Menu",
"product.public.category": "Website Product Category",
"website.published.mixin": "Website Published Mixin",
"website.redirect": "Website Redirect",
"theme.website.menu": "Website Theme Menu",
"theme.website.page": "Website Theme Page",
"wizard.matching": "Wizard Matching",
"wizard.open.tax.balances": "Wizard Open Tax Balances",
"wizard.update.charts.accounts": "Wizard Update Charts Accounts",
"mass.editing.wizard": "Wizard for mass edition",
"account.payment.line.create": "Wizard to create payment lines",
"resource.calendar.attendance": "Work Detail",
"base.task.merge.line": "base.task.merge.line",
"x_convers": "convers",
"website.sale.payment.acquirer.onboarding.wizard": "website.sale.payment.acquirer.onboarding.wizard",
"wizard.account.matching": "wizard.account.matching",
"wizard.fp.matching": "wizard.fp.matching",
"wizard.tax.matching": "wizard.tax.matching"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,12 @@
[
{
"id": 144161,
"name": "image001.png",
"mimetype": "image/png",
"create_date": "2025-03-06 08:11:49",
"description": "image001.png",
"res_name": "[T11011] bug",
"type": "binary",
"file_path": "attachments/144161_image001.png"
}
]

View File

@ -0,0 +1,15 @@
{
"id": 5144,
"name": "Dominique CARVAL",
"email": "dominique.carval@morbihan.fr",
"phone": "02 97 54 71 14",
"mobile": "06 98 32 88 30",
"street": "DSN-HOTEL DU DEPARTEMENT",
"city": "VANNES",
"zip": "56000",
"country_id": [
75,
"France"
],
"comment": ""
}

View File

@ -0,0 +1,110 @@
[
{
"id": 89070,
"partner_id": [
28961,
"Fabien LAFAY"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 28961,
"name": "Fabien LAFAY",
"email": "fabien@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 89073,
"partner_id": [
32165,
"Romuald GRUSON"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 89123,
"partner_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 5144,
"name": "Dominique CARVAL",
"email": "dominique.carval@morbihan.fr",
"phone": "02 97 54 71 14",
"function": "Technicien de laboratoire",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
}
]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,37 @@
{
"id": 226816,
"body": "",
"date": "2025-03-06 08:11:51",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

View File

@ -0,0 +1,42 @@
{
"id": 226817,
"body": "<p>\r\n\r\n</p>\r\n<div>\r\n<p><span style='font-size:10.0pt; font-family:\"Tahoma\",sans-serif'>Bonjour,<p></p></span></p>\r\n<p><span style='font-size:10.0pt; font-family:\"Tahoma\",sans-serif'><p> </p></span></p>\r\n<p><span style='font-size:10.0pt; font-family:\"Tahoma\",sans-serif'>Gros ralentissement ce matin !!!! ca tourne en rond….<p></p></span></p>\r\n<p><span style='font-size:10.0pt; font-family:\"Tahoma\",sans-serif'><p> </p></span></p>\r\n<p><span style='font-size:10.0pt; font-family:\"Tahoma\",sans-serif'>Bonne réception<p></p></span></p>\r\n<p><b><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:#1F497D'><p> </p></span></b></p>\r\n<p><span style=\"color:#1F497D\"><img width=\"189\" height=\"32\" style=\"width:1.9687in; height:.3333in\" id=\"Image_x0020_4\" src=\"/web/image/144161?access_token=70b86177-306f-4cc7-ba37-e652fa93f8c6\" alt=\"cid:image004.png@01D8D425.0F95E5B0\"></span><b><span style='font-size:12.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'><p></p></span></b></p>\r\n<p><b><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'><p> </p></span></b></p>\r\n<p><b><span style='font-size:12.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'>Dominique CARVAL</span></b><span style='font-size:12.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'><p></p></span></p>\r\n<p><b><span style='font-size:1.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'><p> </p></span></b></p>\r\n<p><b><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'>Technicien de laboratoire<p></p></span></b></p>\r\n<p style=\"text-align:justify; line-height:105%\"><span style='font-size:8.0pt; line-height:105%; font-family:\"Tahoma\",sans-serif; color:black'>Direction des Infrastructures et des mobilités (DIM)</span></p><p></p>\r\n<p style=\"text-align:justify; line-height:105%\"><span style='font-size:8.0pt; line-height:105%; font-family:\"Tahoma\",sans-serif'>Service dAppui aux Politiques dAménagement / Pôle Laboratoire Routier (SAPA/PLR)</span></p><p></p>\r\n<p><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:black'>115, rue du commerce 56000 VANNES<p></p></span></p>\r\n<p><b><span style='font-size:1.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'><p> </p></span></b></p>\r\n<p><b><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'>tél : 02 97 54 71 14 - mobile : 06 98 32 88 30 \r\n</span></b><b><u><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:#0563C1'><a href=\"mailto:dominique.carval@morbihan.fr\"><span style=\"color:blue\">dominique.carval@morbihan.fr</span></a></span></u></b><b><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:#0F58CE'>\r\n</span></b><b><span style='font-size:8.0pt; font-family:\"Tahoma\",sans-serif; color:#0F586A'> <p></p></span></b></p>\r\n<p><span style='font-size:10.0pt; font-family:\"Tahoma\",sans-serif'><p> </p></span></p>\r\n<p><span><p> </p></span></p>\r\n<p></p><p> </p>\r\n</div>\r\n<hr>\r\n<div style=\"font-size:9pt; font-family:'tahoma',sans-serif\">Droit à la déconnexion : Si vous recevez ce message en dehors de vos heures de travail ou pendant vos congés, vous nêtes pas tenu de répondre immédiatement, sauf en cas durgence exceptionnelle.\r\n<hr>\r\nCe message électronique et tous les fichiers attachés qu'il contient peuvent être confidentiels, contenir des données personnelles ou sensibles et être soumis au secret professionnel. Il est destiné exclusivement à l'usage du ou des destinataires. Si vous recevez\r\n ce message par erreur et/ou si vous n'êtes pas le destinataire désigné de ce message, le département du Morbihan vous remercie d'avertir immédiatement l'expéditeur et de le détruire ainsi que toutes les pièces jointes s'y rattachant. La publication, l'usage,\r\n la distribution, l'impression ou la copie non autorisée de ce message et des attachements qu'il contient sont strictement interdits. Tout message électronique est susceptible d'altération.</div>\r\n\r\n",
"date": "2025-03-06 08:07:49",
"author_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"subject": "bug",
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
144161
],
"author_details": {
"id": 5144,
"name": "Dominique CARVAL",
"email": "dominique.carval@morbihan.fr",
"phone": "02 97 54 71 14",
"function": "Technicien de laboratoire",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
}
]
}

View File

@ -0,0 +1,37 @@
{
"id": 226818,
"body": "",
"date": "2025-03-06 08:11:51",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -0,0 +1,37 @@
{
"id": 226828,
"body": "",
"date": "2025-03-06 08:33:37",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -0,0 +1,40 @@
{
"id": 226830,
"body": "",
"date": "2025-03-06 08:33:44",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,37 @@
{
"id": 226933,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -0,0 +1,40 @@
{
"id": 226934,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 19,
"name": "Stage Changed",
"description": "Stage changed",
"default": false
}
]
}

View File

@ -0,0 +1,156 @@
{
"id": 10990,
"active": true,
"name": "bug",
"description": "<p><br></p>",
"sequence": 10,
"stage_id": [
32,
"En attente d'infos / retours"
],
"kanban_state": "normal",
"create_date": "2025-03-06 08:11:49",
"write_date": "2025-03-06 14:53:15",
"date_start": "2025-03-06 08:11:50",
"date_end": false,
"date_assign": "2025-03-06 08:33:37",
"date_deadline": "2025-03-21",
"date_last_stage_update": "2025-03-06 14:53:15",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"email_cc": "",
"working_hours_open": 0.0,
"working_hours_close": 0.0,
"working_days_open": 0.0,
"working_days_close": 0.0,
"website_message_ids": [
226932,
226817
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T11011",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
89070,
89073,
89123
],
"message_ids": [
226934,
226933,
226932,
226830,
226828,
226818,
226817,
226816
],
"message_main_attachment_id": [
144161,
"image001.png"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "06875ce1-a1a5-48df-ab1b-6cdb5a99e59c",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloqué",
"legend_done": "Prêt pour la prochaine étape",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 1,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10990",
"access_warning": "",
"display_name": "[T11011] bug",
"__last_update": "2025-03-06 14:53:15",
"stage_id_value": "En attente d'infos / retours",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "image001.png",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -0,0 +1,156 @@
{
"id": 10990,
"active": true,
"name": "bug",
"description": "<p><br></p>",
"sequence": 10,
"stage_id": [
32,
"En attente d'infos / retours"
],
"kanban_state": "normal",
"create_date": "2025-03-06 08:11:49",
"write_date": "2025-03-06 14:53:15",
"date_start": "2025-03-06 08:11:50",
"date_end": false,
"date_assign": "2025-03-06 08:33:37",
"date_deadline": "2025-03-21",
"date_last_stage_update": "2025-03-06 14:53:15",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"email_cc": "",
"working_hours_open": 0.0,
"working_hours_close": 0.0,
"working_days_open": 0.0,
"working_days_close": 0.0,
"website_message_ids": [
226932,
226817
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T11011",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
89070,
89073,
89123
],
"message_ids": [
226934,
226933,
226932,
226830,
226828,
226818,
226817,
226816
],
"message_main_attachment_id": [
144161,
"image001.png"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "06875ce1-a1a5-48df-ab1b-6cdb5a99e59c",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloqué",
"legend_done": "Prêt pour la prochaine étape",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 1,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10990",
"access_warning": "",
"display_name": "[T11011] bug",
"__last_update": "2025-03-06 14:53:15",
"stage_id_value": "En attente d'infos / retours",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "image001.png",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -0,0 +1,3 @@
[
10990
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@ -0,0 +1,12 @@
[
{
"id": 144161,
"name": "image001.png",
"mimetype": "image/png",
"create_date": "2025-03-06 08:11:49",
"description": "image001.png",
"res_name": "[T11011] bug",
"type": "binary",
"file_path": "attachments/144161_image001.png"
}
]

View File

@ -0,0 +1,15 @@
{
"id": 5144,
"name": "Dominique CARVAL",
"email": "dominique.carval@morbihan.fr",
"phone": "02 97 54 71 14",
"mobile": "06 98 32 88 30",
"street": "DSN-HOTEL DU DEPARTEMENT",
"city": "VANNES",
"zip": "56000",
"country_id": [
75,
"France"
],
"comment": ""
}

View File

@ -0,0 +1,110 @@
[
{
"id": 89070,
"partner_id": [
28961,
"Fabien LAFAY"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 28961,
"name": "Fabien LAFAY",
"email": "fabien@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 89073,
"partner_id": [
32165,
"Romuald GRUSON"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
},
{
"id": 89123,
"partner_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"subtype_ids": [
1,
20
],
"partner_details": {
"id": 5144,
"name": "Dominique CARVAL",
"email": "dominique.carval@morbihan.fr",
"phone": "02 97 54 71 14",
"function": "Technicien de laboratoire",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
},
{
"id": 20,
"name": "Task Rating",
"description": "Ratings",
"default": true
}
]
}
]

View File

@ -0,0 +1,156 @@
{
"226816": {
"main_message": null,
"replies": [
{
"id": 226934,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": []
},
{
"id": 226932,
"body": "Bonjour , Les bases de données ont été redémarrées. Si l'incident persiste, n'hésitez pas à nous contacter. Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-03-06 14:53:14",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T11011] - bug",
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": []
},
{
"id": 226830,
"body": "",
"date": "2025-03-06 08:33:44",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": []
},
{
"id": 226817,
"body": "Bonjour, Gros ralentissement ce matin !!!! ca tourne en rond…. Bonne réception Dominique CARVAL Technicien de laboratoire Direction des Infrastructures et des mobilités (DIM) Service dAppui aux Politiques dAménagement / Pôle Laboratoire Routier (SAPA/PLR) 115, rue du commerce 56000 VANNES tél : 02 97 54 71 14 - mobile : 06 98 32 88 30 dominique.carval@morbihan.fr Droit à la déconnexion : Si vous recevez ce message en dehors de vos heures de travail ou pendant vos congés, vous nêtes pas tenu de répondre immédiatement, sauf en cas durgence exceptionnelle. Ce message électronique et tous les fichiers attachés qu'il contient peuvent être confidentiels, contenir des données personnelles ou sensibles et être soumis au secret professionnel. Il est destiné exclusivement à l'usage du ou des destinataires. Si vous recevez ce message par erreur et/ou si vous n'êtes pas le destinataire désigné de ce message, le département du Morbihan vous remercie d'avertir immédiatement l'expéditeur et de le détruire ainsi que toutes les pièces jointes s'y rattachant. La publication, l'usage, la distribution, l'impression ou la copie non autorisée de ce message et des attachements qu'il contient sont strictement interdits. Tout message électronique est susceptible d'altération.",
"date": "2025-03-06 08:07:49",
"author_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"subject": "bug",
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
144161
]
}
]
},
"226933": {
"main_message": {
"id": 226933,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
},
"226828": {
"main_message": {
"id": 226828,
"body": "",
"date": "2025-03-06 08:33:37",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
},
"226818": {
"main_message": {
"id": 226818,
"body": "",
"date": "2025-03-06 08:11:51",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
"replies": []
}
}

View File

@ -0,0 +1,160 @@
[
{
"id": 226934,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": []
},
{
"id": 226933,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 226932,
"body": "Bonjour , Les bases de données ont été redémarrées. Si l'incident persiste, n'hésitez pas à nous contacter. Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-03-06 14:53:14",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T11011] - bug",
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": []
},
{
"id": 226830,
"body": "",
"date": "2025-03-06 08:33:44",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": []
},
{
"id": 226828,
"body": "",
"date": "2025-03-06 08:33:37",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 226818,
"body": "",
"date": "2025-03-06 08:11:51",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": []
},
{
"id": 226817,
"body": "Bonjour, Gros ralentissement ce matin !!!! ca tourne en rond…. Bonne réception Dominique CARVAL Technicien de laboratoire Direction des Infrastructures et des mobilités (DIM) Service dAppui aux Politiques dAménagement / Pôle Laboratoire Routier (SAPA/PLR) 115, rue du commerce 56000 VANNES tél : 02 97 54 71 14 - mobile : 06 98 32 88 30 dominique.carval@morbihan.fr Droit à la déconnexion : Si vous recevez ce message en dehors de vos heures de travail ou pendant vos congés, vous nêtes pas tenu de répondre immédiatement, sauf en cas durgence exceptionnelle. Ce message électronique et tous les fichiers attachés qu'il contient peuvent être confidentiels, contenir des données personnelles ou sensibles et être soumis au secret professionnel. Il est destiné exclusivement à l'usage du ou des destinataires. Si vous recevez ce message par erreur et/ou si vous n'êtes pas le destinataire désigné de ce message, le département du Morbihan vous remercie d'avertir immédiatement l'expéditeur et de le détruire ainsi que toutes les pièces jointes s'y rattachant. La publication, l'usage, la distribution, l'impression ou la copie non autorisée de ce message et des attachements qu'il contient sont strictement interdits. Tout message électronique est susceptible d'altération.",
"date": "2025-03-06 08:07:49",
"author_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"subject": "bug",
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
144161
]
},
{
"id": 226816,
"body": "",
"date": "2025-03-06 08:11:51",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": []
}
]

View File

@ -0,0 +1,37 @@
{
"id": 226816,
"body": "",
"date": "2025-03-06 08:11:51",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

View File

@ -0,0 +1,42 @@
{
"id": 226817,
"body": "Bonjour, Gros ralentissement ce matin !!!! ca tourne en rond…. Bonne réception Dominique CARVAL Technicien de laboratoire Direction des Infrastructures et des mobilités (DIM) Service dAppui aux Politiques dAménagement / Pôle Laboratoire Routier (SAPA/PLR) 115, rue du commerce 56000 VANNES tél : 02 97 54 71 14 - mobile : 06 98 32 88 30 dominique.carval@morbihan.fr Droit à la déconnexion : Si vous recevez ce message en dehors de vos heures de travail ou pendant vos congés, vous nêtes pas tenu de répondre immédiatement, sauf en cas durgence exceptionnelle. Ce message électronique et tous les fichiers attachés qu'il contient peuvent être confidentiels, contenir des données personnelles ou sensibles et être soumis au secret professionnel. Il est destiné exclusivement à l'usage du ou des destinataires. Si vous recevez ce message par erreur et/ou si vous n'êtes pas le destinataire désigné de ce message, le département du Morbihan vous remercie d'avertir immédiatement l'expéditeur et de le détruire ainsi que toutes les pièces jointes s'y rattachant. La publication, l'usage, la distribution, l'impression ou la copie non autorisée de ce message et des attachements qu'il contient sont strictement interdits. Tout message électronique est susceptible d'altération.",
"date": "2025-03-06 08:07:49",
"author_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"subject": "bug",
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "email",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [
144161
],
"author_details": {
"id": 5144,
"name": "Dominique CARVAL",
"email": "dominique.carval@morbihan.fr",
"phone": "02 97 54 71 14",
"function": "Technicien de laboratoire",
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
}
]
}

View File

@ -0,0 +1,37 @@
{
"id": 226818,
"body": "",
"date": "2025-03-06 08:11:51",
"author_id": [
2,
"OdooBot"
],
"email_from": "\"OdooBot\" <odoobot@example.com>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 2,
"name": "OdooBot",
"email": "odoobot@example.com",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -0,0 +1,37 @@
{
"id": 226828,
"body": "",
"date": "2025-03-06 08:33:37",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -0,0 +1,40 @@
{
"id": 226830,
"body": "",
"date": "2025-03-06 08:33:44",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
16,
"Task Created"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 16,
"name": "Task Created",
"description": "Task Created",
"default": false
}
]
}

View File

@ -0,0 +1,40 @@
{
"id": 226932,
"body": "Bonjour , Les bases de données ont été redémarrées. Si l'incident persiste, n'hésitez pas à nous contacter. Je reste à votre entière disposition pour toute information complémentaire. Cordialement, --- Support technique Afin d'assurer une meilleure traçabilité et vous garantir une prise en charge optimale, nous vous invitons à envoyer vos demandes d'assistance technique à support@cbao.fr L'objectif du Support Technique est de vous aider : si vous rencontrez une difficulté, ou pour nous soumettre une ou des suggestions d'amélioration de nos logiciels ou de nos méthodes. Notre service est ouvert du lundi au vendredi de 9h à 12h et de 14h à 18h. Dès réception, un technicien prendra en charge votre demande et au besoin vous rappellera. Confidentialité : Ce courriel contient des informations confidentielles exclusivement réservées au destinataire mentionné. Si vous deviez recevoir cet e-mail par erreur, merci den avertir immédiatement lexpéditeur et de le supprimer de votre système informatique. Au cas où vous ne seriez pas destinataire de ce message, veuillez noter que sa divulgation, sa copie ou tout acte en rapport avec la communication du contenu des informations est strictement interdit.",
"date": "2025-03-06 14:53:14",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "support@cbao.fr",
"subject": "Re: [T11011] - bug",
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "comment",
"subtype_id": [
1,
"Discussions"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 1,
"name": "Discussions",
"description": false,
"default": true
}
]
}

View File

@ -0,0 +1,37 @@
{
"id": 226933,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": false,
"message_type": "notification",
"subtype_id": [
2,
"Note"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 2,
"name": "Note",
"description": false,
"default": false
}
]
}

View File

@ -0,0 +1,40 @@
{
"id": 226934,
"body": "",
"date": "2025-03-06 14:53:15",
"author_id": [
32165,
"Romuald GRUSON"
],
"email_from": "\"Romuald GRUSON\" <romuald@cbao.fr>",
"subject": false,
"parent_id": [
226816,
"[T11011] bug"
],
"message_type": "notification",
"subtype_id": [
19,
"Stage Changed"
],
"attachment_ids": [],
"author_details": {
"id": 32165,
"name": "Romuald GRUSON",
"email": "romuald@mail.cbao.fr",
"phone": false,
"function": false,
"company_id": [
1,
"CBAO S.A.R.L."
]
},
"subtype_details": [
{
"id": 19,
"name": "Stage Changed",
"description": "Stage changed",
"default": false
}
]
}

View File

@ -0,0 +1,156 @@
{
"id": 10990,
"active": true,
"name": "bug",
"description": "<p><br></p>",
"sequence": 10,
"stage_id": [
32,
"En attente d'infos / retours"
],
"kanban_state": "normal",
"create_date": "2025-03-06 08:11:49",
"write_date": "2025-03-06 14:53:15",
"date_start": "2025-03-06 08:11:50",
"date_end": false,
"date_assign": "2025-03-06 08:33:37",
"date_deadline": "2025-03-21",
"date_last_stage_update": "2025-03-06 14:53:15",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"email_cc": "",
"working_hours_open": 0.0,
"working_hours_close": 0.0,
"working_days_open": 0.0,
"working_days_close": 0.0,
"website_message_ids": [
226932,
226817
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T11011",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
89070,
89073,
89123
],
"message_ids": [
226934,
226933,
226932,
226830,
226828,
226818,
226817,
226816
],
"message_main_attachment_id": [
144161,
"image001.png"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "06875ce1-a1a5-48df-ab1b-6cdb5a99e59c",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloqué",
"legend_done": "Prêt pour la prochaine étape",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 1,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10990",
"access_warning": "",
"display_name": "[T11011] bug",
"__last_update": "2025-03-06 14:53:15",
"stage_id_value": "En attente d'infos / retours",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "image001.png",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -0,0 +1,156 @@
{
"id": 10990,
"active": true,
"name": "bug",
"description": "<p><br></p>",
"sequence": 10,
"stage_id": [
32,
"En attente d'infos / retours"
],
"kanban_state": "normal",
"create_date": "2025-03-06 08:11:49",
"write_date": "2025-03-06 14:53:15",
"date_start": "2025-03-06 08:11:50",
"date_end": false,
"date_assign": "2025-03-06 08:33:37",
"date_deadline": "2025-03-21",
"date_last_stage_update": "2025-03-06 14:53:15",
"project_id": [
3,
"Demandes"
],
"notes": false,
"planned_hours": 0.0,
"user_id": [
32,
"Romuald GRUSON"
],
"partner_id": [
5144,
"CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL"
],
"company_id": [
1,
"CBAO S.A.R.L."
],
"color": 0,
"displayed_image_id": false,
"parent_id": false,
"child_ids": [],
"email_from": "CARVAL Dominique <dominique.carval@morbihan.fr>",
"email_cc": "",
"working_hours_open": 0.0,
"working_hours_close": 0.0,
"working_days_open": 0.0,
"working_days_close": 0.0,
"website_message_ids": [
226932,
226817
],
"remaining_hours": 0.0,
"effective_hours": 0.0,
"total_hours_spent": 0.0,
"progress": 0.0,
"subtask_effective_hours": 0.0,
"timesheet_ids": [],
"priority": "0",
"code": "T11011",
"milestone_id": false,
"sale_line_id": false,
"sale_order_id": false,
"billable_type": "no",
"activity_ids": [],
"message_follower_ids": [
89070,
89073,
89123
],
"message_ids": [
226934,
226933,
226932,
226830,
226828,
226818,
226817,
226816
],
"message_main_attachment_id": [
144161,
"image001.png"
],
"failed_message_ids": [],
"rating_ids": [],
"rating_last_value": 0.0,
"access_token": "06875ce1-a1a5-48df-ab1b-6cdb5a99e59c",
"create_uid": [
1,
"OdooBot"
],
"write_uid": [
32,
"Romuald GRUSON"
],
"x_CBAO_windows_maj_ID": false,
"x_CBAO_version_signalement": false,
"x_CBAO_version_correction": false,
"x_CBAO_DateCorrection": false,
"x_CBAO_Scoring_Facilite": 0,
"x_CBAO_Scoring_Importance": 0,
"x_CBAO_Scoring_Urgence": 0,
"x_CBAO_Scoring_Incidence": 0,
"x_CBAO_Scoring_Resultat": 0,
"x_CBAO_InformationsSup": false,
"kanban_state_label": "En cours",
"subtask_planned_hours": 0.0,
"manager_id": [
22,
"Fabien LAFAY"
],
"user_email": "romuald@mail.cbao.fr",
"attachment_ids": [],
"legend_blocked": "Bloqué",
"legend_done": "Prêt pour la prochaine étape",
"legend_normal": "En cours",
"subtask_project_id": [
3,
"Demandes"
],
"subtask_count": 0,
"analytic_account_active": true,
"allow_timesheets": true,
"use_milestones": false,
"show_time_control": "start",
"is_project_map_empty": true,
"activity_state": false,
"activity_user_id": false,
"activity_type_id": false,
"activity_date_deadline": false,
"activity_summary": false,
"message_is_follower": false,
"message_unread": false,
"message_unread_counter": 0,
"message_needaction": false,
"message_needaction_counter": 0,
"message_has_error": false,
"message_has_error_counter": 0,
"message_attachment_count": 1,
"rating_last_feedback": false,
"rating_last_image": false,
"rating_count": 0,
"access_url": "/my/task/10990",
"access_warning": "",
"display_name": "[T11011] bug",
"__last_update": "2025-03-06 14:53:15",
"stage_id_value": "En attente d'infos / retours",
"project_id_value": "Demandes",
"user_id_value": "Romuald GRUSON",
"partner_id_value": "CONSEIL DEPARTEMENTAL DU MORBIHAN (56), Dominique CARVAL",
"manager_id_value": "Fabien LAFAY",
"company_id_value": "CBAO S.A.R.L.",
"subtask_project_id_value": "Demandes",
"message_main_attachment_id_value": "image001.png",
"create_uid_value": "OdooBot",
"write_uid_value": "Romuald GRUSON"
}

View File

@ -0,0 +1,3 @@
[
10990
]

View File

@ -1,5 +1,9 @@
import os
import json
from datetime import datetime
from utils import print_success, print_error, EXPORT_DIR, prompt_yes_no, INTERACTIVE, print_info
from ticket_manager import TicketManager
from utils import print_error
from data_filter import run_filter_wizard
# Initialisation de l'objet
ticket_manager = TicketManager()
@ -157,4 +161,22 @@ def handle_extract_ticket_attachments():
if output_dir:
print(f"\nExtraction terminée avec succès. Les fichiers ont été enregistrés dans: {output_dir}")
else:
print_error(f"L'extraction a échoué pour le ticket avec l'ID {ticket_id}")
print_error(f"L'extraction a échoué pour le ticket avec l'ID {ticket_id}")
def handle_filter_html_messages():
"""Gère le filtrage des messages HTML dans les tickets exportés"""
print("\n==== FILTRAGE DES MESSAGES HTML ====")
if not os.path.exists(EXPORT_DIR) or not os.listdir(EXPORT_DIR):
print_error(f"Aucun ticket exporté trouvé dans {EXPORT_DIR}. Veuillez d'abord exporter des tickets.")
return
print_info("Cette fonctionnalité va analyser les tickets exportés et nettoyer les messages HTML.")
print_info("Les messages nettoyés seront sauvegardés dans un nouveau répertoire 'filtered_tickets'.")
if INTERACTIVE and not prompt_yes_no("Voulez-vous continuer?"):
print_info("Opération annulée.")
return
# Exécuter l'assistant de filtrage
run_filter_wizard()

View File

@ -4,7 +4,8 @@ from menu_handlers import (
handle_search_ticket_by_code,
handle_list_models,
handle_list_model_fields,
handle_extract_ticket_attachments
handle_extract_ticket_attachments,
handle_filter_html_messages
)
def display_main_menu():
@ -16,8 +17,9 @@ def display_main_menu():
print("4. Afficher la liste des modèles disponibles")
print("5. Afficher les champs d'un modèle donné")
print("6. Extraire les pièces jointes, messages et informations détaillées d'un ticket")
print("7. Quitter")
return input("\nChoisissez une option (1-7): ")
print("7. Filtrer les messages HTML des tickets exportés")
print("8. Quitter")
return input("\nChoisissez une option (1-8): ")
def run_menu():
@ -37,7 +39,9 @@ def run_menu():
elif choice == '6':
handle_extract_ticket_attachments()
elif choice == '7':
handle_filter_html_messages()
elif choice == '8':
print("Au revoir!")
break
else:
print("Option invalide. Veuillez choisir entre 1 et 7.")
print("Option invalide. Veuillez choisir entre 1 et 8.")

View File

@ -1,2 +1,29 @@
import os
# Répertoire d'exportation des tickets
EXPORT_DIR = "exported_tickets"
# Mode interactif
INTERACTIVE = True
def print_error(message):
print(f" Erreur: {message}")
print(f"\033[91m Erreur: {message}\033[0m")
def print_success(message):
print(f"\033[92m Succès: {message}\033[0m")
def print_info(message):
print(f"\033[94m Info: {message}\033[0m")
def prompt_yes_no(question):
"""
Demande une confirmation oui/non à l'utilisateur.
Args:
question: Question à poser
Returns:
True si la réponse est 'o', False sinon
"""
answer = input(f"{question} (o/n): ").strip().lower()
return answer == 'o'