django-celery icon indicating copy to clipboard operation
django-celery copied to clipboard

Store django-user into TaskMeta model

Open ernestoarbitrio opened this issue 9 years ago • 0 comments

Hi, i'm trying to store user information into TaskMeta model. I need to keep information about who's launching a task. I extended the TaskMeta model with the user foreignkey field

class ExtendedTask(models.Model):
    task = models.OneToOneField(TaskMeta, null=True)
    user = models.ForeignKey(User, null=True)

    class Meta:
        verbose_name = 'Task extra info'
        verbose_name_plural = 'Task extra info'

Now I overwrite the database backend:

class CustomDatabaseBackend(DatabaseBackend):

    TaskModel = TaskMeta
    TaskSetModel = TaskSetMeta

    user1 = get_current_user()

    def store_user_task(self, user_po=get_current_user(), task_p=None):
        ext_task = ExtendedTask(user=user_po, task=task_p)
        ext_task.save()

    def _store_result(self, task_id, result, status,
                      traceback=None, request=None):
        """Store return value and status of an executed task."""
        self.TaskModel._default_manager.store_result(
            task_id, result, status,
            traceback=traceback, children=self.current_task_children(request),
        )

        self.store_user_task(task_p=TaskMeta.objects.get(task_id=task_id))
        return result

creating the get_current_user() method to retrieve from the session the authenticated user, but it's always none if i pass it to the _save_results()

Any ideas?

best

ernesto

ernestoarbitrio avatar Mar 23 '16 14:03 ernestoarbitrio