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
c368a0f9
Commit
c368a0f9
authored
Jan 24, 2025
by
Yvon Kerdoncuff
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove unused code
parent
d7c64f69
Pipeline
#4085
failed with stage
in 0 seconds
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
0 additions
and
128 deletions
+0
-128
models.py
shifts/models.py
+0
-112
views.py
shifts/views.py
+0
-16
No files found.
shifts/models.py
View file @
c368a0f9
...
...
@@ -49,62 +49,6 @@ class CagetteShift(models.Model):
result
[
'error'
]
=
str
(
e
)
return
result
def
is_matching_ftop_rules
(
self
,
partner_id
,
idNewShift
,
idOldShift
=
0
):
answer
=
True
rules
=
getattr
(
settings
,
'FTOP_SERVICES_RULES'
,
{})
if
(
"successive_shifts_allowed"
in
rules
or
"max_shifts_per_cycle"
in
rules
):
try
:
now
=
datetime
.
datetime
.
now
(
tz
)
# Have to retrive shifts (from now to a cycle period forward to check rules respect)
[
shift_registrations
,
is_ftop
]
=
shifts
.
fonctions
.
get_shift_partner
(
self
.
o_api
,
partner_id
,
now
+
datetime
.
timedelta
(
weeks
=
4
))
new_shift
=
self
.
get_shift
(
idNewShift
)
# WARNING : use date_begin_tz while shift_registrations use date_begin (UTC)
if
"successive_shifts_allowed"
in
rules
:
min_duration
=
getattr
(
settings
,
'MIN_SHIFT_DURATION'
,
2
)
for
sr
in
shift_registrations
:
if
int
(
sr
[
'shift_id'
][
0
])
!=
int
(
idOldShift
):
diff
=
(
datetime
.
datetime
.
strptime
(
sr
[
'date_begin'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
.
astimezone
(
tz
)
-
tz
.
localize
(
datetime
.
datetime
.
strptime
(
new_shift
[
'date_begin_tz'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)))
if
abs
(
diff
.
total_seconds
()
/
3600
)
<
(
min_duration
*
2
)
*
(
int
(
rules
[
'successive_shifts_allowed'
])
+
1
):
answer
=
False
# coop_logger.info(sr['date_begin'] + ' - ' + new_shift['date_begin_tz'])
# coop_logger.info(str(diff.total_seconds()/3600) + 'h')
if
"max_shifts_per_cycle"
in
rules
:
[
ymd
,
hms
]
=
new_shift
[
'date_begin_tz'
]
.
split
(
" "
)
cw
=
self
.
get_cycle_week_data
(
ymd
)
if
'start_date'
in
cw
:
sd
=
cw
[
'start_date'
]
ed
=
cw
[
'start_date'
]
+
datetime
.
timedelta
(
weeks
=
4
)
[
cycle_shift_regs
,
is_ftop
]
=
shifts
.
fonctions
.
get_shift_partner
(
self
.
o_api
,
partner_id
,
start_date
=
sd
,
end_date
=
ed
)
if
len
(
cycle_shift_regs
)
>=
int
(
rules
[
'max_shifts_per_cycle'
]):
answer
=
False
coop_logger
.
info
(
"services max par cycle atteint pour partner_id
%
s"
,
str
(
partner_id
))
except
Exception
as
e
:
coop_logger
.
error
(
"is_shift_exchange_allowed
%
s
%
s"
,
str
(
e
),
str
(
new_shift
))
return
answer
def
is_shift_exchange_allowed
(
self
,
idOldShift
,
idNewShift
,
shift_type
,
partner_id
):
answer
=
True
min_delay
=
getattr
(
settings
,
'STANDARD_BLOCK_SERVICE_EXCHANGE_DELAY'
,
0
)
if
shift_type
==
"ftop"
:
min_delay
=
getattr
(
settings
,
'FTOP_BLOCK_SERVICE_EXCHANGE_DELAY'
,
0
)
if
min_delay
>
0
:
now
=
datetime
.
datetime
.
now
(
tz
)
old_shift
=
self
.
get_shift
(
idOldShift
)
day_before_old_shift_date_start
=
\
tz
.
localize
(
datetime
.
datetime
.
strptime
(
old_shift
[
'date_begin_tz'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
-
datetime
.
timedelta
(
hours
=
min_delay
))
if
now
>
day_before_old_shift_date_start
:
answer
=
False
elif
shift_type
==
"ftop"
:
answer
=
self
.
is_matching_ftop_rules
(
partner_id
,
idNewShift
,
idOldShift
)
return
answer
def
get_shift
(
self
,
id
):
"""Get one shift by id"""
cond
=
[[
'id'
,
'='
,
id
]]
...
...
@@ -118,62 +62,6 @@ class CagetteShift(models.Model):
coop_logger
.
error
(
"get_shift
%
s"
,
str
(
e
))
return
None
def
is_matching_ftop_rules
(
self
,
partner_id
,
idNewShift
,
idOldShift
=
0
):
answer
=
True
rules
=
getattr
(
settings
,
'FTOP_SERVICES_RULES'
,
{})
if
(
"successive_shifts_allowed"
in
rules
or
"max_shifts_per_cycle"
in
rules
):
try
:
now
=
datetime
.
datetime
.
now
(
tz
)
# Have to retrive shifts (from now to a cycle period forward to check rules respect)
[
shift_registrations
,
is_ftop
]
=
shifts
.
fonctions
.
get_shift_partner
(
self
.
o_api
,
partner_id
,
now
+
datetime
.
timedelta
(
weeks
=
4
))
new_shift
=
self
.
get_shift
(
idNewShift
)
# WARNING : use date_begin_tz while shift_registrations use date_begin (UTC)
if
"successive_shifts_allowed"
in
rules
:
min_duration
=
getattr
(
settings
,
'MIN_SHIFT_DURATION'
,
2
)
for
sr
in
shift_registrations
:
if
int
(
sr
[
'shift_id'
][
0
])
!=
int
(
idOldShift
):
diff
=
(
datetime
.
datetime
.
strptime
(
sr
[
'date_begin'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
.
astimezone
(
tz
)
-
tz
.
localize
(
datetime
.
datetime
.
strptime
(
new_shift
[
'date_begin_tz'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)))
if
abs
(
diff
.
total_seconds
()
/
3600
)
<
(
min_duration
*
2
)
*
(
int
(
rules
[
'successive_shifts_allowed'
])
+
1
):
answer
=
False
# coop_logger.info(sr['date_begin'] + ' - ' + new_shift['date_begin_tz'])
# coop_logger.info(str(diff.total_seconds()/3600) + 'h')
if
"max_shifts_per_cycle"
in
rules
:
[
ymd
,
hms
]
=
new_shift
[
'date_begin_tz'
]
.
split
(
" "
)
cw
=
self
.
get_cycle_week_data
(
ymd
)
if
'start_date'
in
cw
:
sd
=
cw
[
'start_date'
]
ed
=
cw
[
'start_date'
]
+
datetime
.
timedelta
(
weeks
=
4
)
[
cycle_shift_regs
,
is_ftop
]
=
shifts
.
fonctions
.
get_shift_partner
(
self
.
o_api
,
partner_id
,
start_date
=
sd
,
end_date
=
ed
)
if
len
(
cycle_shift_regs
)
>=
int
(
rules
[
'max_shifts_per_cycle'
]):
answer
=
False
coop_logger
.
info
(
"services max par cycle atteint pour partner_id
%
s"
,
str
(
partner_id
))
except
Exception
as
e
:
coop_logger
.
error
(
"is_shift_exchange_allowed
%
s
%
s"
,
str
(
e
),
str
(
new_shift
))
return
answer
def
is_shift_exchange_allowed
(
self
,
idOldShift
,
idNewShift
,
shift_type
,
partner_id
):
answer
=
True
min_delay
=
getattr
(
settings
,
'STANDARD_BLOCK_SERVICE_EXCHANGE_DELAY'
,
0
)
if
shift_type
==
"ftop"
:
min_delay
=
getattr
(
settings
,
'FTOP_BLOCK_SERVICE_EXCHANGE_DELAY'
,
0
)
if
min_delay
>
0
:
now
=
datetime
.
datetime
.
now
(
tz
)
old_shift
=
self
.
get_shift
(
idOldShift
)
day_before_old_shift_date_start
=
\
tz
.
localize
(
datetime
.
datetime
.
strptime
(
old_shift
[
'date_begin_tz'
],
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
-
datetime
.
timedelta
(
hours
=
min_delay
))
if
now
>
day_before_old_shift_date_start
:
answer
=
False
elif
shift_type
==
"ftop"
:
answer
=
self
.
is_matching_ftop_rules
(
partner_id
,
idNewShift
,
idOldShift
)
return
answer
def
get_data_partner
(
self
,
id
):
"""Retrieve partner data useful to make decision about shift options"""
cond
=
[[
'id'
,
'='
,
id
]]
...
...
shifts/views.py
View file @
c368a0f9
...
...
@@ -135,11 +135,6 @@ def change_shift(request):
response
=
{
'msg'
:
"Old service in less than 24hours."
}
return
JsonResponse
(
response
,
status
=
400
)
if
cs
.
is_shift_exchange_allowed
(
idOldShift
,
data
[
"idShift"
],
data
[
"shift_type"
],
data
[
"idPartner"
])
is
False
:
response
=
{
'msg'
:
"Not allowed to change shift"
}
return
JsonResponse
(
response
,
status
=
400
)
st_r_id
=
False
#Insertion du nouveau shift
try
:
...
...
@@ -220,17 +215,6 @@ def add_shift(request):
if
'is_makeup'
in
request
.
POST
and
request
.
POST
[
'is_makeup'
]
==
"1"
:
data
[
'is_makeup'
]
=
True
data
[
'origin'
]
=
"Espace membre : sélection de rattrapage"
if
request
.
POST
[
'shift_type'
]
==
"ftop"
:
if
cs
.
is_matching_ftop_rules
(
partner_id
,
id_shift
)
is
True
:
# Need to find out if a makeup has to be choosen
makeups_to_do
=
cs
.
get_member_makeups_to_do
(
partner_id
)
if
makeups_to_do
!=
0
:
data
[
'is_makeup'
]
=
True
else
:
response
=
{
'msg'
:
"FTOP rules not respected"
}
return
JsonResponse
(
response
,
status
=
422
)
#Insertion du nouveau shift
st_r_id
=
False
...
...
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