Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
third-party
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cooperatic-foodcoops
third-party
Commits
349a141a
Commit
349a141a
authored
Oct 12, 2022
by
Damien Moulard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
BDM: increase member delay
parent
53918063
Pipeline
#2429
passed with stage
in 1 minute 26 seconds
Changes
6
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
104 additions
and
59 deletions
+104
-59
admin.py
members/admin.py
+22
-3
models.py
members/models.py
+20
-9
manage_makeups.js
members/static/js/admin/manage_makeups.js
+16
-3
manage_regular_shifts.js
members/static/js/admin/manage_regular_shifts.js
+33
-33
inscriptions.js
members/static/js/inscriptions.js
+2
-2
models.py
shifts/models.py
+11
-9
No files found.
members/admin.py
View file @
349a141a
...
@@ -8,7 +8,7 @@ from members.models import CagetteMember
...
@@ -8,7 +8,7 @@ from members.models import CagetteMember
from
shifts.models
import
CagetteServices
from
shifts.models
import
CagetteServices
from
shifts.models
import
CagetteShift
from
shifts.models
import
CagetteShift
from
outils.common
import
MConfig
from
outils.common
import
MConfig
from
datetime
import
datetime
from
datetime
import
datetime
,
date
default_msettings
=
{
'msg_accueil'
:
{
'title'
:
'Message borne accueil'
,
default_msettings
=
{
'msg_accueil'
:
{
'title'
:
'Message borne accueil'
,
'type'
:
'textarea'
,
'type'
:
'textarea'
,
...
@@ -419,9 +419,28 @@ def regenerate_member_delay(request):
...
@@ -419,9 +419,28 @@ def regenerate_member_delay(request):
""" From BDM admin, close existing extension if exists & recreate for 6 months """
""" From BDM admin, close existing extension if exists & recreate for 6 months """
res
=
{}
res
=
{}
is_connected_user
=
CagetteUser
.
are_credentials_ok
(
request
)
is_connected_user
=
CagetteUser
.
are_credentials_ok
(
request
)
if
is_connected_user
is
True
:
if
is_connected_user
is
True
:
data
=
json
.
loads
(
request
.
body
.
decode
())
raw_data
=
json
.
loads
(
request
.
body
.
decode
())
print
(
data
[
"member_id"
])
# Close extension if has one
member_id
=
int
(
raw_data
[
"member_id"
])
cm
=
CagetteMember
(
member_id
)
cm
.
close_extension
()
# Recreate starting now
cs
=
CagetteShift
()
data
=
{
"idPartner"
:
member_id
,
"start_date"
:
date
.
today
()
.
isoformat
()
}
duration
=
raw_data
[
"duration"
]
ext_name
=
"Délai étendue depuis l'admin BDM"
res
[
"create_delay"
]
=
cs
.
create_delay
(
data
=
data
,
duration
=
duration
,
ext_name
=
ext_name
)
res
[
"member_data"
]
=
CagetteMembers
.
get_makeups_members
([
member_id
])[
0
]
response
=
JsonResponse
(
res
,
safe
=
False
)
response
=
JsonResponse
(
res
,
safe
=
False
)
else
:
else
:
...
...
members/models.py
View file @
349a141a
...
@@ -1007,14 +1007,7 @@ class CagetteMember(models.Model):
...
@@ -1007,14 +1007,7 @@ class CagetteMember(models.Model):
if
changing_shift
is
False
:
if
changing_shift
is
False
:
# Close extensions if just unsubscribing, else keep it
# Close extensions if just unsubscribing, else keep it
c
=
[[
'partner_id'
,
'='
,
self
.
id
],
[
'date_start'
,
'<='
,
now
],
[
'date_stop'
,
'>='
,
now
]]
res
[
"close_extensions"
]
=
self
.
close_extension
()
f
=
[
'id'
]
res_ids
=
self
.
o_api
.
search_read
(
"shift.extension"
,
c
,
f
)
ids
=
[
d
[
'id'
]
for
d
in
res_ids
]
if
ids
:
f
=
{
'date_stop'
:
now
}
res
[
"close_extensions"
]
=
self
.
o_api
.
update
(
'shift.extension'
,
ids
,
f
)
return
res
return
res
...
@@ -1035,6 +1028,20 @@ class CagetteMember(models.Model):
...
@@ -1035,6 +1028,20 @@ class CagetteMember(models.Model):
return
res
return
res
def
close_extension
(
self
):
now
=
datetime
.
datetime
.
now
()
.
isoformat
()
c
=
[[
'partner_id'
,
'='
,
self
.
id
],
[
'date_start'
,
'<='
,
now
],
[
'date_stop'
,
'>='
,
now
]]
f
=
[
'id'
]
res_ids
=
self
.
o_api
.
search_read
(
"shift.extension"
,
c
,
f
)
ids
=
[
d
[
'id'
]
for
d
in
res_ids
]
if
ids
:
f
=
{
'date_stop'
:
now
}
return
self
.
o_api
.
update
(
'shift.extension'
,
ids
,
f
)
else
:
return
False
class
CagetteMembers
(
models
.
Model
):
class
CagetteMembers
(
models
.
Model
):
"""Class to manage operations on all members or part of them."""
"""Class to manage operations on all members or part of them."""
...
@@ -1257,9 +1264,13 @@ class CagetteMembers(models.Model):
...
@@ -1257,9 +1264,13 @@ class CagetteMembers(models.Model):
return
res
return
res
@staticmethod
@staticmethod
def
get_makeups_members
():
def
get_makeups_members
(
ids
=
[]
):
api
=
OdooAPI
()
api
=
OdooAPI
()
cond
=
[[
'makeups_to_do'
,
'>'
,
0
]]
cond
=
[[
'makeups_to_do'
,
'>'
,
0
]]
if
len
(
ids
)
>
0
:
cond
.
append
([
'id'
,
'in'
,
ids
])
fields
=
[
'id'
,
'name'
,
'display_std_points'
,
'display_ftop_points'
,
'shift_type'
,
'makeups_to_do'
,
'date_delay_stop'
]
fields
=
[
'id'
,
'name'
,
'display_std_points'
,
'display_ftop_points'
,
'shift_type'
,
'makeups_to_do'
,
'date_delay_stop'
]
res
=
api
.
search_read
(
'res.partner'
,
cond
,
fields
)
res
=
api
.
search_read
(
'res.partner'
,
cond
,
fields
)
return
res
return
res
...
...
members/static/js/admin/manage_makeups.js
View file @
349a141a
...
@@ -237,6 +237,7 @@ function display_makeups_members() {
...
@@ -237,6 +237,7 @@ function display_makeups_members() {
const
member
=
makeups_members
.
find
(
m
=>
m
.
id
==
member_id
);
const
member
=
makeups_members
.
find
(
m
=>
m
.
id
==
member_id
);
let
modal
=
$
(
"#modal_extend_delay_template"
);
let
modal
=
$
(
"#modal_extend_delay_template"
);
modal
.
find
(
".member_name"
).
text
(
member
.
name
);
modal
.
find
(
".member_name"
).
text
(
member
.
name
);
openModal
(
openModal
(
...
@@ -322,13 +323,21 @@ function update_members_makeups(member_ids, action) {
...
@@ -322,13 +323,21 @@ function update_members_makeups(member_ids, action) {
/**
/**
* Send request to extend the member's delay, or create one if none open.
* Send request to extend the member's delay, or create one if none open.
* @param {Object} member
* @param {Object} member
*/
*/
function
extend_member_delay
(
member
)
{
function
extend_member_delay
(
member
)
{
openModal
();
openModal
();
let
today
=
new
Date
();
let
today_plus_six_month
=
new
Date
();
today_plus_six_month
.
setMonth
(
today_plus_six_month
.
getMonth
()
+
6
);
const
diff_time
=
Math
.
abs
(
today_plus_six_month
-
today
);
const
diff_days
=
Math
.
ceil
(
diff_time
/
(
1000
*
60
*
60
*
24
));
let
data
=
{
let
data
=
{
member_id
:
member
.
id
member_id
:
member
.
id
,
duration
:
diff_days
};
};
$
.
ajax
({
$
.
ajax
({
...
@@ -338,7 +347,11 @@ function extend_member_delay(member) {
...
@@ -338,7 +347,11 @@ function extend_member_delay(member) {
dataType
:
"json"
,
dataType
:
"json"
,
traditional
:
true
,
traditional
:
true
,
contentType
:
"application/json; charset=utf-8"
,
contentType
:
"application/json; charset=utf-8"
,
success
:
function
()
{
success
:
function
(
result
)
{
let
i
=
makeups_members
.
findIndex
(
m
=>
m
.
id
==
result
.
member_data
.
id
);
makeups_members
[
i
].
date_delay_stop
=
result
.
member_data
.
date_delay_stop
;
display_makeups_members
();
display_makeups_members
();
closeModal
();
closeModal
();
},
},
...
...
members/static/js/admin/manage_regular_shifts.js
View file @
349a141a
...
@@ -188,39 +188,39 @@ function set_subscription_area() {
...
@@ -188,39 +188,39 @@ function set_subscription_area() {
retrieve_and_draw_shift_tempates
({
shift_listener
:
false
});
retrieve_and_draw_shift_tempates
({
shift_listener
:
false
});
$
(
"#shifts_calendar_area"
).
show
();
$
(
"#shifts_calendar_area"
).
show
();
// Cancel listeners from subscription page & set custom listeners
// Cancel listeners from subscription page & set custom listeners
$
(
document
).
off
(
"click"
,
"#shifts_calendar_area button[data-select='Volant']"
);
$
(
document
).
off
(
"click"
,
"#shifts_calendar_area button[data-select='Volant']"
);
$
(
document
).
on
(
"click"
,
"#shifts_calendar_area button[data-select='Volant']"
,
function
()
{
$
(
document
).
on
(
"click"
,
"#shifts_calendar_area button[data-select='Volant']"
,
function
()
{
// Subscribe to comitee/ftop shift
// Subscribe to comitee/ftop shift
msg
=
(
has_committe_shift
===
"True"
)
msg
=
(
has_committe_shift
===
"True"
)
?
`Inscrire
${
selected_member
.
name
}
au service des Comités ?`
?
`Inscrire
${
selected_member
.
name
}
au service des Comités ?`
:
`Inscrire
${
selected_member
.
name
}
en Volant ?`
;
:
`Inscrire
${
selected_member
.
name
}
en Volant ?`
;
openModal
(
openModal
(
msg
,
msg
,
()
=>
{
()
=>
{
shift_subscrition
(
2
);
shift_subscrition
(
2
);
},
},
"Confirmer"
,
"Confirmer"
,
false
false
);
);
});
});
$
(
document
).
off
(
"click"
,
".shift"
);
$
(
document
).
off
(
"click"
,
".shift"
);
$
(
document
).
on
(
"click"
,
".shift"
,
function
()
{
$
(
document
).
on
(
"click"
,
".shift"
,
function
()
{
// Subscribe to shift template
// Subscribe to shift template
let
shift_template_id
=
select_shift_among_compact
(
null
,
this
,
false
);
// method from common.js
let
shift_template_id
=
select_shift_among_compact
(
null
,
this
,
false
);
// method from common.js
let
shift_template_data
=
shift_templates
[
shift_template_id
].
data
;
// shift_templates: var from common.js
let
shift_template_data
=
shift_templates
[
shift_template_id
].
data
;
// shift_templates: var from common.js
let
shift_template_name
=
get_shift_name
(
shift_template_data
);
let
shift_template_name
=
get_shift_name
(
shift_template_data
);
openModal
(
openModal
(
`Inscrire
${
selected_member
.
name
}
au créneau
${
shift_template_name
}
?`
,
`Inscrire
${
selected_member
.
name
}
au créneau
${
shift_template_name
}
?`
,
()
=>
{
()
=>
{
shift_subscrition
(
1
,
parseInt
(
shift_template_id
),
shift_template_name
);
shift_subscrition
(
1
,
parseInt
(
shift_template_id
),
shift_template_name
);
},
},
"Confirmer"
,
"Confirmer"
,
false
false
);
);
});
});
}
}
...
...
members/static/js/inscriptions.js
View file @
349a141a
...
@@ -127,7 +127,7 @@ function create_new_coop() {
...
@@ -127,7 +127,7 @@ function create_new_coop() {
$
(
'.chosen_associate_area'
).
hide
();
$
(
'.chosen_associate_area'
).
hide
();
$
(
'.member_choice'
).
removeClass
(
'choice_active'
);
$
(
'.member_choice'
).
removeClass
(
'choice_active'
);
$
(
".remove_binome_icon"
).
on
(
"click"
,
hide_chosen_associate
);
$
(
".remove_binome_icon"
).
on
(
"click"
,
hide_chosen_associate
);
$
(
'input[name="binome"]'
).
prop
(
'checked'
,
false
);
$
(
'input[name="binome"]'
).
prop
(
'checked'
,
false
);
local_in_process
=
getLocalInProcess
();
local_in_process
=
getLocalInProcess
();
if
(
getLocalInProcess
().
length
>
0
)
{
if
(
getLocalInProcess
().
length
>
0
)
{
empty_waiting_local_processes
();
empty_waiting_local_processes
();
...
@@ -270,7 +270,7 @@ function store_new_coop(event) {
...
@@ -270,7 +270,7 @@ function store_new_coop(event) {
}
}
if
(
$
(
'#associate_area'
).
is
(
':visible'
))
{
if
(
$
(
'#associate_area'
).
is
(
':visible'
))
{
// If user choose yes for binome, a type of association must be selected
// If user choose yes for binome, a type of association must be selected
let
associated_data_selected
=
false
;
let
associated_data_selected
=
false
;
if
(
if
(
...
...
shifts/models.py
View file @
349a141a
...
@@ -318,7 +318,7 @@ class CagetteShift(models.Model):
...
@@ -318,7 +318,7 @@ class CagetteShift(models.Model):
coop_logger
.
error
(
"Reopen shift :
%
s"
,
str
(
e
))
coop_logger
.
error
(
"Reopen shift :
%
s"
,
str
(
e
))
return
response
return
response
def
create_delay
(
self
,
data
,
duration
=
28
):
def
create_delay
(
self
,
data
,
duration
=
28
,
ext_name
=
"Extension créée depuis l'espace membre"
):
"""
"""
Create a delay for a member.
Create a delay for a member.
If no duration is specified, a delay is by default 28 days from the given start_date.
If no duration is specified, a delay is by default 28 days from the given start_date.
...
@@ -327,14 +327,16 @@ class CagetteShift(models.Model):
...
@@ -327,14 +327,16 @@ class CagetteShift(models.Model):
Else, create a 28 days delay.
Else, create a 28 days delay.
Args:
Args:
idPartner: int
data
start_date: string date at iso format (eg. "2019-11-19")
idPartner: int
Date from which the delay end date is calculated
start_date: string date at iso format (eg. "2019-11-19")
(optionnal) extension_beginning: string date at iso format
Date from which the delay end date is calculated
If specified, will be the actual starting date of the extension.
(optionnal) extension_beginning: string date at iso format
Should be inferior than start_date.
If specified, will be the actual starting date of the extension.
(at creation only: odoo ignores delays if today's not inside)
Should be inferior than start_date.
(at creation only: odoo ignores delays if today's not inside)
duration: nb of days
duration: nb of days
ext_name: will be displayed in odoo extensions list
"""
"""
action
=
'create'
action
=
'create'
...
@@ -392,7 +394,7 @@ class CagetteShift(models.Model):
...
@@ -392,7 +394,7 @@ class CagetteShift(models.Model):
"type_id"
:
ext_type_id
,
"type_id"
:
ext_type_id
,
"date_start"
:
starting_date
.
isoformat
(),
"date_start"
:
starting_date
.
isoformat
(),
"date_stop"
:
ending_date
.
isoformat
(),
"date_stop"
:
ending_date
.
isoformat
(),
"name"
:
"Extension créée depuis l'espace membre"
"name"
:
ext_name
}
}
response
=
self
.
o_api
.
create
(
'shift.extension'
,
fields
)
response
=
self
.
o_api
.
create
(
'shift.extension'
,
fields
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment