From 6874a71353e17f119e8f00734039a750f22ba471 Mon Sep 17 00:00:00 2001 From: SharleneNdinda Date: Thu, 5 Oct 2023 15:35:44 +0300 Subject: [PATCH] fix: sms content item snippet program filters and page permissions --- config/settings/base.py | 1 + .../0017_alter_contentitem_facilities.py | 24 +++++++++++++++++++ mycarehub/content/models/models.py | 5 +++- mycarehub/content/models/sms.py | 3 +++ mycarehub/content/signals.py | 15 +++++++----- 5 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 mycarehub/content/migrations/0017_alter_contentitem_facilities.py diff --git a/config/settings/base.py b/config/settings/base.py index 174fd46..a26d4d3 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -399,6 +399,7 @@ WAGTAIL_CONTENT_LANGUAGES = [ ("en", _("English")), ("sw", _("Swahili")), + ("fr", _("French")), ] WAGTAILEMBEDS_RESPONSIVE_HTML = True WAGTAILADMIN_RECENT_EDITS_LIMIT = 5 diff --git a/mycarehub/content/migrations/0017_alter_contentitem_facilities.py b/mycarehub/content/migrations/0017_alter_contentitem_facilities.py new file mode 100644 index 0000000..19770fd --- /dev/null +++ b/mycarehub/content/migrations/0017_alter_contentitem_facilities.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.20 on 2023-10-05 12:28 + +import modelcluster.fields +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("common", "0007_alter_auditlog_organisation_and_more"), + ("content", "0016_auto_20231003_1602"), + ] + + operations = [ + migrations.AlterField( + model_name="contentitem", + name="facilities", + field=modelcluster.fields.ParentalManyToManyField( + blank=True, + help_text="Determines which facilities content is meant for.", + null=True, + to="common.Facility", + ), + ), + ] diff --git a/mycarehub/content/models/models.py b/mycarehub/content/models/models.py index 00762c2..ff5c9f4 100644 --- a/mycarehub/content/models/models.py +++ b/mycarehub/content/models/models.py @@ -198,7 +198,10 @@ class ItemTypes(models.TextChoices): ) facilities = ParentalManyToManyField( - Facility, help_text="Determines which facilities content is meant for." + Facility, + help_text="Determines which facilities content is meant for.", + blank=True, + null=True, ) date = models.DateField( diff --git a/mycarehub/content/models/sms.py b/mycarehub/content/models/sms.py index fa2bc00..0d57827 100644 --- a/mycarehub/content/models/sms.py +++ b/mycarehub/content/models/sms.py @@ -14,6 +14,7 @@ from wagtail.search import index from mycarehub.common.models import Organisation, Program +from mycarehub.content.models.snippets import CustomSnippetForm LOGGER = logging.getLogger(__name__) @@ -56,6 +57,7 @@ class SMSContentItemCategory(ClusterableModel): blank=True, related_name="%(app_label)s_%(class)s_related", ) + base_form_class = CustomSnippetForm def __str__(self): return f"{self.name}" @@ -96,6 +98,7 @@ class SMSContentItemTag(ClusterableModel): blank=True, related_name="%(app_label)s_%(class)s_related", ) + base_form_class = CustomSnippetForm def __str__(self): return f"{self.name}" diff --git a/mycarehub/content/signals.py b/mycarehub/content/signals.py index 2738edd..9a264a0 100644 --- a/mycarehub/content/signals.py +++ b/mycarehub/content/signals.py @@ -31,6 +31,9 @@ def create_program_content_index_page(sender, instance, created, **kwargs): if settings.DEFAULT_PROGRAM_ID == str(instance.id) and created: return + if created and ContentItemIndexPage.objects.filter(program=instance).exists(): + return + try: homepage = HomePage.objects.get(title="Mycarehub Home Page") except ObjectDoesNotExist: @@ -77,7 +80,7 @@ def create_program_content_index_page(sender, instance, created, **kwargs): @receiver(post_save, sender=ContentItemIndexPage) def create_program_content_editor_permissions(sender, instance, created, **kwargs): if created: - group = Group.objects.create(name=f"{instance.program.name} Editor") + group, _ = Group.objects.get_or_create(name=f"{instance.program.name} Editor") can_access_wagtail_admin = Permission.objects.get( content_type=ContentType.objects.get(app_label="wagtailadmin", model="admin"), @@ -116,7 +119,7 @@ def create_program_content_editor_permissions(sender, instance, created, **kwarg allowed_sms_content_item_tag_permissions = [ "add_smscontentitemtag", - "add_smscontentitemtag", + "change_smscontentitemtag", ] for permission in allowed_sms_content_item_tag_permissions: permission_object = Permission.objects.get( @@ -141,14 +144,14 @@ def create_program_content_editor_permissions(sender, instance, created, **kwarg allowed_page_permissions = ["add", "edit", "publish"] for permission in allowed_page_permissions: - GroupPagePermission.objects.create( + GroupPagePermission.objects.get_or_create( group=group, page=instance, permission_type=permission ) root_collection = Collection.get_first_root_node() allowed_image_permissions = ["add_image", "choose_image", "change_image", "delete_image"] for permission in allowed_image_permissions: - GroupCollectionPermission.objects.create( + GroupCollectionPermission.objects.get_or_create( group=group, collection=root_collection, permission=Permission.objects.get( @@ -164,7 +167,7 @@ def create_program_content_editor_permissions(sender, instance, created, **kwarg ] for permission in allowed_document_permissions: - GroupCollectionPermission.objects.create( + GroupCollectionPermission.objects.get_or_create( group=group, collection=root_collection, permission=Permission.objects.get( @@ -175,7 +178,7 @@ def create_program_content_editor_permissions(sender, instance, created, **kwarg allowed_media_permissions = ["add_media", "delete_media", "change_media"] for permission in allowed_media_permissions: - GroupCollectionPermission.objects.create( + GroupCollectionPermission.objects.get_or_create( group=group, collection=root_collection, permission=Permission.objects.get(