Merge pull request #54 from faulteh/lca2017
Remove description, add fields to proposal for notification template
This commit is contained in:
commit
3b2beedd4a
8 changed files with 39 additions and 10 deletions
|
@ -1,4 +1,4 @@
|
||||||
Django>=1.9.2
|
Django==1.9.2
|
||||||
django-appconf==1.0.1
|
django-appconf==1.0.1
|
||||||
django-model-utils==2.4.0
|
django-model-utils==2.4.0
|
||||||
django-reversion==1.10.1
|
django-reversion==1.10.1
|
||||||
|
|
|
@ -196,8 +196,9 @@ class ProposalBase(models.Model):
|
||||||
def notification_email_context(self):
|
def notification_email_context(self):
|
||||||
return {
|
return {
|
||||||
"title": self.title,
|
"title": self.title,
|
||||||
"speaker": self.speaker.name,
|
"main_speaker": self.speaker,
|
||||||
"speakers": ', '.join([x.name for x in self.speakers()]),
|
"speakers": ', '.join([x.name for x in self.speakers()]),
|
||||||
|
"additional_speakers": self.additional_speakers,
|
||||||
"kind": self.kind.name,
|
"kind": self.kind.name,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from symposion.reviews.models import NotificationTemplate, ProposalResult
|
from symposion.reviews.models import NotificationTemplate, ProposalResult, ResultNotification
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(
|
admin.site.register(
|
||||||
|
@ -16,3 +16,5 @@ admin.site.register(
|
||||||
ProposalResult,
|
ProposalResult,
|
||||||
list_display=['proposal', 'status', 'score', 'vote_count', 'accepted']
|
list_display=['proposal', 'status', 'score', 'vote_count', 'accepted']
|
||||||
)
|
)
|
||||||
|
|
||||||
|
admin.site.register(ResultNotification)
|
|
@ -349,6 +349,9 @@ class ResultNotification(models.Model):
|
||||||
for speaker in self.proposal.speakers():
|
for speaker in self.proposal.speakers():
|
||||||
yield speaker.email
|
yield speaker.email
|
||||||
|
|
||||||
|
def __unicode__(self):
|
||||||
|
return self.proposal.title + ' ' + self.timestamp.strftime('%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def email_args(self):
|
def email_args(self):
|
||||||
return (self.subject, self.body, self.from_address, self.recipients())
|
return (self.subject, self.body, self.from_address, self.recipients())
|
||||||
|
@ -361,7 +364,6 @@ def promote_proposal(proposal):
|
||||||
else:
|
else:
|
||||||
presentation = Presentation(
|
presentation = Presentation(
|
||||||
title=proposal.title,
|
title=proposal.title,
|
||||||
description=proposal.description,
|
|
||||||
abstract=proposal.abstract,
|
abstract=proposal.abstract,
|
||||||
speaker=proposal.speaker,
|
speaker=proposal.speaker,
|
||||||
section=proposal.section,
|
section=proposal.section,
|
||||||
|
|
|
@ -645,10 +645,15 @@ def result_notification_send(request, section_slug, status):
|
||||||
rn.template = notification_template
|
rn.template = notification_template
|
||||||
rn.to_address = proposal.speaker_email
|
rn.to_address = proposal.speaker_email
|
||||||
rn.from_address = request.POST["from_address"]
|
rn.from_address = request.POST["from_address"]
|
||||||
rn.subject = request.POST["subject"]
|
proposal_context = proposal.notification_email_context()
|
||||||
|
rn.subject = Template(request.POST["subject"]).render(
|
||||||
|
Context({
|
||||||
|
"proposal": proposal_context
|
||||||
|
})
|
||||||
|
)
|
||||||
rn.body = Template(request.POST["body"]).render(
|
rn.body = Template(request.POST["body"]).render(
|
||||||
Context({
|
Context({
|
||||||
"proposal": proposal.notification_email_context()
|
"proposal": proposal_context
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
rn.save()
|
rn.save()
|
||||||
|
|
23
symposion/schedule/migrations/0002_auto_20160903_0146.py
Normal file
23
symposion/schedule/migrations/0002_auto_20160903_0146.py
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.9.2 on 2016-09-03 01:46
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('symposion_schedule', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='presentation',
|
||||||
|
name='description',
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='presentation',
|
||||||
|
name='description_html',
|
||||||
|
),
|
||||||
|
]
|
|
@ -185,8 +185,6 @@ class Presentation(models.Model):
|
||||||
|
|
||||||
slot = models.OneToOneField(Slot, null=True, blank=True, related_name="content_ptr", verbose_name=_("Slot"))
|
slot = models.OneToOneField(Slot, null=True, blank=True, related_name="content_ptr", verbose_name=_("Slot"))
|
||||||
title = models.CharField(max_length=100, verbose_name=_("Title"))
|
title = models.CharField(max_length=100, verbose_name=_("Title"))
|
||||||
description = models.TextField(verbose_name=_("Description"))
|
|
||||||
description_html = models.TextField(blank=True)
|
|
||||||
abstract = models.TextField(verbose_name=_("Abstract"))
|
abstract = models.TextField(verbose_name=_("Abstract"))
|
||||||
abstract_html = models.TextField(blank=True)
|
abstract_html = models.TextField(blank=True)
|
||||||
speaker = models.ForeignKey(Speaker, related_name="presentations", verbose_name=_("Speaker"))
|
speaker = models.ForeignKey(Speaker, related_name="presentations", verbose_name=_("Speaker"))
|
||||||
|
@ -197,7 +195,6 @@ class Presentation(models.Model):
|
||||||
section = models.ForeignKey(Section, related_name="presentations", verbose_name=_("Section"))
|
section = models.ForeignKey(Section, related_name="presentations", verbose_name=_("Section"))
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
self.description_html = parse(self.description)
|
|
||||||
self.abstract_html = parse(self.abstract)
|
self.abstract_html = parse(self.abstract)
|
||||||
return super(Presentation, self).save(*args, **kwargs)
|
return super(Presentation, self).save(*args, **kwargs)
|
||||||
|
|
||||||
|
|
|
@ -225,7 +225,6 @@ def schedule_json(request):
|
||||||
s.email for s in slot.content.speakers()
|
s.email for s in slot.content.speakers()
|
||||||
] if request.user.is_staff else ["redacted"],
|
] if request.user.is_staff else ["redacted"],
|
||||||
"abstract": slot.content.abstract.raw,
|
"abstract": slot.content.abstract.raw,
|
||||||
"description": slot.content.description.raw,
|
|
||||||
"conf_url": "%s://%s%s" % (
|
"conf_url": "%s://%s%s" % (
|
||||||
protocol,
|
protocol,
|
||||||
Site.objects.get_current().domain,
|
Site.objects.get_current().domain,
|
||||||
|
|
Loading…
Reference in a new issue