Skip to content

Commit

Permalink
Merge pull request #79 from Omnipro-Solutions/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
edgarpena14 committed Jun 11, 2024
2 parents 388f228 + 2be610c commit 90dea72
Showing 1 changed file with 49 additions and 1 deletion.
50 changes: 49 additions & 1 deletion omni_pro_oms/admin/task.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,23 @@
import django
from django.contrib import admin
from django.urls import resolve
from django.utils.translation import gettext_lazy as _
from omni_pro_base.admin import BaseAdmin
from omni_pro_oms.forms import TaskAdminForm
from omni_pro_oms.models import Task
from rangefilter.filters import DateRangeFilter
from rest_framework.request import Request
from rest_framework.test import APIRequestFactory


class BuilderDateRangeFilter(DateRangeFilter):
def get_form(self, _request):
form_class = self._get_form_class()
if django.VERSION[:2] >= (5, 0):
for name, value in self.used_parameters.items():
if isinstance(value, list):
self.used_parameters[name] = value[-1]
return form_class(self.used_parameters or None)


class TaskAdmin(BaseAdmin):
Expand All @@ -18,7 +33,13 @@ class TaskAdmin(BaseAdmin):
"time",
"updated_at",
)
list_filter = ("tenant_id", "operation_id", "status", "created_at", "updated_at")
list_filter = (
"tenant_id",
"operation_id",
"status",
("created_at", BuilderDateRangeFilter),
"updated_at",
)
search_fields = ("item", "url_src", "url_dst", "body_src", "body_dst", "time")
form = TaskAdminForm

Expand Down Expand Up @@ -55,5 +76,32 @@ def __init__(self, *args, **kwargs):
),
) + self.fieldsets

def retry_task(self, request, queryset):
try:
for task in queryset:
if task.status != "error":
continue
task_view = resolve(task.url_src)
view = task_view.func.view_class()
factory = APIRequestFactory()

# Crea la solicitud con el diccionario JSON y el método HTTP especificado
method = task.operation_id.http_method.lower()
request_rest = getattr(factory, method)(task.url_src, task.body_src, content_type="application/json")

# Convertimos HttpRequest a una instancia de Request
request_rest = Request(request_rest, parsers=[view.parser_classes[0]])
request_rest._full_data = task.body_src

# Llamamos al método dinámico de la vista
view_method = getattr(view, method)
view_method(request=request_rest, **task_view.kwargs)
return self.message_user(request, "Task retried successfully.")
except Exception as e:
print(str(e))
self.message_user(request, f"Error: {str(e)}", 40)

actions = [retry_task]


admin.site.register(Task, TaskAdmin)

0 comments on commit 90dea72

Please sign in to comment.