Add links, views and urls. Rename main model to just 'Message'.
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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
27
mayan/apps/motd/links.py
Normal 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'
|
||||
)
|
||||
@@ -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(
|
||||
|
||||
22
mayan/apps/motd/migrations/0004_auto_20160314_0040.py
Normal file
22
mayan/apps/motd/migrations/0004_auto_20160314_0040.py
Normal 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'},
|
||||
),
|
||||
]
|
||||
@@ -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
|
||||
|
||||
20
mayan/apps/motd/permissions.py
Normal file
20
mayan/apps/motd/permissions.py
Normal 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
18
mayan/apps/motd/urls.py
Normal 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
74
mayan/apps/motd/views.py
Normal 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'),
|
||||
Reference in New Issue
Block a user