Skip to content

Commit 94ae2ac

Browse files
committed
Add calculation delay to ricecooker bulk endpoint, update tests
1 parent d2d1921 commit 94ae2ac

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

contentcuration/contentcuration/decorators.py

+4
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ class DelayUserStorageCalculation(ContextDecorator):
7676
def is_active(self):
7777
return self.depth > 0
7878

79+
def add(self, user_id):
80+
if user_id not in self.queue:
81+
self.queue.append(user_id)
82+
7983
def __enter__(self):
8084
self.depth += 1
8185

contentcuration/contentcuration/tests/test_decorators.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,22 @@
22

33
from contentcuration.decorators import delay_user_storage_calculation
44
from contentcuration.tests.base import StudioTestCase
5+
from contentcuration.tests.base import testdata
56
from contentcuration.utils.user import calculate_user_storage
67

78

89
class DecoratorsTestCase(StudioTestCase):
10+
def setUp(self):
11+
super(DecoratorsTestCase, self).setUp()
12+
self.user = testdata.user()
13+
914
@mock.patch("contentcuration.utils.user.calculate_user_storage_task")
1015
def test_delay_storage_calculation(self, mock_task):
1116
@delay_user_storage_calculation
1217
def do_test():
13-
calculate_user_storage(self.admin_user.id)
14-
calculate_user_storage(self.admin_user.id)
18+
calculate_user_storage(self.user.id)
19+
calculate_user_storage(self.user.id)
1520
mock_task.fetch_or_enqueue.assert_not_called()
1621

1722
do_test()
18-
mock_task.fetch_or_enqueue.assert_called_once_with(self.admin_user, user_id=self.admin_user.id)
23+
mock_task.fetch_or_enqueue.assert_called_once_with(self.user, user_id=self.user.id)

contentcuration/contentcuration/utils/user.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def calculate_user_storage(user_id):
99
from contentcuration.decorators import delay_user_storage_calculation
1010

1111
if delay_user_storage_calculation.is_active:
12-
delay_user_storage_calculation.queue.append(user_id)
12+
delay_user_storage_calculation.add(user_id)
1313
return
1414

1515
try:

contentcuration/contentcuration/views/internal.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from contentcuration.api import activate_channel
3838
from contentcuration.api import write_file_to_storage
3939
from contentcuration.constants import completion_criteria
40+
from contentcuration.decorators import delay_user_storage_calculation
4041
from contentcuration.models import AssessmentItem
4142
from contentcuration.models import Change
4243
from contentcuration.models import Channel
@@ -54,7 +55,6 @@
5455
from contentcuration.utils.nodes import map_files_to_node
5556
from contentcuration.utils.nodes import map_files_to_slideshow_slide_item
5657
from contentcuration.utils.sentry import report_exception
57-
from contentcuration.utils.tracing import trace
5858
from contentcuration.viewsets.sync.constants import CHANNEL
5959
from contentcuration.viewsets.sync.utils import generate_publish_event
6060
from contentcuration.viewsets.sync.utils import generate_update_event
@@ -565,7 +565,7 @@ def __init__(self, node, errors):
565565
super(IncompleteNodeError, self).__init__(self.message)
566566

567567

568-
@trace
568+
@delay_user_storage_calculation
569569
def convert_data_to_nodes(user, content_data, parent_node):
570570
""" Parse dict and create nodes accordingly """
571571
try:

0 commit comments

Comments
 (0)