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