Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
django-panik-newsletter
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
radiopanik
django-panik-newsletter
Commits
819e5bf2
Commit
819e5bf2
authored
Nov 03, 2013
by
fred
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
allow sending newsletter
parent
69fae094
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
51 additions
and
5 deletions
+51
-5
newsletter/models.py
newsletter/models.py
+35
-0
newsletter/templates/newsletter/newsletter_detail.html
newsletter/templates/newsletter/newsletter_detail.html
+2
-2
newsletter/urls.py
newsletter/urls.py
+1
-0
newsletter/views.py
newsletter/views.py
+13
-3
No files found.
newsletter/models.py
View file @
819e5bf2
# -*- coding: utf8 -*-
import
datetime
import
hashlib
import
random
import
smtplib
import
subprocess
from
email.mime.multipart
import
MIMEMultipart
from
email.mime.text
import
MIMEText
import
html2text
from
django.db
import
models
from
django.template
import
loader
,
Context
...
...
@@ -61,3 +68,31 @@ class Newsletter(models.Model):
text
=
RichTextField
(
_
(
'Text'
),
null
=
True
,
blank
=
True
)
expedition_datetime
=
models
.
DateTimeField
(
_
(
'Expedition Date/time'
),
null
=
True
,
blank
=
True
)
def
send
(
self
):
msg
=
MIMEMultipart
(
'alternative'
)
msg
[
'Subject'
]
=
self
.
subject
msg
[
'From'
]
=
settings
.
NEWSLETTER_SENDER
if
settings
.
DEBUG
:
msg
[
'To'
]
=
'fred@localhost'
else
:
msg
[
'To'
]
=
'%s@%s'
%
(
settings
.
NEWSLETTER_NAME
,
settings
.
NEWSLETTER_DOMAIN
)
h2t
=
html2text
.
HTML2Text
()
h2t
.
unicode_snob
=
True
html
=
self
.
text
.
encode
(
'utf-8'
)
if
settings
.
NEWSLETTER_STYLE
:
html
+=
'''
\n
<style type="text/css">
\n
%s
\n
</style>'''
%
settings
.
NEWSLETTER_STYLE
part1
=
MIMEText
(
h2t
.
handle
(
self
.
text
).
encode
(
'utf-8'
),
'plain'
,
_charset
=
'utf-8'
)
part2
=
MIMEText
(
html
,
'html'
,
_charset
=
'utf-8'
)
msg
.
attach
(
part1
)
msg
.
attach
(
part2
)
s
=
smtplib
.
SMTP
(
'localhost'
)
s
.
sendmail
(
msg
[
'From'
],
msg
[
'To'
],
msg
.
as_string
())
s
.
quit
()
self
.
expedition_datetime
=
datetime
.
datetime
.
now
()
self
.
save
()
newsletter/templates/newsletter/newsletter_detail.html
View file @
819e5bf2
{% extends "base.html" %}
{% block appbar %}
<h2>
{{ object.date }}
</h2>
<h2>
{{ object.date }}
- {{ object.subject }}
</h2>
{% endblock %}
{% block content %}
...
...
@@ -9,7 +9,7 @@
{% if perms.newsletter.add_newsletter %}
<p>
<a
class=
"big-friendly-button"
href=
"{% url 'newsletter-edit' pk=object.id %}"
>
Modifier
</a>
<a
class=
"big-friendly-button"
href=
"
#
"
>
Envoyer
</a>
<a
class=
"big-friendly-button"
href=
"
{% url 'newsletter-send' pk=object.id %}
"
>
Envoyer
</a>
</p>
{% endif %}
...
...
newsletter/urls.py
View file @
819e5bf2
...
...
@@ -15,4 +15,5 @@ management_patterns = patterns('newsletter.views',
url
(
r
'^add$'
,
'newsletter_create'
,
name
=
'newsletter-create'
),
url
(
r
'^(?P<pk>\d+)/$'
,
'newsletter_view'
,
name
=
'newsletter-view'
),
url
(
r
'^(?P<pk>\d+)/edit$'
,
'newsletter_update'
,
name
=
'newsletter-edit'
),
url
(
r
'^(?P<pk>\d+)/send$'
,
'newsletter_send'
,
name
=
'newsletter-send'
),
)
newsletter/views.py
View file @
819e5bf2
# -*- coding: utf8 -*-
import
email
import
hashlib
import
random
import
socket
...
...
@@ -8,8 +9,6 @@ import urllib2
import
cookielib
import
datetime
from
smtplib
import
SMTPException
from
django.conf
import
settings
from
django.core.exceptions
import
PermissionDenied
from
django.core.urlresolvers
import
reverse_lazy
...
...
@@ -17,7 +16,7 @@ from django.db import models, IntegrityError
from
django.shortcuts
import
get_object_or_404
from
django.utils.translation
import
ugettext
as
_
from
django.views.generic.base
import
TemplateView
from
django.views.generic.base
import
TemplateView
,
RedirectView
from
django.views.generic.detail
import
DetailView
from
django.views.generic.list
import
ListView
from
django.views.generic.edit
import
CreateView
,
UpdateView
...
...
@@ -131,6 +130,17 @@ class NewsletterUpdateView(UpdateView):
newsletter_update
=
NewsletterUpdateView
.
as_view
()
class
NewsletterSendView
(
RedirectView
):
def
get_redirect_url
(
self
,
pk
):
if
not
self
.
request
.
user
.
has_perm
(
'newsletter.add_newsletter'
):
raise
PermissionDenied
()
newsletter
=
get_object_or_404
(
Newsletter
,
pk
=
pk
)
newsletter
.
send
()
return
reverse_lazy
(
'newsletter-list'
)
newsletter_send
=
NewsletterSendView
.
as_view
()
@
csrf_exempt
@
to_json
(
'api'
)
def
stats
(
request
)
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment