from teleforma.exam.admin import *
from teleforma.templatetags.teleforma_tags import to_recipients
from django.contrib import admin
-from django.contrib.auth.models import User
+from django.contrib.auth.models import User, Group
from django.contrib.auth.admin import UserAdmin
from django.contrib.admin import SimpleListFilter
from django.utils.translation import ugettext_lazy as _
from django.http import HttpResponse
from django.core import serializers
-
+from django.contrib.admin.helpers import ActionForm
+from django import forms
class PeriodListFilter(SimpleListFilter):
extra = 1
+class StudentGroupForm(ActionForm):
+ group_name = forms.CharField()
+
class StudentAdmin(admin.ModelAdmin):
model = Student
list_display = ['student_name', 'get_trainings', 'platform_only',
'total_payments', 'total_fees', 'balance']
actions = ['export_xls', 'write_message']
+ action_form = StudentGroupForm
def get_trainings(self, instance):
return ' - '.join([unicode(training) for training in instance.trainings.all()])
return redirect('postman_write', to_recipients(users))
write_message.short_description = "Envoyer un message"
+ def add_to_new_group(self, request, queryset):
+ group_name = request.POST['group_name']
+ users = [student.user for student in queryset]
+ group, c = TeleFormaGroup.objects.get_or_create(name=group_name)
+ for user in users:
+ group.users.add(user)
+ self.message_user(request, ("Successfully added group : %s") % (group_name,), messages.SUCCESS)
+
class ProfessorProfileInline(admin.StackedInline):
model = Professor
filter_horizontal = ['courses']
admin.site.register(LiveStream)
admin.site.register(Student, StudentAdmin)
admin.site.register(Professor, ProfessorAdmin)
+admin.site.register(TeleFormaGroup)
+admin.site.register(GroupedMessage)
from crfpa import *
#from pro import *
from ae import *
+from messages import *
--- /dev/null
+
+from teleforma.models import *
+from django.contrib.auth.models import User
+from postman.utils import email_visitor, notify_user
+from postman.models import Message
+
+
+class TeleFormaGroup(models.Model):
+ """(Group description)"""
+
+ name = models.CharField(_('name'), max_length=255)
+ users = models.ManyToManyField(User, related_name="teleforma_groups", verbose_name=_('users'),
+ blank=True, null=True)
+
+ class Meta(MetaCore):
+ db_table = app_label + '_' + 'groups'
+
+ def __unicode__(self):
+ return _("Group")
+
+
+class GroupedMessage(models.Model):
+ """(GroupedMessage description)"""
+
+ group = models.ForeignKey('TeleFormaGroup', related_name='grouped_messages',
+ verbose_name=_('group'),
+ blank=True, null=True, on_delete=models.SET_NULL)
+ sender = = models.ForeignKey('User', related_name='grouped_messages',
+ verbose_name=_('sender'),
+ blank=True, null=True, on_delete=models.SET_NULL)
+ subject = models.CharField(_('subject'), max_length=119)
+ message = models.TextField(_('message'))
+ to_send = models.BooleanField(default=False)
+ sent = models.BooleanField(default=False)
+ date_sent = models.DateTimeField(_('date sent'), null=True)
+
+ class Meta(MetaCore):
+ db_table = app_label + '_' + 'grouped_messages'
+
+ def __unicode__(self):
+ return _("GroupedMessage")
+
+ def save(self, *args, **kwargs):
+ if self.to_sent:
+ self.send()
+ self.sent = True
+ self.date_sent = datetime.datetime.now()
+ super(GroupedMessage, self).save(*args, **kwargs)
+
+ def send(self):
+ site = Site.objects.all()[0]
+ for user in self.group:
+ mess = Message(sender=self.sender, recipient=user, subject=self.subject[:119], body=self.message)
+ mess.moderation_status = 'a'
+ mess.save()
+ notify_user(mess, 'acceptance', site)
def dispatch(self, *args, **kwargs):
return super(HelpView, self).dispatch(*args, **kwargs)
+""""""