diff --git a/coopstarter_data/models.py b/coopstarter_data/models.py index 88ffd21a80aae30294d6069daa0f4c0900b6a159..f0ded6ada43cf0bf9da6155e3510a1eb536980b6 100644 --- a/coopstarter_data/models.py +++ b/coopstarter_data/models.py @@ -10,6 +10,7 @@ from djangoldp_like.models import Like from django.utils import timezone from django.template import loader from djangoldp_i18n.views import I18nLDPViewSet +from django.utils.translation import ugettext_lazy as _ class LearningOutcome (Model) : name = models.CharField(max_length=256, verbose_name="Learning outcome", null=True, blank=True) @@ -259,12 +260,12 @@ class Resource (Model): owner_perms = ['inherit', 'change', 'control', 'delete'] nested_fields=["submitter",\ "format", "conversations", "steps", "languages", "fields",\ - "type", "related", "likes", "review", "country", "skills"] + "type", "related", "likes", "review", "country", "skills", "brokenlinks"] serializer_fields=["@id", "name", "description", "resource_author", "uri", "publication_year", "submitter",\ "format", "target", "skills",\ "conversations", "steps", "languages", "fields", "country",\ "type", "submitter", "related", "likes", "review", "sharing",\ - "preview_image", "iframe_link"] + "preview_image", "iframe_link", "brokenlinks"] container_path = 'resources/' rdf_type = 'coopstarter:resource' anonymous_perms = ['view'] @@ -311,9 +312,9 @@ class Request (Model): return str(self.name) class BrokenLink(Model): - submitter = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, related_name="brokenlink_submitter", + submitter = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, related_name="brokenlinks", null=True, blank=True) - resource = models.ForeignKey(Resource, null=True, on_delete=models.SET_NULL, related_name="brokenlink_resource") + resource = models.ForeignKey(Resource, null=True, on_delete=models.SET_NULL, related_name="brokenlinks") class Meta: auto_author = 'submitter' @@ -360,7 +361,7 @@ def create_review(sender, instance, created, **kwargs): ) send_mail( - 'The resource you reviewed has been modified', + _('The resource you reviewed has been modified'), message_text, '"Knowledge Base" <kb@starter.coop>', [review.reviewer.email], @@ -376,7 +377,7 @@ def update_review(sender, instance, created, **kwargs): if getattr(settings, 'UPDATE_REVIEW', True) and instance.resource is not None: resource = instance.resource if instance.status == 'validated': - subject = 'The resource you submitted has been validated !' + subject = _('The resource you submitted has been validated !') message = loader.render_to_string( 'emails/txt/resource_validation_notification.txt', { @@ -392,7 +393,7 @@ def update_review(sender, instance, created, **kwargs): } ) elif instance.status == 'to_improve': - subject = 'The resource you submitted requires some improvements' + subject = _('The resource you submitted requires some improvements') message = loader.render_to_string( 'emails/txt/resource_improvement_notification.txt', { @@ -408,7 +409,7 @@ def update_review(sender, instance, created, **kwargs): } ) elif instance.status == 'inappropriate': - subject = 'The resource you submitted is considered inappropriate' + subject = _('The resource you submitted is considered inappropriate') message = loader.render_to_string( 'emails/txt/resource_refusal_notification.txt', { @@ -435,7 +436,7 @@ def update_review(sender, instance, created, **kwargs): @receiver(post_save, sender=BrokenLink) -def sendMailToResourceSubmitter(sender, instance, created, **kwargs): +def send_mail_to_resource_submitter(sender, instance, created, **kwargs): if created: message_text = loader.render_to_string( 'emails/txt/report_broken_link.txt', @@ -452,13 +453,38 @@ def sendMailToResourceSubmitter(sender, instance, created, **kwargs): ) send_mail( - 'The resource you submitted has a brokenlink', + _('The resource you submitted has a brokenlink'), message_text, '"Knowledge Base" <kb@starter.coop>', [instance.resource.submitter.email], html_message=message_html ) +@receiver(post_save, sender=Request) +def send_mail_to_request_submitter(sender, instance, created, **kwargs): + if not created and instance.status == 'validated': + message_text = loader.render_to_string( + 'emails/txt/request_managed.txt', + { + 'request': instance, + } + ) + + message_html = loader.render_to_string( + 'emails/html/request_managed.html', + { + 'request': instance, + } + ) + + send_mail( + _('The request for a resource you submitted has been managed'), + message_text, + '"Knowledge Base" <kb@starter.coop>', + [instance.submitter.email], + html_message=message_html + ) + @receiver(post_save, sender=Contributor) def create_contributor_profile(sender, instance, created, **kwargs): if kwargs.get('raw', False): @@ -483,7 +509,7 @@ def create_contributor_profile(sender, instance, created, **kwargs): } ) send_mail( - 'New user account registration', + _('New contributor profile completed'), message_text, '"Knowledge Base" <kb@starter.coop>', [user.email], @@ -514,7 +540,7 @@ def create_user(sender, instance, created, **kwargs): } ) send_mail( - 'New user account registration', + _('New user account registration'), message_text, '"Knowledge Base" <kb@starter.coop>', [user.email], diff --git a/coopstarter_data/templates/emails/html/request_managed.html b/coopstarter_data/templates/emails/html/request_managed.html new file mode 100644 index 0000000000000000000000000000000000000000..83d33b9eec6112f35eec101851112dd76efabbde --- /dev/null +++ b/coopstarter_data/templates/emails/html/request_managed.html @@ -0,0 +1,28 @@ +{% load staticfiles %} +{% load i18n %} +<h2 class="title_lead"> + {% trans "Notification from your collaborative Coopedia Knowledge Base" %} +</h2> + +<p> + {% trans "Hello" %} {{request.submitter.name}} +</p> + +<p> + {{request.reviewer.name|safe}} ({{request.reviewer.email}}) {% trans "has dealt with the request for resource you posted:" %} + <ul> + <li> + {% trans "Title:" %} {{request.name}} + </li> + <li> + {% trans "Description:" %} {{request.description}} + </li> + </ul> +</p> + +<footer style="margin-top:10px;font-size:small;color:#777"> + {% blocktrans %} + Have a nice day,<br> + The Coopedia Knowledge Base Team. + {% endblocktrans %} +</footer> \ No newline at end of file diff --git a/coopstarter_data/templates/emails/txt/report_broken_link.txt b/coopstarter_data/templates/emails/txt/report_broken_link.txt index b2f0dd3d1d14360947198d01618e62741c111d15..774ec7fb3e6b7fada17f000505fe90f20e9fc2aa 100644 --- a/coopstarter_data/templates/emails/txt/report_broken_link.txt +++ b/coopstarter_data/templates/emails/txt/report_broken_link.txt @@ -1,13 +1,13 @@ {% load i18n %} -{% trans "Hello %} {{brokenlink.resource.submitter.name}} +{% trans "Hello" %} {{brokenlink.resource.submitter.name}} -{{brokenlink.submitter.name|safe}} ({{brokenlink.submitter.email}}) {% trans "is reporting you that the following resource you submit has a broken link : %} +{{brokenlink.submitter.name|safe}} ({{brokenlink.submitter.email}}) {% trans "is reporting you that the following resource you submit has a broken link:" %} -{% trans "Title: %} {{brokenlink.resource.name}} +{% trans "Title:" %} {{brokenlink.resource.name}} -{% trans "Description: %} {{brokenlink.resource.description}} +{% trans "Description:" %} {{brokenlink.resource.description}} -{% trans "URI: %} {{brokenlink.resource.uri}} +{% trans "URI:" %} {{brokenlink.resource.uri}} {% blocktrans %} Have a nice day, diff --git a/coopstarter_data/templates/emails/txt/request_managed.txt b/coopstarter_data/templates/emails/txt/request_managed.txt new file mode 100644 index 0000000000000000000000000000000000000000..9ce544dd08b69f2b5edafcf76dfd4db7b571d0f0 --- /dev/null +++ b/coopstarter_data/templates/emails/txt/request_managed.txt @@ -0,0 +1,14 @@ +{% load i18n %} +{% trans "Hello" %} {{request.submitter.name}} + +{{request.reviewer.name|safe}} ({{request.reviewer.email}}) {% trans "has dealt with the request for resource you posted:" %} + +{% trans "Title:" %} {{request.name}} + +{% trans "Description:" %} {{request.description}} + +{% blocktrans %} +Have a nice day, + +The Coopedia Knowledge Base Team. +{% endblocktrans %} \ No newline at end of file diff --git a/coopstarter_data/tests/models.py b/coopstarter_data/tests/models.py index 0f0400b1817724563f8a447476410a4c14231ce5..9da6ce0fdfe0df948f95c61d36bce80fbb3086cf 100644 --- a/coopstarter_data/tests/models.py +++ b/coopstarter_data/tests/models.py @@ -1,13 +1,11 @@ from django.contrib.auth.models import AbstractUser - from djangoldp.models import Model - class User(AbstractUser, Model): class Meta(AbstractUser.Meta, Model.Meta): serializer_fields = ['@id', 'username', 'first_name', 'last_name', 'email', 'resources'] - nested_fields = ['resources'] + nested_fields = ['resources', 'account', 'searcher_profile', 'contributor_profile', 'chatProfile'] anonymous_perms = ['view', 'add'] authenticated_perms = ['inherit', 'change'] owner_perms = ['inherit'] diff --git a/coopstarter_data/tests/runner.py b/coopstarter_data/tests/runner.py index 5b98333f1f3540092d8fe38f80b044773eefc735..dfbe52ea78c12a8ae836efb0781dd279ec5be3da 100644 --- a/coopstarter_data/tests/runner.py +++ b/coopstarter_data/tests/runner.py @@ -1,38 +1,38 @@ import sys +import yaml import django -from django.conf import settings -from djangoldp.tests import settings_default +from django.conf import settings as django_settings +from djangoldp.conf.ldpsettings import LDPSettings +from djangoldp.tests.settings_default import yaml_config -settings.configure(default_settings=settings_default, - DJANGOLDP_PACKAGES=['djangoldp_conversation', 'djangoldp_like', 'coopstarter_data', - 'coopstarter_data.tests', ], - INSTALLED_APPS=('django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.admin', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'guardian', - 'djangoldp_conversation', - 'djangoldp_like', - 'coopstarter_data', - 'coopstarter_data.tests', - 'djangoldp', - ), - SITE_URL='http://happy-dev.fr', - BASE_URL='http://happy-dev.fr', - REST_FRAMEWORK = { - 'DEFAULT_PAGINATION_CLASS': 'djangoldp.pagination.LDPPagination', - 'PAGE_SIZE': 5 - }, - SEND_BACKLINKS=False, - JABBER_DEFAULT_HOST=None, - PERMISSIONS_CACHE=False, - ANONYMOUS_USER_NAME=None, - SERIALIZER_CACHE=False, - UPDATE_REVIEW=False - ) +# override config loading +config = { + # add the packages to the reference list + 'ldppackages': ['djangoldp_account', 'djangoldp_conversation', 'djangoldp_like', 'coopstarter_data', 'coopstarter_data.tests'], + + # required values for server + 'server': { + 'AUTH_USER_MODEL': 'tests.User', + 'REST_FRAMEWORK': { + 'DEFAULT_PAGINATION_CLASS': 'djangoldp.pagination.LDPPagination', + 'PAGE_SIZE': 5 + }, + # map the config of the core settings (avoid asserts to fail) + 'SITE_URL': 'http://happy-dev.fr', + 'BASE_URL': 'http://happy-dev.fr', + 'SEND_BACKLINKS': False, + 'JABBER_DEFAULT_HOST': None, + 'PERMISSIONS_CACHE': False, + 'ANONYMOUS_USER_NAME': None, + 'SERIALIZER_CACHE': False, + 'UPDATE_REVIEW': False + } +} +ldpsettings = LDPSettings(config) +ldpsettings.config = yaml.safe_load(yaml_config) + +django_settings.configure(ldpsettings) django.setup() from django.test.runner import DiscoverRunner diff --git a/setup.cfg b/setup.cfg index c9cbeafca1fa1693907d594636aaa5508856b51f..9dc3d1dcaa68f6cb7704d75e91e60e7af4eeafaa 100644 --- a/setup.cfg +++ b/setup.cfg @@ -16,6 +16,9 @@ packages = find: install_requires = djangoldp>=2.0.0 djangoldp_conversation>=2.0.0 + djangoldp_account>=2.0.0 + djangoldp_like>=0.0.0 + djangoldp_i18n>=2.0.0 [options.extras_require] dev =