-
Notifications
You must be signed in to change notification settings - Fork 327
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Institution Rework] [ENG-3696] Project PR - Backend Part (#10254)
- [Institution Rework] [ENG-4229] Add unit tests to cover reworked SSO flow with identity and affiliation (#10313) - [Institution Rework] [ENG-4202] Another follow-up: Fix/Improve email templates (#10311) - [Institution Rework] [ENG-4202] Follow-up: Add email templates (#10308) - [Institution Rework] [ENG-4204] Part 2: Minor tweak SSO exceptions for CAS (#10299) - [Institution Rework] [ENG-4198] Fix/Improve Migration Command (#10293) - [Institution Rework] [Bug Fix] Remove user from institution metrics admin when affiliation is removed (#10290) - [Institution Rework] [Bug Fix] Exclude banner_name and logo_name from form fields (#10289) - [Institution Rework] [Bug Fix] Fix admin asset and institution filter (#10283) - [Institution Rework] [Bug Fix] Return placeholder images as fallback (#10282) - [Institution Rework] [ENG-4202] [ENG-4204] Rework Institution SSO flow with identity and affiliation - API Part (#10260) - [Institution Rework] [ENG-4216] [ENG-4217] Change asset references (#10247) - [Institution Rework] [ENG-4206] [ENG-4207] Institution assets rework (#10240) - [Institution Rework] [ENG-4199] [ENG-4200] Update user-institution affiliation references (#10236) - [Institution Rework] [ENG-4197] [ENG-4198] Add a new model for user-institution affiliation (#10227)
- Loading branch information
Showing
74 changed files
with
1,415 additions
and
434 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
from django import forms | ||
|
||
from osf.models.storage import InstitutionAssetFile | ||
from osf.models.institution import Institution | ||
|
||
class InstitutionAssetFileForm(forms.ModelForm): | ||
class Meta: | ||
model = InstitutionAssetFile | ||
fields = ['name', 'file', 'institutions', 'id'] | ||
|
||
id = forms.IntegerField(required=False, widget=forms.HiddenInput()) | ||
institutions = forms.ModelMultipleChoiceField(Institution.objects.all(), widget=forms.CheckboxSelectMultiple(), required=False) | ||
|
||
def clean(self): | ||
cleaned_data = super(InstitutionAssetFileForm, self).clean() | ||
obj_id = int(cleaned_data.get('id', None) or 0) | ||
for institution in cleaned_data.get('institutions', []): | ||
if institution.asset_files.exclude(id=obj_id).filter(name=cleaned_data.get('name', '')).exists(): | ||
raise forms.ValidationError('Naming conflict detected on Institution "{}"'.format(institution.name)) | ||
return cleaned_data |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
from django.conf.urls import re_path | ||
from . import views | ||
|
||
app_name = 'admin' | ||
|
||
urlpatterns = [ | ||
re_path(r'^$', views.InstitutionAssetFileList.as_view(), name='list'), | ||
re_path(r'^create/$', views.InstitutionAssetFileCreate.as_view(), name='create'), | ||
re_path(r'^(?P<asset_id>[0-9]+)/$', views.InstitutionAssetFileDetail.as_view(), name='detail'), | ||
re_path(r'^(?P<asset_id>[0-9]+)/delete/$', views.InstitutionAssetFileDelete.as_view(), name='delete'), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
from django.contrib.auth.mixins import PermissionRequiredMixin | ||
from django.urls import reverse_lazy | ||
from django.forms.models import model_to_dict | ||
from django.views.generic import ListView, DetailView, View, CreateView, DeleteView, UpdateView | ||
|
||
from admin.institution_asset_files.forms import InstitutionAssetFileForm | ||
from osf.models.storage import InstitutionAssetFile | ||
from osf.models.institution import Institution | ||
|
||
class InstitutionAssetFileList(PermissionRequiredMixin, ListView): | ||
paginate_by = 25 | ||
template_name = 'osf/assetfile_list.html' | ||
ordering = 'name' | ||
permission_required = 'osf.view_institutionassetfile' | ||
raise_exception = True | ||
model = InstitutionAssetFile | ||
|
||
def get_queryset(self): | ||
filtered_institution_id = self.request.GET.get('institution_id', None) | ||
qs = InstitutionAssetFile.objects.all().order_by(self.ordering) | ||
if filtered_institution_id and Institution.objects.filter(id=filtered_institution_id).exists(): | ||
qs = qs.filter(institutions__id=filtered_institution_id) | ||
return qs | ||
|
||
def get_context_data(self, **kwargs): | ||
query_set = kwargs.pop('object_list', self.object_list) | ||
page_size = self.get_paginate_by(query_set) | ||
paginator, page, query_set, is_paginated = self.paginate_queryset( | ||
query_set, page_size) | ||
rv = { | ||
'on_institution_route': True, | ||
'asset_files': query_set, | ||
'page': page, | ||
'filterable_target_ids': dict({'': '---'}, **{str(id): ' '.join([name]) for id, name in Institution.objects.all().values_list('id', 'name')}), | ||
} | ||
return rv | ||
|
||
class AssetFileMixin(object): | ||
def get_object(self, queryset=None): | ||
return InstitutionAssetFile.objects.get(id=self.kwargs.get('asset_id')) | ||
|
||
class InstitutionAssetFileDisplay(AssetFileMixin, PermissionRequiredMixin, DetailView): | ||
permission_required = 'osf.view_institutionassetfile' | ||
template_name = 'osf/assetfile_form.html' | ||
form_class = InstitutionAssetFileForm | ||
raise_exception = True | ||
model = InstitutionAssetFile | ||
|
||
def get_context_data(self, **kwargs): | ||
instance = self.get_object() | ||
kwargs['form'] = self.form_class(model_to_dict(instance), instance=instance) | ||
# Assumption: only css files will not be images. This may be incorrect in the future, but currently is not. | ||
kwargs['embed_file'] = instance.file and not instance.file.url.endswith('.css') | ||
kwargs['on_institution_route'] = True | ||
return kwargs | ||
|
||
class InstitutionAssetFileChangeForm(AssetFileMixin, PermissionRequiredMixin, UpdateView): | ||
permission_required = 'osf.change_institutionassetfile' | ||
raise_exception = True | ||
model = InstitutionAssetFile | ||
form_class = InstitutionAssetFileForm | ||
|
||
def get_success_url(self, *args, **kwargs): | ||
return reverse_lazy('institution_asset_files:detail', kwargs={'asset_id': self.kwargs.get('asset_id')}) | ||
|
||
class InstitutionAssetFileDelete(AssetFileMixin, PermissionRequiredMixin, DeleteView): | ||
permission_required = 'osf.delete_institutionassetfile' | ||
raise_exception = True | ||
template_name = 'osf/assetfile_confirm_delete.html' | ||
success_url = reverse_lazy('institution_asset_files:list') | ||
|
||
|
||
class InstitutionAssetFileDetail(PermissionRequiredMixin, View): | ||
permission_required = 'osf.view_institutionassetfile' | ||
raise_exception = True | ||
form_class = InstitutionAssetFileForm | ||
|
||
def get(self, request, *args, **kwargs): | ||
view = InstitutionAssetFileDisplay.as_view() | ||
return view(request, *args, **kwargs) | ||
|
||
def post(self, request, *args, **kwargs): | ||
view = InstitutionAssetFileChangeForm.as_view() | ||
return view(request, *args, **kwargs) | ||
|
||
class InstitutionAssetFileCreate(PermissionRequiredMixin, CreateView): | ||
permission_required = 'osf.change_institutionassetfile' | ||
raise_exception = True | ||
template_name = 'osf/assetfile_create.html' | ||
success_url = reverse_lazy('institution_asset_files:list') | ||
model = InstitutionAssetFile | ||
form_class = InstitutionAssetFileForm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.