Allow defining prioritary availabilities

This commit is contained in:
Claude Paroz 2016-01-19 12:07:14 +01:00
parent d4e9e44940
commit 5913c0588f
5 changed files with 14 additions and 6 deletions

View file

@ -136,7 +136,7 @@ class AvailabilityAdminForm(forms.ModelForm):
comment=instance.comment)
return instance
class AvailabilityInline(admin.TabularInline):
class AvailabilityInline(admin.StackedInline):
model = Availability
form = AvailabilityAdminForm
ordering = ('corporation__name',)
@ -155,7 +155,7 @@ class PeriodAdmin(admin.ModelAdmin):
class AvailabilityAdmin(admin.ModelAdmin):
list_display = ('corporation', 'period', 'domain')
list_filter = ('period',)
fields = (('corporation', 'period'), 'domain', 'contact', 'comment')
fields = (('corporation', 'period'), 'domain', 'contact', 'priority', 'comment')
form = AvailabilityAdminForm
def formfield_for_foreignkey(self, db_field, request, **kwargs):

View file

@ -218,6 +218,7 @@ class Availability(models.Model):
period = models.ForeignKey(Period, verbose_name='Période')
domain = models.ForeignKey(Domain, verbose_name='Domaine')
contact = models.ForeignKey(CorpContact, null=True, blank=True, verbose_name='Contact institution')
priority = models.BooleanField('Prioritaire', default=False)
comment = models.TextField(blank=True, verbose_name='Remarques')
class Meta:

View file

@ -64,7 +64,9 @@ function update_corporations(period_id) {
$.each(data, function() {
if (this.free) {
options.push(this);
sel.append($("<option />").val(this.id).text(this.corp_name).data('idCorp', this.id_corp));
var new_opt = $("<option />").val(this.id).text(this.corp_name).data('idCorp', this.id_corp);
if (this.priority) new_opt.addClass('priority');
sel.append(new_opt);
}
if ($.inArray(this.domain, domains) < 0) {
domains.push(this.domain);
@ -167,7 +169,9 @@ $(document).ready(function() {
$.each(options, function(i) {
var option = options[i];
if (option.domain == filter_val || filter_val == '') {
sel.append($("<option />").val(option.id).text(option.corp_name));
var new_opt = $("<option />").val(option.id).text(option.corp_name);
if (option.priority) new_opt.addClass('priority');
sel.append(new_opt);
}
});
});

View file

@ -179,9 +179,11 @@ def period_students(request, pk):
def period_availabilities(request, pk):
""" Return all availabilities in the specified period """
period = get_object_or_404(Period, pk=pk)
# Sorting by the boolean priority is first with PostgreSQL, last with SQLite :-/
corps = [{'id': av.id, 'id_corp': av.corporation.id, 'corp_name': av.corporation.name,
'domain': av.domain.name, 'free': av.free}
for av in period.availability_set.select_related('corporation').all()]
'domain': av.domain.name, 'free': av.free, 'priority': av.priority}
for av in period.availability_set.select_related('corporation').all(
).order_by('priority', 'corporation__name')]
return HttpResponse(json.dumps(corps), content_type="application/json")
def new_training(request):