|
1 | 1 | import json |
2 | 2 |
|
3 | 3 |
|
4 | | -from django.http import Http404 |
5 | 4 | from django.core import serializers |
6 | 5 | from django.core.exceptions import ValidationError |
7 | | -from django.urls import reverse_lazy, reverse |
| 6 | +from django.urls import reverse_lazy |
8 | 7 | from django.http import HttpResponse, JsonResponse |
9 | 8 | from django.views.generic import ListView, DetailView, View, CreateView, DeleteView, TemplateView, UpdateView |
10 | | -from django.views.generic.edit import FormView |
11 | 9 | from django.contrib import messages |
12 | 10 | from django.contrib.auth.mixins import PermissionRequiredMixin |
13 | 11 | from django.forms.models import model_to_dict |
14 | 12 | from django.shortcuts import redirect, render |
15 | | -from django.utils.functional import cached_property |
16 | 13 |
|
17 | 14 | from admin.base import settings |
18 | 15 | from admin.base.forms import ImportFileForm |
19 | | -from admin.preprint_providers.forms import PreprintProviderForm, PreprintProviderCustomTaxonomyForm, PreprintProviderRegisterModeratorOrAdminForm |
20 | | -from osf.models import PreprintProvider, Subject, OSFUser, RegistrationProvider, CollectionProvider |
| 16 | +from admin.preprint_providers.forms import PreprintProviderForm, PreprintProviderCustomTaxonomyForm |
| 17 | +from osf.models import PreprintProvider, Subject, RegistrationProvider, CollectionProvider |
21 | 18 | from osf.models.provider import rules_to_subjects, WhitelistedSHAREPreprintProvider |
22 | 19 | from website import settings as website_settings |
| 20 | +from admin.providers.views import AddAdminOrModerator, RemoveAdminsAndModerators |
23 | 21 |
|
24 | 22 | FIELDS_TO_NOT_IMPORT_EXPORT = ['access_token', 'share_source', 'subjects_acceptable', 'primary_collection'] |
25 | 23 |
|
@@ -454,43 +452,17 @@ def get(self, request): |
454 | 452 | return render(request, self.template_name, {'share_api_url': share_api_url, 'api_v2_url': api_v2_url}) |
455 | 453 |
|
456 | 454 |
|
457 | | -class PreprintProviderRegisterModeratorOrAdmin(PermissionRequiredMixin, FormView): |
| 455 | +class PreprintAddAdminOrModerator(AddAdminOrModerator): |
458 | 456 | permission_required = 'osf.change_preprintprovider' |
| 457 | + template_name = 'preprint_providers/edit_moderators.html' |
| 458 | + provider_class = PreprintProvider |
| 459 | + url_namespace = 'preprint_providers' |
459 | 460 | raise_exception = True |
460 | | - template_name = 'preprint_providers/register_moderator_admin.html' |
461 | | - form_class = PreprintProviderRegisterModeratorOrAdminForm |
462 | | - |
463 | | - @cached_property |
464 | | - def target_provider(self): |
465 | | - return PreprintProvider.objects.get(id=self.kwargs['preprint_provider_id']) |
466 | | - |
467 | | - def get_form_kwargs(self): |
468 | | - kwargs = super().get_form_kwargs() |
469 | | - kwargs['provider_groups'] = self.target_provider.group_objects |
470 | | - return kwargs |
471 | | - |
472 | | - def get_context_data(self, **kwargs): |
473 | | - context = super().get_context_data(**kwargs) |
474 | | - context['provider_name'] = self.target_provider.name |
475 | | - return context |
476 | | - |
477 | | - def form_valid(self, form): |
478 | | - user_id = form.cleaned_data.get('user_id') |
479 | | - osf_user = OSFUser.load(user_id) |
480 | | - |
481 | | - if not osf_user: |
482 | | - raise Http404(f'OSF user with id "{user_id}" not found. Please double check.') |
483 | | - |
484 | | - if osf_user.has_groups(self.target_provider.group_names): |
485 | | - messages.error(self.request, f'User with guid: {user_id} is already a moderator or admin') |
486 | | - return super().form_invalid(form) |
487 | 461 |
|
488 | | - group = form.cleaned_data.get('group_perms') |
489 | | - self.target_provider.add_to_group(osf_user, group) |
490 | | - osf_user.save() |
491 | 462 |
|
492 | | - messages.success(self.request, f'Permissions update successful for OSF User {osf_user.username}!') |
493 | | - return super().form_valid(form) |
494 | | - |
495 | | - def get_success_url(self): |
496 | | - return reverse('preprint_providers:register_moderator_admin', kwargs={'preprint_provider_id': self.kwargs['preprint_provider_id']}) |
| 463 | +class PreprintRemoveAdminsAndModerators(RemoveAdminsAndModerators): |
| 464 | + permission_required = 'osf.change_preprintprovider' |
| 465 | + template_name = 'preprint_providers/edit_moderators.html' |
| 466 | + provider_class = PreprintProvider |
| 467 | + url_namespace = 'preprint_providers' |
| 468 | + raise_exception = True |
0 commit comments