From a2df31e78bc532dbb5110307458bb6d57853736d Mon Sep 17 00:00:00 2001 From: susanodd Date: Thu, 22 Aug 2024 15:58:53 +0200 Subject: [PATCH 01/11] #1270: Signbank empty database. Modified permissions. Command to empty tables, command to remove users except for developers. --- signbank/abstract_machine.py | 4 +- signbank/context_processors.py | 2 +- signbank/dictionary/adminviews.py | 69 +++++++++--------- .../management/commands/create_empty_db.py | 69 ++++++++++++++++++ .../commands/delete_users_not_development.py | 25 +++++++ signbank/dictionary/models.py | 4 +- .../dictionary/add_annotated_sentence.html | 2 +- .../templates/dictionary/add_gloss.html | 4 +- .../templates/dictionary/add_lemma.html | 2 +- .../templates/dictionary/add_morpheme.html | 4 +- .../dictionary/add_sentence_video.html | 2 +- .../dictionary/admin_dataset_list.html | 8 +-- .../dictionary/admin_dataset_manager.html | 2 +- .../dictionary/admin_dataset_select_list.html | 2 +- .../dictionary/admin_lemma_list.html | 2 +- .../dictionary/admin_morpheme_list.html | 2 +- .../templates/dictionary/affiliationtags.html | 4 +- .../templates/dictionary/dataset_detail.html | 4 +- .../dictionary/dataset_frequency.html | 14 ++-- .../dictionary/edit_annotated_sentence.html | 2 +- .../templates/dictionary/gloss_detail.html | 58 +++++++-------- .../templates/dictionary/glosstags.html | 4 +- .../templates/dictionary/morpheme_detail.html | 6 +- .../templates/dictionary/morphemetags.html | 4 +- signbank/dictionary/tests.py | 70 +++++++++---------- signbank/dictionary/update.py | 32 ++++----- signbank/dictionary/views.py | 10 +-- signbank/gloss_morphology_update.py | 2 +- signbank/gloss_update.py | 12 ++-- signbank/manage_videos.py | 4 +- signbank/registration/views.py | 8 +-- signbank/tools.py | 2 +- 32 files changed, 266 insertions(+), 173 deletions(-) create mode 100644 signbank/dictionary/management/commands/create_empty_db.py create mode 100644 signbank/dictionary/management/commands/delete_users_not_development.py diff --git a/signbank/abstract_machine.py b/signbank/abstract_machine.py index 9b364b919..e8e362c1a 100644 --- a/signbank/abstract_machine.py +++ b/signbank/abstract_machine.py @@ -335,7 +335,7 @@ def csv_create_gloss(request, datasetid): if not dataset or not request.user.is_authenticated: return JsonResponse({}) - change_permit_datasets = get_objects_for_user(request.user, 'change_dataset', Dataset) + change_permit_datasets = get_objects_for_user(request.user, 'change_permission', Dataset) if dataset not in change_permit_datasets: return JsonResponse({}) @@ -374,7 +374,7 @@ def api_create_gloss(request, datasetid): results['errors'] = [gettext("Dataset ID does not exist.")] return JsonResponse(results) - change_permit_datasets = get_objects_for_user(request.user, 'change_dataset', Dataset) + change_permit_datasets = get_objects_for_user(request.user, 'change_permission', Dataset) if dataset not in change_permit_datasets: results['errors'] = [gettext("No change permission for dataset for user ") + str(request.user)] return JsonResponse(results) diff --git a/signbank/context_processors.py b/signbank/context_processors.py index ced0246fa..544256f4a 100755 --- a/signbank/context_processors.py +++ b/signbank/context_processors.py @@ -26,7 +26,7 @@ def url(request): viewable_datasets.append(dataset) continue permissions_for_dataset = get_user_perms(request.user, dataset) - if 'view_dataset' in permissions_for_dataset or 'can_view_dataset' in permissions_for_dataset: + if 'view_permission' in permissions_for_dataset: viewable_datasets.append(dataset) if 'dark_mode' not in request.session.keys(): diff --git a/signbank/dictionary/adminviews.py b/signbank/dictionary/adminviews.py index 6f5382000..0b0d74744 100755 --- a/signbank/dictionary/adminviews.py +++ b/signbank/dictionary/adminviews.py @@ -414,7 +414,7 @@ def render_to_ecv_export_response(self): # make sure the user can write to this dataset import guardian # from guardian.shortcuts import get_objects_for_user - user_change_datasets = guardian.shortcuts.get_objects_for_user(self.request.user, 'change_dataset', Dataset) + user_change_datasets = guardian.shortcuts.get_objects_for_user(self.request.user, 'change_permission', Dataset) if not user_change_datasets or dataset_object not in user_change_datasets: messages.add_message(self.request, messages.ERROR, _('No permission to export dataset.')) return HttpResponseRedirect(settings.PREFIX_URL + '/signs/search/') @@ -851,7 +851,7 @@ def get(self, request, *args, **kwargs): return HttpResponseRedirect(reverse('registration:login')) dataset_of_requested_gloss = self.object.lemma.dataset - datasets_user_can_view = get_objects_for_user(request.user, ['view_dataset', 'can_view_dataset'], + datasets_user_can_view = get_objects_for_user(request.user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) if dataset_of_requested_gloss not in selected_datasets: @@ -1292,7 +1292,7 @@ def get_context_data(self, **kwargs): context['dataset_choices'] = {} user = self.request.user if user.is_authenticated: - qs = get_objects_for_user(user, ['view_dataset', 'can_view_dataset'], Dataset, accept_global_perms=True, any_perm=True) + qs = get_objects_for_user(user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) dataset_choices = {} for dataset in qs: dataset_choices[dataset.acronym] = dataset.acronym @@ -1477,7 +1477,7 @@ def get(self, request, *args, **kwargs): return HttpResponseRedirect(reverse('registration:login')) dataset_of_requested_gloss = self.object.lemma.dataset - datasets_user_can_view = get_objects_for_user(request.user, ['view_dataset', 'can_view_dataset'], + datasets_user_can_view = get_objects_for_user(request.user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) if dataset_of_requested_gloss not in selected_datasets: @@ -1586,7 +1586,7 @@ def get(self, request, *args, **kwargs): return HttpResponseRedirect(reverse('registration:login')) dataset_of_requested_gloss = self.object.lemma.dataset - datasets_user_can_view = get_objects_for_user(request.user, ['view_dataset', 'can_view_dataset'], + datasets_user_can_view = get_objects_for_user(request.user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) if dataset_of_requested_gloss not in selected_datasets: @@ -2876,7 +2876,7 @@ def get_queryset(self): checker.prefetch_perms(qs) for dataset in qs: - checker.has_perm('can_view_dataset', dataset) or checker.has_perm('view_dataset', dataset) + checker.has_perm('view_permission', dataset) return qs else: @@ -2916,7 +2916,7 @@ def get(self, request, *args, **kwargs): return HttpResponseRedirect(reverse('registration:login')) dataset_of_requested_gloss = self.object.lemma.dataset - datasets_user_can_view = get_objects_for_user(request.user, ['view_dataset', 'can_view_dataset'], + datasets_user_can_view = get_objects_for_user(request.user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) if dataset_of_requested_gloss not in selected_datasets: @@ -2982,7 +2982,7 @@ def get_context_data(self, **kwargs): context['dataset_choices'] = {} user = self.request.user if user.is_authenticated: - qs = get_objects_for_user(user, ['view_dataset', 'can_view_dataset'], + qs = get_objects_for_user(user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) dataset_choices = {} for dataset in qs: @@ -3128,7 +3128,7 @@ def get_context_data(self, **kwargs): context['dataset_choices'] = {} user = self.request.user if user.is_authenticated: - qs = get_objects_for_user(user, ['view_dataset', 'can_view_dataset'], + qs = get_objects_for_user(user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) dataset_choices = {} for dataset in qs: @@ -3553,14 +3553,14 @@ def render_to_request_response(self, context): # make sure the user can write to this dataset from guardian.shortcuts import get_objects_for_user, assign_perm - user_view_datasets = get_objects_for_user(self.request.user, ['view_dataset', 'can_view_dataset'], + user_view_datasets = get_objects_for_user(self.request.user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) may_request_dataset = True if dataset_object.is_public and not dataset_object in user_view_datasets: # the user currently has no view permission for the requested dataset # Give permission to access dataset may_request_dataset = True - assign_perm('can_view_dataset', self.request.user, dataset_object) + assign_perm('view_permission', self.request.user, dataset_object) messages.add_message(self.request, messages.INFO, _('View permission for user successfully granted.')) elif not dataset_object.is_public and not dataset_object in user_view_datasets: @@ -3666,7 +3666,7 @@ def render_to_ecv_export_response(self, context): # make sure the user can write to this dataset # from guardian.shortcuts import get_objects_for_user - user_change_datasets = get_objects_for_user(self.request.user, 'change_dataset', Dataset, accept_global_perms=False) + user_change_datasets = get_objects_for_user(self.request.user, 'change_permission', Dataset, accept_global_perms=False) if not user_change_datasets or dataset_object not in user_change_datasets: messages.add_message(self.request, messages.ERROR, _('No permission to export dataset.')) return HttpResponseRedirect(reverse('admin_dataset_view')) @@ -3716,8 +3716,7 @@ def get_queryset(self): checker.prefetch_perms(qs) for dataset in qs: - checker.has_perm('can_view_dataset', dataset) or checker.has_perm('view_dataset', dataset) - + checker.has_perm('view_permission', dataset) qs = qs.annotate(Count('lemmaidgloss__gloss')).order_by('acronym') return qs @@ -3738,7 +3737,7 @@ def get_queryset(self): datasets_with_public_glosses = get_datasets_with_public_glosses() viewable_datasets = list( set([ds.id for ds in datasets_with_public_glosses])) - + print('view: ', viewable_datasets) qs = Dataset.objects.filter(id__in=viewable_datasets) datasets_to_choose_from = qs.annotate(checked=ExpressionWrapper(Q(id__in=selected_dataset_ids), output_field=BooleanField())).order_by('acronym') @@ -3813,7 +3812,7 @@ def check_user_permissions_for_managing_dataset(self, dataset_object): # make sure the user can write to this dataset # from guardian.shortcuts import get_objects_for_user - user_change_datasets = get_objects_for_user(self.request.user, 'change_dataset', Dataset, + user_change_datasets = get_objects_for_user(self.request.user, 'change_permission', Dataset, accept_global_perms=False) if not user_change_datasets or dataset_object not in user_change_datasets: messages.add_message(self.request, messages.ERROR, _('No permission to modify dataset permissions.')) @@ -3912,8 +3911,8 @@ def render_to_add_user_response(self, context): manage_identifier = 'dataset_' + dataset_object.acronym.replace(' ','') from guardian.shortcuts import assign_perm, remove_perm - datasets_user_can_change = get_objects_for_user(user_object, 'change_dataset', Dataset, accept_global_perms=False) - datasets_user_can_view = get_objects_for_user(user_object, ['view_dataset', 'can_view_dataset'], + datasets_user_can_change = get_objects_for_user(user_object, 'change_permission', Dataset, accept_global_perms=False) + datasets_user_can_view = get_objects_for_user(user_object, ['view_permission'], Dataset, accept_global_perms=False, any_perm=True) groups_user_is_in = Group.objects.filter(user=user_object) @@ -3929,7 +3928,7 @@ def render_to_add_user_response(self, context): return HttpResponseRedirect(reverse('admin_dataset_manager')+'?'+manage_identifier) try: - assign_perm('can_view_dataset', user_object, dataset_object) + assign_perm('view_permission', user_object, dataset_object) messages.add_message(self.request, messages.INFO, _('View permission for user successfully granted.')) @@ -3986,7 +3985,7 @@ def render_to_add_user_response(self, context): manage_identifier += '_manage_view' return HttpResponseRedirect(reverse('admin_dataset_manager') + '?' + manage_identifier) try: - assign_perm('change_dataset', user_object, dataset_object) + assign_perm('change_permission', user_object, dataset_object) # put user in Editor group editor_group = Group.objects.get(name='Editor') @@ -4016,8 +4015,8 @@ def render_to_add_user_response(self, context): try: # also need to remove change_dataset perm in this case from guardian.shortcuts import remove_perm - remove_perm('can_view_dataset', user_object, dataset_object) - remove_perm('change_dataset', user_object, dataset_object) + remove_perm('view_permission', user_object, dataset_object) + remove_perm('change_permission', user_object, dataset_object) messages.add_message(self.request, messages.INFO, _('View (and change) permission for user successfully revoked.')) except (PermissionError, SystemError, OSError): @@ -4039,8 +4038,8 @@ def render_to_add_user_response(self, context): else: # can remove permission try: - remove_perm('change_dataset', user_object, dataset_object) - other_datasets_user_can_change = get_objects_for_user(user_object, 'change_dataset', Dataset, + remove_perm('change_permission', user_object, dataset_object) + other_datasets_user_can_change = get_objects_for_user(user_object, 'change_permission', Dataset, accept_global_perms=True) if len(other_datasets_user_can_change) == 0: # this was the only dataset the user could change @@ -4183,7 +4182,7 @@ def get_queryset(self): checker.prefetch_perms(qs) for dataset in qs: - checker.has_perm('change_dataset', dataset) + checker.has_perm('change_permission', dataset) return qs else: @@ -4388,7 +4387,7 @@ def get_context_data(self, **kwargs): selected_datasets = get_selected_datasets_for_user(self.request.user) managed_datasets = [] - change_dataset_permission = get_objects_for_user(self.request.user, 'change_dataset', Dataset) + change_dataset_permission = get_objects_for_user(self.request.user, 'change_permission', Dataset) for dataset in selected_datasets: if dataset in change_dataset_permission: dataset_excluded_choices = dataset.exclude_choices.all() @@ -4513,7 +4512,7 @@ def get_queryset(self): checker.prefetch_perms(qs) for dataset in qs: - checker.has_perm('change_dataset', dataset) + checker.has_perm('change_permission', dataset) return qs else: @@ -4615,7 +4614,7 @@ def get(self, request, *args, **kwargs): return HttpResponseRedirect(reverse('registration:login')) dataset = self.object - datasets_user_can_view = get_objects_for_user(request.user, ['view_dataset', 'can_view_dataset'], + datasets_user_can_view = get_objects_for_user(request.user, ['view_permission'], Dataset, accept_global_perms=True, any_perm=True) if dataset not in datasets_user_can_view: @@ -4764,7 +4763,7 @@ def render_to_process_speakers_response(self, context): # make sure the user can write to this dataset # from guardian.shortcuts import get_objects_for_user - user_change_datasets = get_objects_for_user(self.request.user, 'change_dataset', Dataset, accept_global_perms=False) + user_change_datasets = get_objects_for_user(self.request.user, 'change_permission', Dataset, accept_global_perms=False) if not user_change_datasets.exists() or dataset_object not in user_change_datasets: messages.add_message(self.request, messages.ERROR, _('No permission to import speakers for this dataset.')) return HttpResponseRedirect(reverse('admin_dataset_view')) @@ -4803,7 +4802,7 @@ def render_to_create_corpus_response(self, context): # make sure the user can write to this dataset # from guardian.shortcuts import get_objects_for_user - user_change_datasets = get_objects_for_user(self.request.user, 'change_dataset', Dataset, accept_global_perms=False) + user_change_datasets = get_objects_for_user(self.request.user, 'change_permission', Dataset, accept_global_perms=False) if not user_change_datasets.exists() or dataset_object not in user_change_datasets: messages.add_message(self.request, messages.ERROR, _('No permission to create a corpus for this dataset.')) return HttpResponseRedirect(reverse('admin_dataset_view')) @@ -4843,7 +4842,7 @@ def render_to_update_corpus_response(self, context): # make sure the user can write to this dataset # from guardian.shortcuts import get_objects_for_user - user_change_datasets = get_objects_for_user(self.request.user, 'change_dataset', Dataset, accept_global_perms=False) + user_change_datasets = get_objects_for_user(self.request.user, 'change_permission', Dataset, accept_global_perms=False) if not user_change_datasets.exists() or dataset_object not in user_change_datasets: messages.add_message(self.request, messages.ERROR, _('No permission to update the corpus for this dataset.')) return HttpResponseRedirect(reverse('admin_dataset_view')) @@ -4956,7 +4955,7 @@ def get(self, request, *args, **kwargs): return HttpResponseRedirect(reverse('registration:login')) dataset_of_requested_morpheme = self.object.lemma.dataset - datasets_user_can_view = get_objects_for_user(request.user, ['view_dataset', 'can_view_dataset'], + datasets_user_can_view = get_objects_for_user(request.user, ['view_permission'], Dataset, accept_global_perms=False, any_perm=True) if dataset_of_requested_morpheme not in selected_datasets: @@ -5201,7 +5200,7 @@ def get_context_data(self, **kwargs): context['dataset_choices'] = {} user = self.request.user if user.is_authenticated: - qs = get_objects_for_user(user, ['view_dataset', 'can_view_dataset'], + qs = get_objects_for_user(user, ['view_permission'], Dataset, accept_global_perms=False, any_perm=True) dataset_choices = dict() for dataset in qs: @@ -6014,7 +6013,7 @@ def post(self, request, *args, **kwargs): # the template sets POST value 'delete_lemmas' to value 'delete_lemmas' messages.add_message(request, messages.WARNING, _("Incorrect deletion code.")) return HttpResponseRedirect(reverse('dictionary:admin_lemma_list')) - datasets_user_can_change = get_objects_for_user(request.user, 'change_dataset', Dataset, + datasets_user_can_change = get_objects_for_user(request.user, 'change_permission', Dataset, accept_global_perms=False) if not datasets_user_can_change: messages.add_message(request, messages.WARNING, @@ -6355,7 +6354,7 @@ def get(self, request, *args, **kwargs): return HttpResponseRedirect(reverse('registration:login')) dataset_of_requested_lemma = self.object.dataset - datasets_user_can_view = get_objects_for_user(request.user, ['view_dataset', 'can_view_dataset'], + datasets_user_can_view = get_objects_for_user(request.user, ['view_permission'], Dataset, accept_global_perms=False, any_perm=True) if dataset_of_requested_lemma not in selected_datasets: diff --git a/signbank/dictionary/management/commands/create_empty_db.py b/signbank/dictionary/management/commands/create_empty_db.py new file mode 100644 index 000000000..569d5c0a3 --- /dev/null +++ b/signbank/dictionary/management/commands/create_empty_db.py @@ -0,0 +1,69 @@ +from django.core.management.base import BaseCommand, CommandError +from django.conf import settings + +from os.path import isfile +from sqlite3 import connect +from shutil import copyfile, move + +def make_db_small(filename): + conn = connect(filename,isolation_level=None) + c = conn.cursor() + + # Select all tables in dataset + sql_query = """SELECT name FROM sqlite_master WHERE type='table';""" + c.execute(sql_query) + + # Set which tables should not be emptied + keep_tables = ['auth_group', 'auth_permissions', + 'dictionary_corpus', 'dictionary_dataset', 'dictionary_dataset_translation_languages', + 'dictionary_derivationhistory', 'dictionary_derivationhistorytranslation', 'dictionary_dialect', + 'dictionary_fieldchoice', 'dictionary_handshape', 'dictionary_language', + 'dictionary_semanticfield', 'dictionary_semanticfieldtranslation', + 'dictionary_signlanguage', 'dictionary_content_type', + 'django_migrations', + 'pages_page', 'south_migrationhistory', 'tagging_tag', + 'auth_group_permissions', + 'auth_user_groups', + 'auth_user_user_permissions', + 'auth_permission', + 'auth_user', + 'registration_registrationprofile', + 'registration_userprofile', + 'pages_page_group_required', + 'django_site', + 'guardian_groupobjectpermission', + 'guardian_userobjectpermission', + 'dictionary_userprofile' + ] + + # Empty all other tables + for table in c.fetchall(): + if table[0] not in keep_tables: + print('Delete contents from table: ', table[0]) + c.execute('DELETE FROM ' + table[0] + ';') + + c.execute('VACUUM') + conn.commit() + conn.close() + + +class Command(BaseCommand): + help = 'Creates a smaller faster database for unit tests' + + def handle(self, *args, **options): + # find databases + source_db = settings.DATABASES['default']['NAME'] + test_db_filename = settings.DATABASES['default']['TEST']['NAME'] + + SMALL = True + + if isfile(test_db_filename): + self.stdout.write('Making backup of old test database') + move(test_db_filename, test_db_filename + '_save') + + self.stdout.write('Copying database file') + copyfile(source_db, test_db_filename) + + if SMALL: + self.stdout.write('Emptying tables, for faster tests') + make_db_small(test_db_filename) diff --git a/signbank/dictionary/management/commands/delete_users_not_development.py b/signbank/dictionary/management/commands/delete_users_not_development.py new file mode 100644 index 000000000..75924c66a --- /dev/null +++ b/signbank/dictionary/management/commands/delete_users_not_development.py @@ -0,0 +1,25 @@ +from django.core.mail import send_mail +from django.core.management.base import BaseCommand, CommandError + +from signbank.settings import base +from signbank.tools import get_users_without_dataset +from signbank.dictionary.models import User + +class Command(BaseCommand): + help = 'Sends a list of all users without a dataset to an email addresss' + + def add_arguments(self, parser): + parser.add_argument('address', type=str) + + def handle(self, *args, **options): + + users_without_dataset = User.objects.all() + + if len(users_without_dataset) == 0: + return + + for user in users_without_dataset: + if user.username not in ['susanodd', 'wessel', 'wesseltest', + 'AnonymousUser', 'DivyaKanekal', 'jetske', 'jetsketest', + 'micha', 'michatest']: + user.delete() diff --git a/signbank/dictionary/models.py b/signbank/dictionary/models.py index 45d8995c9..9f5239130 100755 --- a/signbank/dictionary/models.py +++ b/signbank/dictionary/models.py @@ -3193,7 +3193,7 @@ def get_users_who_can_view_dataset(self): with_group_users=False) for user in all_users: if user in users_who_can_access_me.keys(): - if 'can_view_dataset' in users_who_can_access_me[user] or 'view_dataset' in users_who_can_access_me[user]: + if 'view_permission' in users_who_can_access_me[user]: users_who_can_view_dataset.append(user) return users_who_can_view_dataset @@ -3208,7 +3208,7 @@ def get_users_who_can_change_dataset(self): with_group_users=False) for user in all_users: if user in users_who_can_access_me.keys(): - if 'change_dataset' in users_who_can_access_me[user]: + if 'change_permission' in users_who_can_access_me[user]: users_who_can_change_dataset.append(user) return users_who_can_change_dataset diff --git a/signbank/dictionary/templates/dictionary/add_annotated_sentence.html b/signbank/dictionary/templates/dictionary/add_annotated_sentence.html index 8277656e2..ac33eb3f3 100644 --- a/signbank/dictionary/templates/dictionary/add_annotated_sentence.html +++ b/signbank/dictionary/templates/dictionary/add_annotated_sentence.html @@ -13,7 +13,7 @@ {% block content %} {% get_obj_perms request.user for gloss.lemma.dataset as "dataset_perms" %} -{% if "change_dataset" in dataset_perms %} +{% if "change_permission" in dataset_perms %}

{% trans "Upload New Annotated Sentence" %}

diff --git a/signbank/dictionary/templates/dictionary/add_gloss.html b/signbank/dictionary/templates/dictionary/add_gloss.html index 2ebc8cf43..7fa1ca7dd 100755 --- a/signbank/dictionary/templates/dictionary/add_gloss.html +++ b/signbank/dictionary/templates/dictionary/add_gloss.html @@ -26,7 +26,7 @@ var permission = 0; {% for s_dataset in selected_datasets %} {% get_obj_perms request.user for s_dataset as "dataset_perms" %} - {% if "change_dataset" in dataset_perms %} + {% if "change_permission" in dataset_perms %} permission += 1; {% endif %} {% endfor %} @@ -99,7 +99,7 @@ {% for s_dataset in selected_datasets %} {% get_obj_perms request.user for s_dataset as "dataset_perms" %} - {% if "change_dataset" in dataset_perms %} + {% if "change_permission" in dataset_perms %} {% if last_used_dataset and last_used_dataset == s_dataset.acronym %} diff --git a/signbank/dictionary/templates/dictionary/add_morpheme.html b/signbank/dictionary/templates/dictionary/add_morpheme.html index 72095237b..fa0287e8a 100644 --- a/signbank/dictionary/templates/dictionary/add_morpheme.html +++ b/signbank/dictionary/templates/dictionary/add_morpheme.html @@ -18,7 +18,7 @@ var permission = 0; {% for s_dataset in selected_datasets %} {% get_obj_perms request.user for s_dataset as "dataset_perms" %} - {% if "change_dataset" in dataset_perms %} + {% if "change_permission" in dataset_perms %} permission += 1; {% endif %} {% endfor %} @@ -82,7 +82,7 @@ {% for s_dataset in selected_datasets %} {% get_obj_perms request.user for s_dataset as "dataset_perms" %} - {% if "change_dataset" in dataset_perms %} + {% if "change_permission" in dataset_perms %} {% if last_used_dataset and last_used_dataset == s_dataset.acronym %} diff --git a/signbank/dictionary/templates/dictionary/add_sentence_video.html b/signbank/dictionary/templates/dictionary/add_sentence_video.html index 845bf98a8..313e51d61 100644 --- a/signbank/dictionary/templates/dictionary/add_sentence_video.html +++ b/signbank/dictionary/templates/dictionary/add_sentence_video.html @@ -15,7 +15,7 @@ {% block content %} {% get_obj_perms request.user for gloss.lemma.dataset as "dataset_perms" %} -{% if "change_dataset" in dataset_perms %} +{% if "change_permission" in dataset_perms %}
{% trans "Upload New Example Sentence Video" %} diff --git a/signbank/dictionary/templates/dictionary/admin_dataset_list.html b/signbank/dictionary/templates/dictionary/admin_dataset_list.html index 15ef52b96..526268520 100644 --- a/signbank/dictionary/templates/dictionary/admin_dataset_list.html +++ b/signbank/dictionary/templates/dictionary/admin_dataset_list.html @@ -55,7 +55,7 @@

{% trans "Available Datasets" %}

{% if not user.is_anonymous %} {% get_obj_perms request.user for dataset as "dataset_perms" %} - {% if "view_dataset" in dataset_perms or "can_view_dataset" in dataset_perms %} + {% if "view_permission" in dataset_perms %} {% trans "Yes" %} {% else %} {% trans "No" %} @@ -63,7 +63,7 @@

{% trans "Available Datasets" %}

{% get_obj_perms request.user for dataset as "dataset_perms" %} - {% if "change_dataset" in dataset_perms %} + {% if "change_permission" in dataset_perms %} {% trans "Yes" %} {% else %} {% trans "No" %} @@ -72,7 +72,7 @@

{% trans "Available Datasets" %}

{% if dataset.is_public %} {% get_obj_perms request.user for dataset as "dataset_perms" %} - {% if not "view_dataset" in dataset_perms or not "can_view_dataset" in dataset_perms %} + {% if not "view_permission" in dataset_perms %}
@@ -104,7 +104,7 @@

{% trans "Available Datasets" %}

{% get_obj_perms request.user for dataset as "dataset_perms" %} - {% if "change_dataset" in dataset_perms and dataset.lemmaidgloss__gloss__count %} + {% if "change_permission" in dataset_perms and dataset.lemmaidgloss__gloss__count %}