Changeset View
Changeset View
Standalone View
Standalone View
swh/web/admin/deposit.py
# Copyright (C) 2018-2021 The Software Heritage developers | # Copyright (C) 2018-2021 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import sentry_sdk | import sentry_sdk | ||||
from django.conf import settings | from django.conf import settings | ||||
from django.contrib.admin.views.decorators import staff_member_required | from django.contrib.auth.decorators import user_passes_test | ||||
from django.core.paginator import Paginator | from django.core.paginator import Paginator | ||||
from django.http import JsonResponse | from django.http import JsonResponse | ||||
from django.shortcuts import render | from django.shortcuts import render | ||||
from swh.web.admin.adminurls import admin_route | from swh.web.admin.adminurls import admin_route | ||||
from swh.web.auth.utils import ADMIN_LIST_DEPOSIT_PERMISSION | |||||
from swh.web.common.utils import get_deposits_list | from swh.web.common.utils import get_deposits_list | ||||
def _can_list_deposits(user): | |||||
return user.is_staff or user.has_perm(ADMIN_LIST_DEPOSIT_PERMISSION) | |||||
@admin_route(r"deposit/", view_name="admin-deposit") | @admin_route(r"deposit/", view_name="admin-deposit") | ||||
@staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | @user_passes_test(_can_list_deposits, login_url=settings.LOGIN_URL) | ||||
ardumont: did not know that decorator, how neat ;) | |||||
def _admin_origin_save(request): | def _admin_origin_save(request): | ||||
return render(request, "admin/deposit.html") | return render(request, "admin/deposit.html") | ||||
@admin_route(r"deposit/list/", view_name="admin-deposit-list") | @admin_route(r"deposit/list/", view_name="admin-deposit-list") | ||||
@staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | @user_passes_test(_can_list_deposits, login_url=settings.LOGIN_URL) | ||||
def _admin_deposit_list(request): | def _admin_deposit_list(request): | ||||
table_data = {} | table_data = {} | ||||
table_data["draw"] = int(request.GET["draw"]) | table_data["draw"] = int(request.GET["draw"]) | ||||
try: | try: | ||||
deposits = get_deposits_list() | deposits = get_deposits_list(request.GET.get("username")) | ||||
deposits_count = len(deposits) | deposits_count = len(deposits) | ||||
search_value = request.GET["search[value]"] | search_value = request.GET["search[value]"] | ||||
if search_value: | if search_value: | ||||
deposits = [ | deposits = [ | ||||
d | d | ||||
for d in deposits | for d in deposits | ||||
if any( | if any( | ||||
search_value.lower() in val | search_value.lower() in val | ||||
▲ Show 20 Lines • Show All 49 Lines • Show Last 20 Lines |
did not know that decorator, how neat ;)