Changeset View
Changeset View
Standalone View
Standalone View
swh/web/admin/origin_save.py
Show All 20 Lines | |||||
from swh.web.common.origin_save import ( | from swh.web.common.origin_save import ( | ||||
create_save_origin_request, get_save_origin_task_info, | create_save_origin_request, get_save_origin_task_info, | ||||
SAVE_REQUEST_PENDING, SAVE_REQUEST_REJECTED | SAVE_REQUEST_PENDING, SAVE_REQUEST_REJECTED | ||||
) | ) | ||||
@admin_route(r'origin/save/', view_name='admin-origin-save') | @admin_route(r'origin/save/', view_name='admin-origin-save') | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save(request): | def _admin_origin_save(request): | ||||
return render(request, 'admin/origin-save.html') | return render(request, 'admin/origin-save.html') | ||||
def _datatables_origin_urls_response(request, urls_query_set): | def _datatables_origin_urls_response(request, urls_query_set): | ||||
search_value = request.GET['search[value]'] | search_value = request.GET['search[value]'] | ||||
if search_value: | if search_value: | ||||
urls_query_set = urls_query_set.filter(url__icontains=search_value) | urls_query_set = urls_query_set.filter(url__icontains=search_value) | ||||
Show All 25 Lines | |||||
def _admin_origin_save_authorized_urls_list(request): | def _admin_origin_save_authorized_urls_list(request): | ||||
authorized_urls = SaveAuthorizedOrigin.objects.all() | authorized_urls = SaveAuthorizedOrigin.objects.all() | ||||
return _datatables_origin_urls_response(request, authorized_urls) | return _datatables_origin_urls_response(request, authorized_urls) | ||||
@admin_route(r'origin/save/authorized_urls/add/(?P<origin_url>.+)/', | @admin_route(r'origin/save/authorized_urls/add/(?P<origin_url>.+)/', | ||||
view_name='admin-origin-save-add-authorized-url') | view_name='admin-origin-save-add-authorized-url') | ||||
@require_POST | @require_POST | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_add_authorized_url(request, origin_url): | def _admin_origin_save_add_authorized_url(request, origin_url): | ||||
try: | try: | ||||
SaveAuthorizedOrigin.objects.get(url=origin_url) | SaveAuthorizedOrigin.objects.get(url=origin_url) | ||||
except ObjectDoesNotExist: | except ObjectDoesNotExist: | ||||
# add the new authorized url | # add the new authorized url | ||||
SaveAuthorizedOrigin.objects.create(url=origin_url) | SaveAuthorizedOrigin.objects.create(url=origin_url) | ||||
# check if pending save requests with that url prefix exist | # check if pending save requests with that url prefix exist | ||||
pending_save_requests = \ | pending_save_requests = \ | ||||
SaveOriginRequest.objects.filter(origin_url__startswith=origin_url, | SaveOriginRequest.objects.filter(origin_url__startswith=origin_url, | ||||
status=SAVE_REQUEST_PENDING) | status=SAVE_REQUEST_PENDING) | ||||
# create origin save tasks for previously pending requests | # create origin save tasks for previously pending requests | ||||
for psr in pending_save_requests: | for psr in pending_save_requests: | ||||
create_save_origin_request(psr.visit_type, psr.origin_url) | create_save_origin_request(psr.visit_type, psr.origin_url) | ||||
status_code = 200 | status_code = 200 | ||||
else: | else: | ||||
status_code = 400 | status_code = 400 | ||||
return HttpResponse(status=status_code) | return HttpResponse(status=status_code) | ||||
@admin_route(r'origin/save/authorized_urls/remove/(?P<origin_url>.+)/', | @admin_route(r'origin/save/authorized_urls/remove/(?P<origin_url>.+)/', | ||||
view_name='admin-origin-save-remove-authorized-url') | view_name='admin-origin-save-remove-authorized-url') | ||||
@require_POST | @require_POST | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_remove_authorized_url(request, origin_url): | def _admin_origin_save_remove_authorized_url(request, origin_url): | ||||
try: | try: | ||||
entry = SaveAuthorizedOrigin.objects.get(url=origin_url) | entry = SaveAuthorizedOrigin.objects.get(url=origin_url) | ||||
except ObjectDoesNotExist: | except ObjectDoesNotExist: | ||||
status_code = 404 | status_code = 404 | ||||
else: | else: | ||||
entry.delete() | entry.delete() | ||||
status_code = 200 | status_code = 200 | ||||
return HttpResponse(status=status_code) | return HttpResponse(status=status_code) | ||||
@admin_route(r'origin/save/unauthorized_urls/list/', | @admin_route(r'origin/save/unauthorized_urls/list/', | ||||
view_name='admin-origin-save-unauthorized-urls-list') | view_name='admin-origin-save-unauthorized-urls-list') | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_unauthorized_urls_list(request): | def _admin_origin_save_unauthorized_urls_list(request): | ||||
unauthorized_urls = SaveUnauthorizedOrigin.objects.all() | unauthorized_urls = SaveUnauthorizedOrigin.objects.all() | ||||
return _datatables_origin_urls_response(request, unauthorized_urls) | return _datatables_origin_urls_response(request, unauthorized_urls) | ||||
@admin_route(r'origin/save/unauthorized_urls/add/(?P<origin_url>.+)/', | @admin_route(r'origin/save/unauthorized_urls/add/(?P<origin_url>.+)/', | ||||
view_name='admin-origin-save-add-unauthorized-url') | view_name='admin-origin-save-add-unauthorized-url') | ||||
@require_POST | @require_POST | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_add_unauthorized_url(request, origin_url): | def _admin_origin_save_add_unauthorized_url(request, origin_url): | ||||
try: | try: | ||||
SaveUnauthorizedOrigin.objects.get(url=origin_url) | SaveUnauthorizedOrigin.objects.get(url=origin_url) | ||||
except ObjectDoesNotExist: | except ObjectDoesNotExist: | ||||
SaveUnauthorizedOrigin.objects.create(url=origin_url) | SaveUnauthorizedOrigin.objects.create(url=origin_url) | ||||
# check if pending save requests with that url prefix exist | # check if pending save requests with that url prefix exist | ||||
pending_save_requests = \ | pending_save_requests = \ | ||||
SaveOriginRequest.objects.filter(origin_url__startswith=origin_url, | SaveOriginRequest.objects.filter(origin_url__startswith=origin_url, | ||||
status=SAVE_REQUEST_PENDING) | status=SAVE_REQUEST_PENDING) | ||||
# mark pending requests as rejected | # mark pending requests as rejected | ||||
for psr in pending_save_requests: | for psr in pending_save_requests: | ||||
psr.status = SAVE_REQUEST_REJECTED | psr.status = SAVE_REQUEST_REJECTED | ||||
psr.save() | psr.save() | ||||
status_code = 200 | status_code = 200 | ||||
else: | else: | ||||
status_code = 400 | status_code = 400 | ||||
return HttpResponse(status=status_code) | return HttpResponse(status=status_code) | ||||
@admin_route(r'origin/save/unauthorized_urls/remove/(?P<origin_url>.+)/', | @admin_route(r'origin/save/unauthorized_urls/remove/(?P<origin_url>.+)/', | ||||
view_name='admin-origin-save-remove-unauthorized-url') | view_name='admin-origin-save-remove-unauthorized-url') | ||||
@require_POST | @require_POST | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_remove_unauthorized_url(request, origin_url): | def _admin_origin_save_remove_unauthorized_url(request, origin_url): | ||||
try: | try: | ||||
entry = SaveUnauthorizedOrigin.objects.get(url=origin_url) | entry = SaveUnauthorizedOrigin.objects.get(url=origin_url) | ||||
except ObjectDoesNotExist: | except ObjectDoesNotExist: | ||||
status_code = 404 | status_code = 404 | ||||
else: | else: | ||||
entry.delete() | entry.delete() | ||||
status_code = 200 | status_code = 200 | ||||
return HttpResponse(status=status_code) | return HttpResponse(status=status_code) | ||||
@admin_route(r'origin/save/request/accept/(?P<visit_type>.+)/url/(?P<origin_url>.+)/', # noqa | @admin_route(r'origin/save/request/accept/(?P<visit_type>.+)/url/(?P<origin_url>.+)/', # noqa | ||||
view_name='admin-origin-save-request-accept') | view_name='admin-origin-save-request-accept') | ||||
@require_POST | @require_POST | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_request_accept(request, visit_type, origin_url): | def _admin_origin_save_request_accept(request, visit_type, origin_url): | ||||
try: | try: | ||||
SaveAuthorizedOrigin.objects.get(url=origin_url) | SaveAuthorizedOrigin.objects.get(url=origin_url) | ||||
except ObjectDoesNotExist: | except ObjectDoesNotExist: | ||||
SaveAuthorizedOrigin.objects.create(url=origin_url) | SaveAuthorizedOrigin.objects.create(url=origin_url) | ||||
create_save_origin_request(visit_type, origin_url) | create_save_origin_request(visit_type, origin_url) | ||||
return HttpResponse(status=200) | return HttpResponse(status=200) | ||||
@admin_route(r'origin/save/request/reject/(?P<visit_type>.+)/url/(?P<origin_url>.+)/', # noqa | @admin_route(r'origin/save/request/reject/(?P<visit_type>.+)/url/(?P<origin_url>.+)/', # noqa | ||||
view_name='admin-origin-save-request-reject') | view_name='admin-origin-save-request-reject') | ||||
@require_POST | @require_POST | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_request_reject(request, visit_type, origin_url): | def _admin_origin_save_request_reject(request, visit_type, origin_url): | ||||
try: | try: | ||||
SaveUnauthorizedOrigin.objects.get(url=origin_url) | SaveUnauthorizedOrigin.objects.get(url=origin_url) | ||||
except ObjectDoesNotExist: | except ObjectDoesNotExist: | ||||
SaveUnauthorizedOrigin.objects.create(url=origin_url) | SaveUnauthorizedOrigin.objects.create(url=origin_url) | ||||
sor = SaveOriginRequest.objects.get(visit_type=visit_type, | sor = SaveOriginRequest.objects.get(visit_type=visit_type, | ||||
origin_url=origin_url, | origin_url=origin_url, | ||||
status=SAVE_REQUEST_PENDING) | status=SAVE_REQUEST_PENDING) | ||||
sor.status = SAVE_REQUEST_REJECTED | sor.status = SAVE_REQUEST_REJECTED | ||||
sor.save() | sor.save() | ||||
return HttpResponse(status=200) | return HttpResponse(status=200) | ||||
@admin_route(r'origin/save/request/remove/(?P<sor_id>.+)/', | @admin_route(r'origin/save/request/remove/(?P<sor_id>.+)/', | ||||
view_name='admin-origin-save-request-remove') | view_name='admin-origin-save-request-remove') | ||||
@require_POST | @require_POST | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _admin_origin_save_request_remove(request, sor_id): | def _admin_origin_save_request_remove(request, sor_id): | ||||
try: | try: | ||||
entry = SaveOriginRequest.objects.get(id=sor_id) | entry = SaveOriginRequest.objects.get(id=sor_id) | ||||
except ObjectDoesNotExist: | except ObjectDoesNotExist: | ||||
status_code = 404 | status_code = 404 | ||||
else: | else: | ||||
entry.delete() | entry.delete() | ||||
status_code = 200 | status_code = 200 | ||||
return HttpResponse(status=status_code) | return HttpResponse(status=status_code) | ||||
@admin_route(r'origin/save/task/info/(?P<save_request_id>.+)/', | @admin_route(r'origin/save/task/info/(?P<save_request_id>.+)/', | ||||
view_name='admin-origin-save-task-info') | view_name='admin-origin-save-task-info') | ||||
@staff_member_required(login_url=settings.LOGIN_URL) | @staff_member_required(view_func=None, login_url=settings.LOGIN_URL) | ||||
def _save_origin_task_info(request, save_request_id): | def _save_origin_task_info(request, save_request_id): | ||||
request_info = get_save_origin_task_info(save_request_id) | request_info = get_save_origin_task_info(save_request_id) | ||||
for date_field in ('scheduled', 'started', 'ended'): | for date_field in ('scheduled', 'started', 'ended'): | ||||
if date_field in request_info and request_info[date_field] is not None: | if date_field in request_info and request_info[date_field] is not None: | ||||
request_info[date_field] = request_info[date_field].isoformat() | request_info[date_field] = request_info[date_field].isoformat() | ||||
return HttpResponse(json.dumps(request_info), | return HttpResponse(json.dumps(request_info), | ||||
content_type='application/json') | content_type='application/json') |