Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
L
lefilament_alfresco_generation
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse du dépôt
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Le Filament
lefilament_alfresco_generation
Validations
31f20e60
Valider
31f20e60
rédigé
6 janv. 2021
par
Juliana
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Mise a jour du json générique
parent
f8b52807
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
3
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
3 fichiers modifiés
models/__init__.py
+1
-0
1 ajout, 0 suppression
models/__init__.py
models/api_alfresco.py
+10
-25
10 ajouts, 25 suppressions
models/api_alfresco.py
models/models.py
+110
-0
110 ajouts, 0 suppression
models/models.py
avec
121 ajouts
et
25 suppressions
models/__init__.py
+
1
−
0
Voir le fichier @
31f20e60
# © 2019 Le Filament (<http://www.le-filament.com>)
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from
.
import
models
from
.
import
api_alfresco
from
.
import
api_alfresco
Ce diff est replié.
Cliquez pour l'agrandir.
models/api_alfresco.py
+
10
−
25
Voir le fichier @
31f20e60
...
@@ -3,47 +3,32 @@
...
@@ -3,47 +3,32 @@
import
requests
import
requests
import
logging
import
logging
import
json
from
odoo
import
models
,
exceptions
,
tools
from
odoo
import
models
,
exceptions
,
tools
,
api
_logger
=
logging
.
getLogger
(
__name__
)
_logger
=
logging
.
getLogger
(
__name__
)
class
Cgscop
Alfresco
(
models
.
AbstractModel
):
class
LeFilament
Alfresco
(
models
.
AbstractModel
):
"""
Appelle l
'
API alfresco et implémente les fonctions suivantes :
"""
Appelle l
'
API alfresco et implémente les fonctions suivantes :
"""
"""
_inherit
=
'
lefilament.alfresco
'
_inherit
=
'
lefilament.alfresco
'
def
publipostage_documents
(
self
,
url
,
template_doc
,
versionable
=
None
,
generable
=
None
):
def
alfresco_publipostage_documents
(
self
,
url
,
filename
,
templateNodeRef
,
convertToPDF
,
keys
,
options
,
backend
):
# Récupération du backend
backend_name
=
self
.
_fields
[
'
cmis_folder
'
]
backend
=
backend_name
.
get_backend
(
self
.
env
)
# Path du dossier projet
path_proj
=
backend
.
get_cmis_repository
().
getFolder
(
self
.
cmis_folder
).
getPaths
()
# Création du path
path_n0
=
path_proj
+
[
template_doc
.
dossier
.
name
]
path
=
'
/
'
.
join
(
path_n0
)
# récupération du NodeRef du dossier lié
cmis_obj_nodeRef
=
backend
.
get_folder_by_path
(
path
).
getProperties
()[
'
alfcmis:nodeRef
'
]
keys
=
self
.
fill_data
()
# Remplissage des données de base
json_data
=
{
json_data
=
{
"
fileName
"
:
template_doc
.
name
,
"
fileName
"
:
filename
,
"
templateNodeRef
"
:
template_doc
.
noderef_document
,
"
templateNodeRef
"
:
templateNodeRef
,
"
destinationNodeRef
"
:
cmis_obj_nodeRef
,
"
convertToPDF
"
:
False
,
"
convertToPDF
"
:
False
,
"
versionable
"
:
versionable
,
"
generable
"
:
generable
,
"
keys
"
:
keys
"
keys
"
:
keys
}
}
# TRY - EXCEPT : permet de ne pas bloquer le traitement en cas d'erreur
# Ajout des options Alfresco à envoyer
json_data
.
update
(
options
)
print
(
"
------ json_data---
"
,
str
(
json_data
))
return
self
.
alfresco_publipostage
(
return
self
.
alfresco_publipostage
(
url
=
url
,
url
=
url
,
json
=
json_data
,
json
=
json_data
,
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
models/models.py
0 → 100644
+
110
−
0
Voir le fichier @
31f20e60
# © 2020 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from
odoo
import
api
,
fields
,
models
from
odoo.exceptions
import
UserError
from
odoo.tools.translate
import
_
class
Base
(
models
.
AbstractModel
):
_inherit
=
'
base
'
@api.multi
def
json_build
(
self
,
parser
):
"""
Convertit l
'
enregistrement en fonction du template.
Example de template:
parser = [
'
name
'
,
'
number
'
,
'
create_date
'
,
(
'
partner_id
'
, [
'
name
'
,
'
street
'
])
(
'
line_ids
'
, {
'
type_data
'
: LIST/TAB/ENUM,
'
fields
'
: [
'
id
'
, (
'
partner_id
'
, [
'
name
'
]),
'
street
'
]})
]
le type LIST affichera une liste d
'
éléments avec saut de ligne entre chaque
le type ENUM affichera une liste d
'
éléments séparés par des virgules
le type TAB affichera un tableau de valeur
"""
result
=
[]
for
rec
in
self
:
res
=
{}
for
field
in
parser
:
field_name
=
field
subparser
=
None
if
isinstance
(
field
,
tuple
):
field_name
,
subparser
=
field
json_key
=
'
##
'
+
field_name
+
'
##
'
if
'
:
'
in
field_name
:
field_name
,
json_key
=
field_name
.
split
(
'
:
'
)
json_key
=
'
##
'
+
json_key
+
'
##
'
field_type
=
rec
.
_fields
[
field_name
].
type
if
subparser
:
# Field One2many / Many2many
# Construction de l'entrée json sous forme:
# En entrée: ('O2m/M2m', type, ['field1', ('field2', ['subfield2']), 'field3'])
# En sortie:
# si type=LIST: ##LIST_O2m/M2m##: ['field1, subfiled2, field3', 'field1, subfiled2, field3',...]
# si type=TAB: ##MAP_O2m/M2m##: [['field1', 'subfiled2', 'field3'], ['field1', 'subfiled2', 'field3'],...]
# si type=ENUM: ##MAP_O2m/M2m##: 'field1 subfiled2, field3, field1, subfiled2, field3,...
if
field_type
in
(
'
one2many
'
,
'
many2many
'
):
if
subparser
.
get
(
'
type_data
'
)
==
"
LIST
"
:
sub_res
=
rec
[
field_name
].
json_build
(
subparser
.
get
(
'
fields
'
))
# json_key = '##' + json_key + '##'
res
[
json_key
]
=
[]
for
sub
in
sub_res
:
for
ressub
in
sub
.
values
():
res
[
json_key
].
append
(
ressub
)
elif
subparser
.
get
(
'
type_data
'
)
==
"
ENUM
"
:
sub_res
=
rec
[
field_name
].
json_build
(
subparser
.
get
(
'
fields
'
))
res
[
json_key
]
=
""
for
sub
in
sub_res
:
for
ressub
in
sub
.
values
():
if
res
[
json_key
]:
res
[
json_key
]
+=
'
,
'
+
ressub
else
:
res
[
json_key
]
+=
ressub
elif
subparser
.
get
(
'
type_data
'
)
==
"
TAB
"
:
sub_res
=
rec
[
field_name
].
json_build
(
subparser
.
get
(
'
fields
'
))
# json_key = '##' + json_key + '##'
res
[
json_key
]
=
[]
for
sub
in
sub_res
:
res_tab
=
[]
for
ressub
in
sub
.
values
():
res_tab
.
append
(
ressub
)
res
[
json_key
].
append
(
res_tab
)
# Field Many2one
# Construction de l'entrée json sous forme:
# En entrée: ('M2o', ['field1', 'field2'])
# En sortie: ##M2o##: 'field1, field2'
elif
field_type
in
(
'
many2one
'
,
'
reference
'
):
if
rec
[
field_name
]:
sub_res
=
rec
[
field_name
].
json_build
(
subparser
)[
0
]
res
[
json_key
]
=
""
for
sub
in
sub_res
.
values
():
if
res
[
json_key
]:
res
[
json_key
]
+=
'
,
'
+
sub
else
:
res
[
json_key
]
+=
sub
else
:
res
[
json_key
]
=
None
else
:
raise
UserError
(
_
(
'
Mauvaise configuration de template de données
'
))
else
:
value
=
rec
[
field_name
]
if
field_type
==
"
selection
"
:
value
=
dict
(
self
.
_fields
[
field_name
].
selection
).
get
(
value
)
if
value
is
False
and
field_type
!=
'
boolean
'
:
value
=
None
elif
field_type
==
"
date
"
:
value
=
fields
.
Date
.
to_date
(
value
).
isoformat
()
elif
field_type
==
"
datetime
"
:
value
=
fields
.
Datetime
.
to_datetime
(
value
)
value
=
fields
.
Datetime
.
context_timestamp
(
rec
,
value
)
value
=
value
.
isoformat
()
res
[
json_key
]
=
value
result
.
append
(
res
)
return
result
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter