Add links, views and urls. Rename main model to just 'Message'.

This commit is contained in:
Roberto Rosario
2016-03-13 21:05:49 -04:00
parent daa3ca2430
commit 083d6e6fc5
9 changed files with 190 additions and 16 deletions

View File

@@ -2,9 +2,9 @@ from __future__ import unicode_literals
from django.contrib import admin
from .models import MessageOfTheDay
from .models import Message
@admin.register(MessageOfTheDay)
class MessageOfTheDayAdmin(admin.ModelAdmin):
@admin.register(Message)
class MessageAdmin(admin.ModelAdmin):
list_display = ('label', 'enabled', 'start_datetime', 'end_datetime')

View File

@@ -9,14 +9,12 @@ 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
from common import MayanAppConfig, menu_object, menu_secondary, menu_tools
#from .links import (
# link_about, link_current_user_details, link_current_user_edit,
# link_current_user_locale_profile_details,
# link_current_user_locale_profile_edit, link_filters, link_license,
# link_packages_licenses, link_setup, link_tools
#)
from .links import (
link_message_create, link_message_delete, link_message_edit,
link_message_list
)
logger = logging.getLogger(__name__)
@@ -28,3 +26,18 @@ class MOTDApp(MayanAppConfig):
def ready(self):
super(MOTDApp, self).ready()
Message = self.get_model('Message')
menu_object.bind_links(
links=(
link_message_edit, link_message_delete
), sources=(Message,)
)
menu_secondary.bind_links(
links=(link_message_create,),
sources=(Message, 'motd:message_list', 'motd:message_create')
)
menu_tools.bind_links(
links=(link_message_list,)
)

27
mayan/apps/motd/links.py Normal file
View File

@@ -0,0 +1,27 @@
from __future__ import absolute_import, unicode_literals
from django.utils.translation import ugettext_lazy as _
from navigation import Link
from .permissions import (
permission_message_create, permission_message_delete, permission_message_edit,
permission_message_view
)
link_message_create = Link(
permissions=(permission_message_create,), text=_('Create message'),
view='motd:message_create'
)
link_message_delete = Link(
permissions=(permission_message_delete,), tags='dangerous',
text=_('Delete'), view='motd:message_delete', args='object.pk'
)
link_message_edit = Link(
permissions=(permission_message_edit,), text=_('Edit'),
view='motd:message_edit', args='object.pk'
)
link_message_list = Link(
icon='fa fa-bullhorn', text=_('Message of the day'),
view='motd:message_list'
)

View File

@@ -3,7 +3,7 @@ from django.db.models import Q
from django.utils import timezone
class MessageOfTheDayManager(models.Manager):
class MessageManager(models.Manager):
def get_for_now(self):
now = timezone.now()
return self.filter(enabled=True).filter(

View File

@@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('motd', '0003_auto_20160313_0349'),
]
operations = [
migrations.RenameModel(
old_name='MessageOfTheDay',
new_name='Message',
),
migrations.AlterModelOptions(
name='message',
options={'verbose_name': 'Message', 'verbose_name_plural': 'Messages'},
),
]

View File

@@ -5,11 +5,11 @@ from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from .managers import MessageOfTheDayManager
from .managers import MessageManager
@python_2_unicode_compatible
class MessageOfTheDay(models.Model):
class Message(models.Model):
label = models.CharField(max_length=32, verbose_name=_('Label'))
message = models.TextField(verbose_name=_('Message'))
enabled = models.BooleanField(default=True, verbose_name=_('Enabled'))
@@ -20,11 +20,11 @@ class MessageOfTheDay(models.Model):
blank=True, null=True, verbose_name=_('End date time')
)
objects = MessageOfTheDayManager()
objects = MessageManager()
class Meta:
verbose_name = _('Message of the day')
verbose_name_plural = _('Messages of the day')
verbose_name = _('Message')
verbose_name_plural = _('Messages')
def __str__(self):
return self.label

View File

@@ -0,0 +1,20 @@
from __future__ import absolute_import, unicode_literals
from django.utils.translation import ugettext_lazy as _
from permissions import PermissionNamespace
namespace = PermissionNamespace('motd', _('Message of the day'))
permission_message_create = namespace.add_permission(
name='message_create', label=_('Create messages')
)
permission_message_delete = namespace.add_permission(
name='message_delete', label=_('Delete messages')
)
permission_message_edit = namespace.add_permission(
name='message_edit', label=_('Edit messages')
)
permission_message_view = namespace.add_permission(
name='message_view', label=_('View messages')
)

18
mayan/apps/motd/urls.py Normal file
View File

@@ -0,0 +1,18 @@
from __future__ import unicode_literals
from django.conf.urls import patterns, url
from .views import (
MessageCreateView, MessageDeleteView, MessageEditView, MessageListView
)
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'),
url(
r'^(?P<pk>\d+)/delete/$', MessageDeleteView.as_view(),
name='message_delete'
),
)

74
mayan/apps/motd/views.py Normal file
View File

@@ -0,0 +1,74 @@
from __future__ import absolute_import, unicode_literals
import logging
from django.conf import settings
from django.contrib import messages
from django.core.exceptions import PermissionDenied
from django.core.urlresolvers import reverse, reverse_lazy
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
from django.utils.translation import ugettext_lazy as _, ungettext
from common.views import (
SingleObjectCreateView, SingleObjectDeleteView, SingleObjectEditView,
SingleObjectListView
)
from .models import MessageOfTheDay
from .permissions import (
permission_message_create, permission_message_delete, permission_message_edit,
permission_message_view,
)
logger = logging.getLogger(__name__)
class MessageCreateView(SingleObjectCreateView):
fields = ('label',)
model = Message
view_permission = permission_message_create
def get_extra_context(self):
return {
'object_name': _('Message'),
'title': _('Create message'),
}
class MessageDeleteView(SingleObjectDeleteView):
model = Message
object_permission = permission_message_delete
post_action_redirect = reverse_lazy('messages:message_list')
def get_extra_context(self):
return {
'object_name': _('Message'),
'object': self.get_object(),
'title': _('Delete the message: %s?') % self.get_object(),
}
class MessageEditView(SingleObjectEditView):
fields = ('label',)
model = Message
object_permission = permission_message_edit
post_action_redirect = reverse_lazy('messages:message_list')
def get_extra_context(self):
return {
'object': self.get_object(),
'object_name': _('Message'),
'title': _('Edit message: %s') % self.get_object(),
}
class MessageListView(SingleObjectListView):
model = Message
object_permission = permission_message_view
def get_extra_context(self):
return {
'hide_link': True,
'title': _('Messages'),