add mailer system
parent
d7409daa7a
commit
98c24dc926
@ -0,0 +1,43 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from .models import Message
|
||||||
|
|
||||||
|
|
||||||
|
class Button:
|
||||||
|
short_description = ""
|
||||||
|
view = ""
|
||||||
|
|
||||||
|
|
||||||
|
class ButtonableModelAdmin(admin.ModelAdmin):
|
||||||
|
buttons = []
|
||||||
|
|
||||||
|
def change_view(self, request, object_id, extra_context={}):
|
||||||
|
extra_context['buttons'] = self.buttons
|
||||||
|
if '/' in object_id:
|
||||||
|
object_id = object_id[:object_id.find('/')]
|
||||||
|
return super(
|
||||||
|
ButtonableModelAdmin,
|
||||||
|
self).change_view(
|
||||||
|
request,
|
||||||
|
object_id,
|
||||||
|
extra_context=extra_context)
|
||||||
|
|
||||||
|
|
||||||
|
class MessageAdmin(ButtonableModelAdmin):
|
||||||
|
"""Message creation view"""
|
||||||
|
list_display = ('subject', 'from_addr', 'to_group')
|
||||||
|
|
||||||
|
# can't find a good solution for this at the moment
|
||||||
|
# send_message = Button()
|
||||||
|
# send_message.short_description = _("Send")
|
||||||
|
# send_message.view = "mailer:index"
|
||||||
|
# buttons = [send_message]
|
||||||
|
actions = ['send_message']
|
||||||
|
|
||||||
|
def send_message(self, request, queryset):
|
||||||
|
for msg in queryset:
|
||||||
|
msg.submit()
|
||||||
|
self.message_user(request, _("Message sent"))
|
||||||
|
|
||||||
|
admin.site.register(Message, MessageAdmin)
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class MailerConfig(AppConfig):
|
||||||
|
name = 'mailer'
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
from django.db import models
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
class Message(models.Model):
|
||||||
|
"""Represents a message that can be sent to some members"""
|
||||||
|
from_addr = models.EmailField('email')
|
||||||
|
subject = models.CharField(_('subject'), max_length=50)
|
||||||
|
content = models.TextField(_('content'))
|
||||||
|
to_group = models.ForeignKey('members.Group', verbose_name=_('group'))
|
||||||
|
|
||||||
|
def submit(self):
|
||||||
|
print("Sending message")
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
{% extends "admin/change_form.html" %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block object-tools %}
|
||||||
|
{% if change %}{% if not is_popup %}
|
||||||
|
<ul class="object-tools">
|
||||||
|
{% for button in buttons %}
|
||||||
|
<li><a href={% url button.view %} class="historylink">{{ button.short_description }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
<li><a href="../history/" class="historylink">{% trans "History" %}</a></li>
|
||||||
|
{% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">View on site</a></li>{% endif%}
|
||||||
|
</ul>
|
||||||
|
{% endif %}{% endif %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
{% load i18n %}
|
||||||
|
{% trans "This is the mailer app!" %}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
from django.conf.urls import url
|
||||||
|
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
app_name = "mailer"
|
||||||
|
urlpatterns = [
|
||||||
|
url(r'^$', views.index, name='index')
|
||||||
|
]
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
|
def index(request):
|
||||||
|
return render(request, 'mailer/index.html')
|
||||||
Loading…
Reference in New Issue