Complete changes needed to add the Message of the Day app. Closes GitLab issue #222.

This commit is contained in:
Roberto Rosario
2016-03-14 01:53:15 -04:00
parent 71946491b3
commit 3fa9092d57
7 changed files with 49 additions and 23 deletions

View File

@@ -18,6 +18,7 @@
- Fixed date locale handling in document properties, checkout and user detail views.
- Add new permission: checkout details view.
- Add HTML5 upload widget. Issue #162.
- Add Message of the Day app. Issue #222
2.0.2 (2016-02-09)
==================

View File

@@ -9,7 +9,8 @@ from django.contrib.auth.signals import user_logged_in
from django.db.models.signals import post_save
from django.utils.translation import ugettext_lazy as _
from common import MayanAppConfig, menu_object, menu_secondary, menu_tools
from common import MayanAppConfig, menu_object, menu_secondary, menu_setup
from navigation import SourceColumn
from .links import (
link_message_create, link_message_delete, link_message_edit,
@@ -29,6 +30,18 @@ class MOTDApp(MayanAppConfig):
Message = self.get_model('Message')
SourceColumn(
source=Message, label=_('Enabled'), attribute='enabled'
)
SourceColumn(
source=Message, label=_('Start date time'),
func=lambda context: context['object'].start_datetime or _('None')
)
SourceColumn(
source=Message, label=_('End date time'),
func=lambda context: context['object'].end_datetime or _('None')
)
menu_object.bind_links(
links=(
link_message_edit, link_message_delete
@@ -38,6 +51,6 @@ class MOTDApp(MayanAppConfig):
links=(link_message_create,),
sources=(Message, 'motd:message_list', 'motd:message_create')
)
menu_tools.bind_links(
menu_setup.bind_links(
links=(link_message_list,)
)

View File

@@ -10,14 +10,24 @@ from .managers import MessageManager
@python_2_unicode_compatible
class Message(models.Model):
label = models.CharField(max_length=32, verbose_name=_('Label'))
message = models.TextField(verbose_name=_('Message'))
label = models.CharField(
max_length=32, help_text=_('Short description of this message.'),
verbose_name=_('Label')
)
message = models.TextField(
help_text=_('The actual message to be displayed.'),
verbose_name=_('Message')
)
enabled = models.BooleanField(default=True, verbose_name=_('Enabled'))
start_datetime = models.DateTimeField(
blank=True, null=True, verbose_name=_('Start date time')
blank=True, help_text=_(
'Date and time after which this message will be displayed.'
), null=True, verbose_name=_('Start date time')
)
end_datetime = models.DateTimeField(
blank=True, null=True, verbose_name=_('End date time')
blank=True, help_text=_(
'Date and time until when this message is to be displayed.'
), null=True, verbose_name=_('End date time')
)
objects = MessageManager()

View File

@@ -2,11 +2,11 @@ from __future__ import unicode_literals
from django.template import Library
from ..models import MessageOfTheDay
from ..models import Message
register = Library()
@register.inclusion_tag('motd/messages.html')
def motd():
return {'messages': MessageOfTheDay.objects.get_for_now()}
return {'messages': Message.objects.get_for_now()}

View File

@@ -5,7 +5,7 @@ from datetime import timedelta
from django.test import TestCase
from django.utils import timezone
from ..models import MessageOfTheDay
from ..models import Message
TEST_LABEL = 'test label'
TEST_MESSAGE = 'test message'
@@ -13,12 +13,12 @@ TEST_MESSAGE = 'test message'
class MOTDTestCase(TestCase):
def setUp(self):
self.motd = MessageOfTheDay.objects.create(
self.motd = Message.objects.create(
label=TEST_LABEL, message=TEST_MESSAGE
)
def test_basic(self):
queryset = MessageOfTheDay.objects.get_for_now()
queryset = Message.objects.get_for_now()
self.assertEqual(queryset.exists(), True)
@@ -26,7 +26,7 @@ class MOTDTestCase(TestCase):
self.motd.start_datetime = timezone.now() - timedelta(days=1)
self.motd.save()
queryset = MessageOfTheDay.objects.get_for_now()
queryset = Message.objects.get_for_now()
self.assertEqual(queryset.first(), self.motd)
@@ -35,7 +35,7 @@ class MOTDTestCase(TestCase):
self.motd.end_datetime = timezone.now() - timedelta(days=1)
self.motd.save()
queryset = MessageOfTheDay.objects.get_for_now()
queryset = Message.objects.get_for_now()
self.assertEqual(queryset.exists(), False)
@@ -43,6 +43,6 @@ class MOTDTestCase(TestCase):
self.motd.enabled=False
self.motd.save()
queryset = MessageOfTheDay.objects.get_for_now()
queryset = Message.objects.get_for_now()
self.assertEqual(queryset.exists(), False)

View File

@@ -7,7 +7,7 @@ from .views import (
)
urlpatterns = patterns(
'motd.views',
'',
url(r'^list/$', MessageListView.as_view(), name='message_list'),
url(r'^create/$', MessageCreateView.as_view(), name='message_create'),
url(r'^(?P<pk>\d+)/edit/$', MessageEditView.as_view(), name='message_edit'),

View File

@@ -16,17 +16,17 @@ from common.views import (
SingleObjectListView
)
from .models import MessageOfTheDay
from .models import Message
from .permissions import (
permission_message_create, permission_message_delete, permission_message_edit,
permission_message_view,
permission_message_create, permission_message_delete,
permission_message_edit, permission_message_view,
)
logger = logging.getLogger(__name__)
class MessageCreateView(SingleObjectCreateView):
fields = ('label',)
fields = ('label', 'message', 'enabled', 'start_datetime', 'end_datetime')
model = Message
view_permission = permission_message_create
@@ -40,21 +40,22 @@ class MessageCreateView(SingleObjectCreateView):
class MessageDeleteView(SingleObjectDeleteView):
model = Message
object_permission = permission_message_delete
post_action_redirect = reverse_lazy('messages:message_list')
post_action_redirect = reverse_lazy('motd:message_list')
def get_extra_context(self):
return {
'object_name': _('Message'),
'message': None,
'object': self.get_object(),
'object_name': _('Message'),
'title': _('Delete the message: %s?') % self.get_object(),
}
class MessageEditView(SingleObjectEditView):
fields = ('label',)
fields = ('label', 'message', 'enabled', 'start_datetime', 'end_datetime')
model = Message
object_permission = permission_message_edit
post_action_redirect = reverse_lazy('messages:message_list')
post_action_redirect = reverse_lazy('motd:message_list')
def get_extra_context(self):
return {
@@ -72,3 +73,4 @@ class MessageListView(SingleObjectListView):
return {
'hide_link': True,
'title': _('Messages'),
}