Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
C
cgscop_calendar
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
Hervé Silvant - CGScop
cgscop_calendar
Validations
a316de6a
Valider
a316de6a
rédigé
Il y a 5 ans
par
Benjamin - Le Filament
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
[fix] transfert lignes de temps pour recurring events
parent
9d906da5
Branches
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
models/calendar.py
+91
-0
91 ajouts, 0 suppression
models/calendar.py
avec
91 ajouts
et
0 suppression
models/calendar.py
+
91
−
0
Voir le fichier @
a316de6a
...
...
@@ -5,8 +5,12 @@ import pytz
from
datetime
import
timedelta
from
odoo
import
models
,
fields
,
api
from
odoo.fields
import
Date
from
odoo.tools
import
pycompat
from
odoo.exceptions
import
UserError
,
ValidationError
from
odoo.addons.calendar.models.calendar
import
calendar_id2real_id
class
CGScopAttendee
(
models
.
Model
):
_inherit
=
'
calendar.attendee
'
...
...
@@ -340,3 +344,90 @@ class CGScopCalendar(models.Model):
'
default_ur_financial_system_id
'
:
event
.
ur_financial_system_id
.
id
,
},
}
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
@api.multi
def
read
(
self
,
fields
=
None
,
load
=
'
_classic_read
'
):
"""
Surcharge la fonction read de calendar pour gérer le transfert des
lignes de temps sur les virtual events.
Ajoute le calcul de la valeur du champs
'
is_tansfered
'
dans la
boucle
'
for calendar_id, real_id in select
'
"""
if
not
fields
:
fields
=
list
(
self
.
_fields
)
fields2
=
fields
and
fields
[:]
EXTRAFIELDS
=
(
'
privacy
'
,
'
user_id
'
,
'
duration
'
,
'
allday
'
,
'
start
'
,
'
rrule
'
)
for
f
in
EXTRAFIELDS
:
if
fields
and
(
f
not
in
fields
):
fields2
.
append
(
f
)
select
=
[(
x
,
calendar_id2real_id
(
x
))
for
x
in
self
.
ids
]
real_events
=
self
.
browse
([
real_id
for
calendar_id
,
real_id
in
select
])
real_data
=
super
(
CGScopCalendar
,
real_events
).
read
(
fields
=
fields2
,
load
=
load
)
real_data
=
dict
((
d
[
'
id
'
],
d
)
for
d
in
real_data
)
# print("real_data")
# print(real_data)
# print(real_events)
# print(select)
result
=
[]
for
calendar_id
,
real_id
in
select
:
if
not
real_data
.
get
(
real_id
):
continue
res
=
real_data
[
real_id
].
copy
()
ls
=
calendar_id2real_id
(
calendar_id
,
with_date
=
res
and
res
.
get
(
'
duration
'
,
0
)
>
0
and
res
.
get
(
'
duration
'
)
or
1
)
if
not
isinstance
(
ls
,
(
pycompat
.
string_types
,
pycompat
.
integer_types
))
and
len
(
ls
)
>=
2
:
res
[
'
start
'
]
=
ls
[
1
]
res
[
'
stop
'
]
=
ls
[
2
]
if
res
[
'
allday
'
]:
res
[
'
start_date
'
]
=
ls
[
1
]
res
[
'
stop_date
'
]
=
ls
[
2
]
else
:
res
[
'
start_datetime
'
]
=
ls
[
1
]
res
[
'
stop_datetime
'
]
=
ls
[
2
]
if
'
display_time
'
in
fields
:
res
[
'
display_time
'
]
=
self
.
_get_display_time
(
ls
[
1
],
ls
[
2
],
res
[
'
duration
'
],
res
[
'
allday
'
])
attendee
=
self
.
env
[
'
calendar.attendee
'
].
search
([
(
'
event_id
'
,
'
=
'
,
ls
[
0
]),
(
'
partner_id
'
,
'
=
'
,
self
.
env
.
user
.
partner_id
.
id
)])
# l'attendee a des feuilles de temps liées à la même date
if
(
attendee
.
timesheet_ids
and
attendee
.
timesheet_ids
.
filtered
(
lambda
t
:
t
.
date
==
Date
.
to_date
(
ls
[
1
]))):
res
[
'
is_transfered
'
]
=
True
else
:
res
[
'
is_transfered
'
]
=
False
res
[
'
id
'
]
=
calendar_id
result
.
append
(
res
)
for
r
in
result
:
if
r
[
'
user_id
'
]:
user_id
=
type
(
r
[
'
user_id
'
])
in
(
tuple
,
list
)
and
r
[
'
user_id
'
][
0
]
or
r
[
'
user_id
'
]
partner_id
=
self
.
env
.
user
.
partner_id
.
id
if
user_id
==
self
.
env
.
user
.
id
or
partner_id
in
r
.
get
(
"
partner_ids
"
,
[]):
continue
if
r
[
'
privacy
'
]
==
'
private
'
:
for
f
in
r
:
recurrent_fields
=
self
.
_get_recurrent_fields
()
public_fields
=
list
(
set
(
recurrent_fields
+
[
'
id
'
,
'
allday
'
,
'
start
'
,
'
stop
'
,
'
display_start
'
,
'
display_stop
'
,
'
duration
'
,
'
user_id
'
,
'
state
'
,
'
interval
'
,
'
count
'
,
'
recurrent_id_date
'
,
'
rrule
'
]))
if
f
not
in
public_fields
:
if
isinstance
(
r
[
f
],
list
):
r
[
f
]
=
[]
else
:
r
[
f
]
=
False
if
f
==
'
name
'
:
r
[
f
]
=
_
(
'
Busy
'
)
for
r
in
result
:
for
k
in
EXTRAFIELDS
:
if
(
k
in
r
)
and
(
fields
and
(
k
not
in
fields
)):
del
r
[
k
]
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