Skip to content

Commit a52e902

Browse files
committed
Merged in [3029] from esanchez@yaco.es. Make the Cc: field of new liaisons editable.
- Legacy-Id: 3031 Note: SVN reference [3029] has been migrated to Git commit 199e469
2 parents 29c7211 + 199e469 commit a52e902

2 files changed

Lines changed: 41 additions & 15 deletions

File tree

ietf/liaisons/forms.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class LiaisonForm(forms.ModelForm):
2323
replyto = forms.CharField(label=u'Reply to')
2424
organization = forms.ChoiceField()
2525
to_poc = forms.CharField(widget=ReadOnlyWidget, label="POC", required=False)
26-
cc1 = forms.CharField(widget=ReadOnlyWidget, label="CC", required=False)
26+
cc1 = forms.CharField(widget=forms.Textarea, label="CC", required=False, help_text='Please insert one email address per line')
2727
purpose_text = forms.CharField(widget=forms.Textarea, label='Other purpose')
2828
deadline_date = forms.DateField(label='Deadline')
2929
title = forms.CharField(label=u'Title')
@@ -171,10 +171,30 @@ def get_to_entity(self):
171171
def get_poc(self, organization):
172172
return ', '.join([i.email()[1] for i in organization.get_poc()])
173173

174+
def clean_cc1(self):
175+
value = self.cleaned_data.get('cc1', '')
176+
result = []
177+
errors = []
178+
for address in value.split('\n'):
179+
address = address.strip();
180+
if not address:
181+
continue
182+
try:
183+
self.check_email(address)
184+
except forms.ValidationError:
185+
errors.append(address)
186+
result.append(address)
187+
if errors:
188+
raise forms.ValidationError('Invalid email addresses: %s' % ', '.join(errors))
189+
return ','.join(result)
190+
174191
def get_cc(self, from_entity, to_entity):
175-
persons = to_entity.get_cc(self.person)
176-
persons += from_entity.get_from_cc(self.person)
177-
return ', '.join(['%s <%s>' % i.email() for i in persons])
192+
#Old automatic Cc code, now we retrive it from cleaned_data
193+
#persons = to_entity.get_cc(self.person)
194+
#persons += from_entity.get_from_cc(self.person)
195+
#return ', '.join(['%s <%s>' % i.email() for i in persons])
196+
cc = self.cleaned_data.get('cc1', '')
197+
return cc
178198

179199
def save(self, *args, **kwargs):
180200
liaison = super(LiaisonForm, self).save(*args, **kwargs)

static/js/liaisons.js

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,15 @@
150150
config.info_update_url = confcontainer.find('.info_update_url').text();
151151
};
152152

153-
var render_mails_into = function(container, person_list) {
153+
var render_mails_into = function(container, person_list, as_html) {
154154
var html='';
155155

156156
$.each(person_list, function(index, person) {
157-
html += person[0] + ' &lt;<a href="mailto:'+person[1]+'">'+person[1]+'</a>&gt;<br />';
157+
if (as_html) {
158+
html += person[0] + ' &lt;<a href="mailto:'+person[1]+'">'+person[1]+'</a>&gt;<br />';
159+
} else {
160+
html += person[0] + ' &lt;'+person[1]+'&gt;\n';
161+
}
158162
});
159163
container.html(html);
160164
};
@@ -204,7 +208,7 @@
204208
updateReplyTo();
205209
};
206210

207-
var updateInfo = function() {
211+
var updateInfo = function(first_time) {
208212
var entity = organization;
209213
var to_entity = from;
210214
if (!entity.is('select') || !to_entity.is('select')) {
@@ -221,8 +225,10 @@
221225
from_entity_id: to_entity.val()},
222226
success: function(response){
223227
if (!response.error) {
224-
render_mails_into(cc, response.cc);
225-
render_mails_into(poc, response.poc);
228+
if (!first_time || !cc.text()) {
229+
render_mails_into(cc, response.cc, false);
230+
}
231+
render_mails_into(poc, response.poc, true);
226232
toggleApproval(response.needs_approval);
227233
checkPostOnly(response.post_only);
228234
userSelect(response.full_list);
@@ -320,10 +326,10 @@
320326
return false;
321327
};
322328

323-
var checkFrom = function() {
329+
var checkFrom = function(first_time) {
324330
var reduce_options = form.find('.reducedToOptions');
325331
if (!reduce_options.length) {
326-
updateInfo();
332+
updateInfo(first_time);
327333
return;
328334
}
329335
var to_select = organization;
@@ -344,13 +350,13 @@
344350
to_select.find('optgroup').show();
345351
to_select.find('option').show();
346352
}
347-
updateInfo();
353+
updateInfo(first_time);
348354
};
349355

350356
var initTriggers = function() {
351-
organization.change(updateInfo);
357+
organization.change(function() {updateInfo(false);});
352358
organization.change(checkOtherSDO);
353-
from.change(checkFrom);
359+
from.change(function() {checkFrom(false);});
354360
reply.keyup(updateFrom);
355361
purpose.change(updatePurpose);
356362
cancel.click(cancelForm);
@@ -360,7 +366,7 @@
360366

361367
var updateOnInit = function() {
362368
updateFrom();
363-
checkFrom();
369+
checkFrom(true);
364370
updatePurpose();
365371
checkOtherSDO();
366372
};

0 commit comments

Comments
 (0)