Improve and condense related controls
This commit is contained in:
@@ -45,6 +45,14 @@ def _preferred_related_text_field(model: type[models.Model]) -> str | None:
|
||||
return None
|
||||
|
||||
|
||||
def _column_field_name(column: "OsintColumn") -> str:
|
||||
if column.search_lookup:
|
||||
return str(column.search_lookup).split("__", 1)[0]
|
||||
if column.sort_field:
|
||||
return str(column.sort_field).split("__", 1)[0]
|
||||
return str(column.key)
|
||||
|
||||
|
||||
def _url_with_query(base_url: str, query: dict[str, Any]) -> str:
|
||||
params = {}
|
||||
for key, value in query.items():
|
||||
@@ -465,6 +473,8 @@ class OSINTListBase(ObjectList):
|
||||
if not column.sort_field:
|
||||
columns.append(
|
||||
{
|
||||
"key": column.key,
|
||||
"field_name": _column_field_name(column),
|
||||
"label": column.label,
|
||||
"sortable": False,
|
||||
"kind": column.kind,
|
||||
@@ -482,6 +492,8 @@ class OSINTListBase(ObjectList):
|
||||
)
|
||||
columns.append(
|
||||
{
|
||||
"key": column.key,
|
||||
"field_name": _column_field_name(column),
|
||||
"label": column.label,
|
||||
"sortable": True,
|
||||
"kind": column.kind,
|
||||
@@ -815,6 +827,8 @@ class OSINTSearch(LoginRequiredMixin, View):
|
||||
if not column.sort_field:
|
||||
columns.append(
|
||||
{
|
||||
"key": column.key,
|
||||
"field_name": _column_field_name(column),
|
||||
"label": column.label,
|
||||
"sortable": False,
|
||||
"kind": column.kind,
|
||||
@@ -832,6 +846,8 @@ class OSINTSearch(LoginRequiredMixin, View):
|
||||
)
|
||||
columns.append(
|
||||
{
|
||||
"key": column.key,
|
||||
"field_name": _column_field_name(column),
|
||||
"label": column.label,
|
||||
"sortable": True,
|
||||
"kind": column.kind,
|
||||
@@ -1019,3 +1035,51 @@ class OSINTSearch(LoginRequiredMixin, View):
|
||||
return render(request, self.widget_template, widget_context)
|
||||
|
||||
return render(request, self.page_template, context)
|
||||
|
||||
|
||||
class OSINTWorkspace(LoginRequiredMixin, View):
|
||||
template_name = "pages/osint-workspace.html"
|
||||
|
||||
def get(self, request):
|
||||
context = {
|
||||
"tabs_widget_url": reverse("osint_workspace_tabs_widget"),
|
||||
}
|
||||
return render(request, self.template_name, context)
|
||||
|
||||
|
||||
class OSINTWorkspaceTabsWidget(LoginRequiredMixin, View):
|
||||
def get(self, request):
|
||||
tabs = [
|
||||
{
|
||||
"key": "people",
|
||||
"label": "People",
|
||||
"icon": "fa-solid fa-user-group",
|
||||
"widget_url": reverse("people", kwargs={"type": "widget"}),
|
||||
},
|
||||
{
|
||||
"key": "groups",
|
||||
"label": "Groups",
|
||||
"icon": "fa-solid fa-users",
|
||||
"widget_url": reverse("groups", kwargs={"type": "widget"}),
|
||||
},
|
||||
{
|
||||
"key": "personas",
|
||||
"label": "Personas",
|
||||
"icon": "fa-solid fa-masks-theater",
|
||||
"widget_url": reverse("personas", kwargs={"type": "widget"}),
|
||||
},
|
||||
{
|
||||
"key": "manipulations",
|
||||
"label": "Manipulations",
|
||||
"icon": "fa-solid fa-sliders",
|
||||
"widget_url": reverse("manipulations", kwargs={"type": "widget"}),
|
||||
},
|
||||
]
|
||||
context = {
|
||||
"title": "OSINT Workspace",
|
||||
"unique": "osint-workspace-tabs",
|
||||
"window_content": "partials/osint-workspace-tabs-widget.html",
|
||||
"widget_options": 'gs-w="12" gs-h="4" gs-x="0" gs-y="0" gs-min-w="6"',
|
||||
"tabs": tabs,
|
||||
}
|
||||
return render(request, "mixins/wm/widget.html", context)
|
||||
|
||||
Reference in New Issue
Block a user