Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
teknikattan-scoring-system
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tddd96-grupp1
teknikattan-scoring-system
Commits
e19cee09
Commit
e19cee09
authored
3 years ago
by
Victor Löfgren
Browse files
Options
Downloads
Patches
Plain Diff
Add some more comments to move_slides()
parent
75286c3c
No related branches found
No related tags found
1 merge request
!132
Resolve "Fix move slides on backend"
Pipeline
#44565
passed with warnings
3 years ago
Stage: setup
Stage: test
Stage: report
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
server/app/database/controller/utils.py
+19
-2
19 additions, 2 deletions
server/app/database/controller/utils.py
with
19 additions
and
2 deletions
server/app/database/controller/utils.py
+
19
−
2
View file @
e19cee09
...
@@ -18,7 +18,6 @@ def move_slides(item_competition, from_order, to_order):
...
@@ -18,7 +18,6 @@ def move_slides(item_competition, from_order, to_order):
assert
0
<=
from_order
<
num_slides
,
"
Invalid order to move from
"
assert
0
<=
from_order
<
num_slides
,
"
Invalid order to move from
"
assert
0
<=
to_order
<
num_slides
,
"
Invalid order to move to
"
assert
0
<=
to_order
<
num_slides
,
"
Invalid order to move to
"
# TODO: Please improve this terrible piece of code
# This function is sooo terrible, someone please tell me how to update
# This function is sooo terrible, someone please tell me how to update
# multiple values in the database at the same time with unique constraints.
# multiple values in the database at the same time with unique constraints.
# If you update all the values at the same time none of them will collide
# If you update all the values at the same time none of them will collide
...
@@ -26,36 +25,54 @@ def move_slides(item_competition, from_order, to_order):
...
@@ -26,36 +25,54 @@ def move_slides(item_competition, from_order, to_order):
# other value before and then change every value back to the correct one,
# other value before and then change every value back to the correct one,
# so 2 commits.
# so 2 commits.
# An example will follow the entire code to make it clear what it does
# Lets say we have 5 slides, and we want to move the slide at index 1
# to index 4.
# We begin with a list of slides with orders [0, 1, 2, 3, 4]
slides
=
item_competition
.
slides
slides
=
item_competition
.
slides
change
=
1
if
to_order
<
from_order
else
-
1
change
=
1
if
to_order
<
from_order
else
-
1
start_order
=
min
(
from_order
,
to_order
)
start_order
=
min
(
from_order
,
to_order
)
end_order
=
max
(
from_order
,
to_order
)
end_order
=
max
(
from_order
,
to_order
)
# Move slides up 100
for
item_slide
in
slides
:
for
item_slide
in
slides
:
item_slide
.
order
+=
100
item_slide
.
order
+=
100
# Our slide orders now look like [100, 101, 102, 103, 104]
# Move slides between from and to order either up or down, but minus in front
# Move slides between from and to order either up or down, but minus in front
for
item_slide
in
slides
:
for
item_slide
in
slides
:
if
start_order
<=
item_slide
.
order
-
100
<=
end_order
:
if
start_order
<=
item_slide
.
order
-
100
<=
end_order
:
item_slide
.
order
=
-
(
item_slide
.
order
+
change
)
item_slide
.
order
=
-
(
item_slide
.
order
+
change
)
# Our slide orders now look like [100, -100, -101, -102, -103]
# Find the slide that was to be moved and change it to correct order with minus in front
# Find the slide that was to be moved and change it to correct order with minus in front
for
item_slide
in
slides
:
for
item_slide
in
slides
:
if
item_slide
.
order
==
-
(
from_order
+
change
+
100
):
if
item_slide
.
order
==
-
(
from_order
+
change
+
100
):
item_slide
.
order
=
-
(
to_order
+
100
)
item_slide
.
order
=
-
(
to_order
+
100
)
break
break
# Our slide orders now look like [100, -104, -101, -102, -103]
db
.
session
.
commit
()
db
.
session
.
commit
()
# Negate all order so that they become
correct and
positive
# Negate all order so that they become positive
for
item_slide
in
slides
:
for
item_slide
in
slides
:
if
start_order
<=
-
(
item_slide
.
order
+
100
)
<=
end_order
:
if
start_order
<=
-
(
item_slide
.
order
+
100
)
<=
end_order
:
item_slide
.
order
=
-
(
item_slide
.
order
)
item_slide
.
order
=
-
(
item_slide
.
order
)
# Our slide orders now look like [100, 104, 101, 102, 103]
for
item_slide
in
slides
:
for
item_slide
in
slides
:
item_slide
.
order
-=
100
item_slide
.
order
-=
100
# Our slide orders now look like [0, 4, 1, 2, 3]
# We have now successfully moved slide 1 to 4
return
commit_and_refresh
(
item_competition
)
return
commit_and_refresh
(
item_competition
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment