|
19 | 19 |
|
20 | 20 | logger = get_task_logger(__name__) |
21 | 21 |
|
22 | | -@celery_app.task(bind=True) |
23 | | -def send_user_email_task(self, user_id, notification_ids, **kwargs): |
| 22 | + |
| 23 | +def get_user_and_email_task(task_id, user_id): |
| 24 | + """Helper to safely fetch user and initialize EmailTask.""" |
24 | 25 | try: |
25 | 26 | user = OSFUser.objects.get( |
26 | 27 | guids___id=user_id, |
27 | 28 | deleted__isnull=True |
28 | 29 | ) |
29 | 30 | except OSFUser.DoesNotExist: |
30 | 31 | logger.error(f'OSFUser with id {user_id} does not exist') |
31 | | - email_task, _ = EmailTask.objects.get_or_create(task_id=self.request.id) |
| 32 | + email_task, _ = EmailTask.objects.get_or_create(task_id=task_id) |
32 | 33 | email_task.status = 'NO_USER_FOUND' |
33 | 34 | email_task.error_message = 'User not found or disabled' |
34 | 35 | email_task.save() |
| 36 | + return None, email_task |
| 37 | + |
| 38 | + email_task, _ = EmailTask.objects.get_or_create(task_id=task_id) |
| 39 | + email_task.user = user |
| 40 | + email_task.status = 'STARTED' |
| 41 | + |
| 42 | + if user.is_disabled: |
| 43 | + email_task.status = 'USER_DISABLED' |
| 44 | + email_task.error_message = 'User not found or disabled' |
| 45 | + email_task.save() |
| 46 | + return None, email_task |
| 47 | + |
| 48 | + return user, email_task |
| 49 | + |
| 50 | +@celery_app.task(bind=True) |
| 51 | +def send_user_email_task(self, user_id, notification_ids, **kwargs): |
| 52 | + user, email_task = get_user_and_email_task(self.request.id, user_id) |
| 53 | + if not user: |
35 | 54 | return |
36 | 55 |
|
37 | 56 | try: |
38 | | - email_task, _ = EmailTask.objects.get_or_create(task_id=self.request.id) |
39 | | - email_task.user = user |
40 | | - email_task.status = 'STARTED' |
41 | | - if user.is_disabled: |
42 | | - email_task.status = 'USER_DISABLED' |
43 | | - email_task.error_message = 'User not found or disabled' |
44 | | - email_task.save() |
45 | | - return |
46 | | - |
47 | 57 | notifications_qs = Notification.objects.filter(id__in=notification_ids) |
48 | 58 | rendered_notifications = [n.render() for n in notifications_qs] |
49 | 59 |
|
@@ -90,29 +100,11 @@ def send_user_email_task(self, user_id, notification_ids, **kwargs): |
90 | 100 |
|
91 | 101 | @celery_app.task(bind=True) |
92 | 102 | def send_moderator_email_task(self, user_id, provider_id, notification_ids, **kwargs): |
93 | | - try: |
94 | | - user = OSFUser.objects.get( |
95 | | - guids___id=user_id, |
96 | | - deleted__isnull=True |
97 | | - ) |
98 | | - except OSFUser.DoesNotExist: |
99 | | - logger.error(f'OSFUser with id {user_id} does not exist') |
100 | | - email_task, _ = EmailTask.objects.get_or_create(task_id=self.request.id) |
101 | | - email_task.status = 'NO_USER_FOUND' |
102 | | - email_task.error_message = 'User not found or disabled' |
103 | | - email_task.save() |
| 103 | + user, email_task = get_user_and_email_task(self.request.id, user_id) |
| 104 | + if not user: |
104 | 105 | return |
105 | 106 |
|
106 | 107 | try: |
107 | | - email_task, _ = EmailTask.objects.get_or_create(task_id=self.request.id) |
108 | | - email_task.user = user |
109 | | - email_task.status = 'STARTED' |
110 | | - if user.is_disabled: |
111 | | - email_task.status = 'USER_DISABLED' |
112 | | - email_task.error_message = 'User not found or disabled' |
113 | | - email_task.save() |
114 | | - return |
115 | | - |
116 | 108 | notifications_qs = Notification.objects.filter(id__in=notification_ids) |
117 | 109 | rendered_notifications = [notification.render() for notification in notifications_qs] |
118 | 110 |
|
@@ -302,10 +294,7 @@ def remove_supplemental_node_from_preprints(node_id): |
302 | 294 | AbstractNode = apps.get_model('osf.AbstractNode') |
303 | 295 |
|
304 | 296 | node = AbstractNode.load(node_id) |
305 | | - for preprint in node.preprints.all(): |
306 | | - if preprint.node is not None: |
307 | | - preprint.node = None |
308 | | - preprint.save() |
| 297 | + node.preprints.filter(node__isnull=False).update(node=None) |
309 | 298 |
|
310 | 299 |
|
311 | 300 | @run_postcommit(once_per_request=False, celery=True) |
|
0 commit comments