forms: reorder and rename course fields

This commit is contained in:
Benjamin Dauvergne 2012-12-07 17:20:16 +01:00
parent 86336f8a65
commit 36a395f056
4 changed files with 69 additions and 104 deletions

View File

@ -43,8 +43,7 @@ class CreateCourseForm(forms.Form):
helper.form_tag = False
helper.layout = Layout(
Div(
Div('description', css_class="span4"),
HTML('<div class="span8 future-name"></div>'),
HTML('<div id="id_course_label">&nbsp;</div>'),
css_class='row-fluid'),
'entity',
Div(
@ -62,7 +61,6 @@ class CreateCourseForm(forms.Form):
('auto', u'oui'),
('password', u'avec mot de passe'),
('no', u'non'))
description = forms.CharField(max_length=32)
entity = forms.ModelChoiceField(Entity.objects.all(),
label=u'Diplôme')
category = forms.ChoiceField(label=u'Catégorie',
@ -99,9 +97,11 @@ class CreateCourseForm(forms.Form):
class MyCourseForm(request_forms.CopyrigtsForm):
visible_to_students = forms.BooleanField(
label=u'Visible aux étudiants',
label=u'Document visible aux étudiants',
initial=True)
ue = forms.ModelChoiceField(Entity.objects.all(), label=u'Unité d\'enseignement')
ue = forms.ModelChoiceField(Entity.objects.all(),
label=u'Sélectionnez l\'unité d\'enseignement dans \
laquelle vous souhaitez diffuser votre document')
course_name = forms.CharField(max_length=64)
class Meta(request_forms.CopyrigtsForm.Meta):
@ -130,16 +130,18 @@ class MyCourseForm(request_forms.CopyrigtsForm):
if constant.MYCOURSE_TAG in licence.diffusion_tags:
licence_pks_with_mycourse_tag.append(licence.pk)
self.helper.layout = Layout(
Field('copyright', css_class="span8"),
Field('licence', css_class="span8"),
Field('copyright', css_class="span12"),
Field('licence', css_class="span12"),
HTML('<script>var licence_pks_with_mycourse_tag = [%s];</script>' %
', '.join(map(str, licence_pks_with_mycourse_tag))),
Fieldset(u'Diffusion sur la plateform d\'e-Learning',
Div(
'visible_to_students',
HTML('{% include \'_select_my_course.html\' %}'),
HTML('{% include \'_select_sponsor_course.html\' %}'),
HTML('{% include \'_select_ue_course.html\' %}')),
'ue',
HTML('{% include \'_select_course.html\' %}'),
id='mycourse-block', css_class='hide')))
id='mycourse-block', css_class='hide'))
def clean_course_name(self):
if self.cleaned_data['licence'] and \

View File

@ -1,92 +1,5 @@
{% load sekizai_tags %}
{% load url from future %}
{% if wizard.form.course_name.errors %}
<div class="alert">
{{ wizard.form.course_name.errors }}
</div>
{% endif %}
<div id="course-selector" class="course-selector">
{% if courses.error %}
<div class="alert alert-error">Impossible de récupérer la liste des cours: {{ courses.error }}</div>
{% endif %}
{% include "_select_my_course.html" %}
<div class="control-group type-owner">
<label for="course-type-owner" class="control-label">Mes cours</label>
<div class="controls">
{% include '_courses_selector.html' with response=courses.user_courses only %}
</div>
</div>
{% include "_select_sponsor_course.html" %}
{% if courses.sponsor_courses %}
<div class="control-group type-sponsor">
<label for="course-type-sponsor" class="control-label">Les cours du sponsor</label>
<div class="controls">
{% include '_courses_selector.html' with response=courses.sponsor_courses only %}
</div>
</div>
{% endif %}
<style>
.type-ue .controls button {
height: auto;
}
.type-ue .controls.input-append {
display: block;
}
</style>
{% if courses.ue_courses %}
<div class="control-group type-ue">
<label for="course-type-ue" class="control-label">Cours proches de l'UE «&nbsp;{{ courses.ue }}&nbsp;»</label>
<div class="controls input-append">
{% include '_courses_selector.html' with response=courses.ue_courses only %}
<button data-target="#create-course" type="button" class="add-on btn" data-toggle="modal">Créer un nouveau cours</button>
</div>
</div>
{% endif %}
</div>
{% addtoblock "endscripts" %}
<script>
(function ($) {
$(function () {
var getJSON = function(url) {
var res;
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
res = data;
},
async: false
});
return res;
};
$('.courses-selector').on('change', function (){
$('.courses-selector').not(this).val('');
$('#id_document_copyrights-course_name').val($(this).val());
});
$('#id_document_copyrights-ue').on('change', function () {
var value = $(this).val();
var url = '/entity/' + value + '/';
var json = getJSON(url);
var url = '../../course-list/';
url = url + '?ue=' + json.code + '#course-selector';
$('#create-course .miller-columns').millercolumns('setItem',
$(this).val())
$('#id_entity').trigger('change');
$('#course-selector').load(url, function () {
var val = $('#id_document_copyrights-course_name').val();
$('.courses-selector').val(val);
$('.courses-selector').on('change', function (){
$('.courses-selector').not(this).val('');
$('#id_document_copyrights-course_name').val($(this).val());
});
});
});
})
})(window.jQuery)
</script>
{% endaddtoblock %}
{% include "_select_ue_course.html" %}

View File

@ -11,6 +11,9 @@
#create-course .miller-columns {
height: 10em;
}
#create-course label {
font-weight: bold;
}
.modal.large {
margin: -300px 0px 0px -380px;
width: 760px;
@ -30,6 +33,44 @@
<script>
(function ($) {
$(function () {
var getJSON = function(url) {
var res;
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
res = data;
},
async: false
});
return res;
};
$('.courses-selector').on('change', function (){
$('.courses-selector').not(this).val('');
$('#id_document_copyrights-course_name').val($(this).val());
});
$('#id_document_copyrights-ue').on('change', function () {
var value = $(this).val();
var url = '/entity/' + value + '/';
var json = getJSON(url);
var url = '../../course-list/';
url = url + '?ue=' + json.code + '#ue-course';
$('#create-course .miller-columns').millercolumns('setItem',
$(this).val())
$('#id_entity').trigger('change');
$.get(url, function (data) {
var $content = $(data);
$('#ue-course-container').html($('#ue-course', $content));
var val = $('#id_document_copyrights-course_name').val();
$('.courses-selector').val(val);
$('.courses-selector').on('change', function (){
$('.courses-selector').not(this).val('');
$('#id_document_copyrights-course_name').val($(this).val());
});
});
});
$('#create-course').on('shown', function () {
$('.miller-columns').millercolumns('refresh');
});
@ -50,22 +91,25 @@
function update_course_name() {
var entity_id = $('#id_entity').val();
var td_group = $('#id_td_group').val();
var $name = $('#id_description');
var $name = $('#id_course_label');
var delegate = $('#create-course .miller-columns').millercolumns('delegate');
var item = delegate.cache[entity_id];
var ue = item;
var $msg = $('#create-course .future-name');
while (item && item.type != 'diplome') {
item = delegate.cache[item.parent_id];
}
if (item == undefined) {
$name.val('');
$name.addClass('alert');
$name.text("La sélection n'est pas une unité d'enseignement.");
} else {
var username = '{{user.username}}';
var name = item.code.toUpperCase()+'_'+'{{course_year}}'+'_'+username.toUpperCase();
var name = item.name+'_'+'{{course_year}}'+'_'+ue.name+'_{{user.display_name}}';
if (td_group) {
name += '_' + td_group.toUpperCase();
}
$name.val(name);
$name.removeClass('alert');
$name.html("<span><label>Libellé</label>"+name+"</span>");
}
}
$('#id_document_copyrights-licence').on('change', function () {

View File

@ -31,8 +31,14 @@ def create_course(request):
if form.is_valid():
conn = django_ws.get_bb_conn()
course_id = form.cleaned_data['course_id']
entity = form.cleaned_data['entity']
diploma = entity.parents().filter(
entity_type__name=settings.POLYNUM_BB_DIPLOMA_DESIGNATION)
course_label = diploma.get_name() + '_' + \
settings.POLYNUM_BB_COURSE_YEAR + '_' + \
entity.get_name() + request.user.display_name()
ok, result = conn.create_course(course_id,
form.cleaned_data['description'],
course_label,
form.cleaned_data['category'],
form.cleaned_data['open_to_visitors'],
form.cleaned_data['subscription_policy'] != 'no',