app/soc/views/models/org_app.py
changeset 1553 451c804c6aab
parent 1537 fb89938aa078
child 1559 283046e54c01
equal deleted inserted replaced
1552:765e31c1669c 1553:451c804c6aab
    20 __authors__ = [
    20 __authors__ = [
    21     '"Lennard de Rijk" <ljvderijk@gmail.com>',
    21     '"Lennard de Rijk" <ljvderijk@gmail.com>',
    22   ]
    22   ]
    23 
    23 
    24 
    24 
       
    25 import os
       
    26 
    25 from django import forms
    27 from django import forms
    26 from django.utils import simplejson
    28 from django.utils import simplejson
    27 
    29 
       
    30 from soc.logic import accounts
    28 from soc.logic import cleaning
    31 from soc.logic import cleaning
    29 from soc.logic import dicts
    32 from soc.logic import dicts
       
    33 from soc.logic import mail_dispatcher
    30 from soc.logic import models as model_logic
    34 from soc.logic import models as model_logic
    31 from soc.logic.models import program as program_logic
    35 from soc.logic.models import program as program_logic
    32 from soc.logic.models import org_app as org_app_logic
    36 from soc.logic.models import org_app as org_app_logic
    33 from soc.views.helper import access
    37 from soc.views.helper import access
    34 from soc.views.helper import decorators
    38 from soc.views.helper import decorators
   122     new_params['url_name'] = "org_app"
   126     new_params['url_name'] = "org_app"
   123     new_params['group_name'] = "Organization"
   127     new_params['group_name'] = "Organization"
   124     new_params['group_url_name'] = 'org'
   128     new_params['group_url_name'] = 'org'
   125 
   129 
   126     new_params['review_template'] = 'soc/org_app/review.html'
   130     new_params['review_template'] = 'soc/org_app/review.html'
       
   131     new_params['accepted_mail_template'] = 'soc/org_app/mail/accepted.html'
       
   132     new_params['rejected_mail_template'] = 'soc/org_app/mail/rejected.html'
   127 
   133 
   128     params = dicts.merge(params, new_params)
   134     params = dicts.merge(params, new_params)
   129 
   135 
   130     super(View, self).__init__(params=params)
   136     super(View, self).__init__(params=params)
   131 
   137 
   166     content = entity.org_admin_agreement.content
   172     content = entity.org_admin_agreement.content
   167 
   173 
   168     form.fields['admin_agreement'].widget.text = content
   174     form.fields['admin_agreement'].widget.text = content
   169 
   175 
   170   def _review(self, request, params, app_entity, status, **kwargs):
   176   def _review(self, request, params, app_entity, status, **kwargs):
   171     """Sends out an email if an org_app has been reviewed and accepted.
   177     """Sends out an email if an org_app has been accepted or rejected.
   172 
   178 
   173     For params see group_app.View._review().
   179     For params see group_app.View._review().
   174     """
   180     """
   175 
   181 
   176     if status == 'accepted':
   182     if status == 'accepted' or status == 'rejected':
   177       #TODO(ljvderijk) create the email template
   183 
   178       pass
   184       default_sender = mail_dispatcher.getDefaultMailSender()
   179     elif status == 'rejected':
   185 
   180       #TODO(ljvderijk) create the rejected email template
   186       if not default_sender:
   181       pass
   187         # no default sender abort
       
   188         return
       
   189       else:
       
   190         (sender_name, sender) = default_sender
       
   191 
       
   192       # construct the contents of the email
       
   193       user_entity = app_entity.applicant
       
   194       to = accounts.denormalizeAccount(user_entity.account).email()
       
   195 
       
   196       context = {'sender': sender,
       
   197               'to': to,
       
   198               'sender_name': sender_name,
       
   199               'to_name': user_entity.name,
       
   200               'program_name': app_entity.scope.name}
       
   201 
       
   202       if status == 'accepted':
       
   203         # use the accepted template and subject
       
   204         template = params['accepted_mail_template']
       
   205         context['subject'] = 'Congratulations!'
       
   206         context['HTTP_host'] = os.environ['HTTP_HOST']
       
   207       elif status == 'rejected':
       
   208         # use the rejected template and subject
       
   209         template = params['rejected_mail_template']
       
   210         context['subject'] = 'Thank you for your application'
       
   211 
       
   212       # send out the constructed email
       
   213       mail_dispatcher.sendMailFromTemplate(template, context)
   182 
   214 
   183   @decorators.merge_params
   215   @decorators.merge_params
   184   @decorators.check_access
   216   @decorators.check_access
   185   def bulkAccept(self, request, access_type,
   217   def bulkAccept(self, request, access_type,
   186                page_name=None, params=None, **kwargs):
   218                page_name=None, params=None, **kwargs):