Migrate code to handle availability.contact
This commit is contained in:
parent
bc046994ef
commit
1e6f91f59a
2 changed files with 29 additions and 13 deletions
|
|
@ -56,27 +56,36 @@ class AvailabilityAdminForm(forms.ModelForm):
|
|||
Custom avail form to create several availabilities at once when inlined in
|
||||
the PeriodAdmin interface
|
||||
"""
|
||||
num_avail = forms.IntegerField(label="Nombre de places", initial=1)
|
||||
num_avail = forms.IntegerField(label="Nombre de places", initial=1, required=False)
|
||||
|
||||
class Media:
|
||||
js = ('js/avail_form.js',)
|
||||
|
||||
class Meta:
|
||||
model = Availability
|
||||
widgets = {
|
||||
'num_avail': forms.TextInput(attrs={'size': 3}),
|
||||
}
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(AvailabilityAdminForm, self).__init__(*args, **kwargs)
|
||||
def __init__(self, data=None, files=None, **kwargs):
|
||||
super(AvailabilityAdminForm, self).__init__(data=data, files=files, **kwargs)
|
||||
if self.instance.pk is not None:
|
||||
# Hide num_avail on existing instances
|
||||
self.fields['num_avail'].widget = forms.HiddenInput()
|
||||
# Limit CorpContact objects to contacts of chosen corporation
|
||||
if data is None and self.instance.corporation_id:
|
||||
self.fields['contact'].queryset = self.instance.corporation.corpcontact_set
|
||||
|
||||
def save(self, **kwargs):
|
||||
instance = super(AvailabilityAdminForm, self).save(**kwargs)
|
||||
# Create supplementary availabilities depending on num_avail
|
||||
for i in range(1, self.cleaned_data.get('num_avail', 1)):
|
||||
num_avail = self.cleaned_data.get('num_avail', 1) or 1
|
||||
for i in range(1, num_avail):
|
||||
Availability.objects.create(
|
||||
corporation=instance.corporation,
|
||||
period=instance.period,
|
||||
domain=instance.domain,
|
||||
contact=instance.contact,
|
||||
comment=instance.comment)
|
||||
return instance
|
||||
|
||||
|
|
@ -99,7 +108,8 @@ class PeriodAdmin(admin.ModelAdmin):
|
|||
class AvailabilityAdmin(admin.ModelAdmin):
|
||||
list_display = ('corporation', 'period', 'domain')
|
||||
list_filter = ('period',)
|
||||
fields = (('corporation', 'period'), 'domain', 'comment')
|
||||
fields = (('corporation', 'period'), 'domain', 'contact', 'comment')
|
||||
form = AvailabilityAdminForm
|
||||
|
||||
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||
if db_field.name == "corporation":
|
||||
|
|
|
|||
|
|
@ -179,12 +179,15 @@ def new_training(request):
|
|||
try:
|
||||
ref = Referent.objects.get(pk=ref_key) if ref_key else None
|
||||
contact = CorpContact.objects.get(pk=cont_key) if cont_key else None
|
||||
avail = Availability.objects.get(pk=request.POST.get('avail'))
|
||||
training = Training.objects.create(
|
||||
student=Student.objects.get(pk=request.POST.get('student')),
|
||||
availability=Availability.objects.get(pk=request.POST.get('avail')),
|
||||
availability=avail,
|
||||
referent=ref,
|
||||
contact=contact,
|
||||
)
|
||||
if avail.contact != contact:
|
||||
avail.contact = contact
|
||||
avail.save()
|
||||
except Exception as exc:
|
||||
return HttpResponse(str(exc))
|
||||
return HttpResponse('OK')
|
||||
|
|
@ -217,8 +220,10 @@ def stages_export(request):
|
|||
('Ville Inst.', 'availability__corporation__city'),
|
||||
('Domaine', 'availability__domain__name'),
|
||||
('Remarques Inst.', 'availability__comment'),
|
||||
('Civilité contact', 'contact__title'), ('Prénom contact', 'contact__first_name'),
|
||||
('Nom contact', 'contact__last_name'), ('Courriel contact', 'contact__email'),
|
||||
('Civilité contact', 'availability__contact__title'),
|
||||
('Prénom contact', 'availability__contact__first_name'),
|
||||
('Nom contact', 'availability__contact__last_name'),
|
||||
('Courriel contact', 'availability__contact__email'),
|
||||
]
|
||||
|
||||
period_filter = request.GET.get('filter')
|
||||
|
|
@ -245,13 +250,14 @@ def stages_export(request):
|
|||
for row_idx, tr in enumerate(query.values(*query_keys), start=1):
|
||||
for col_idx, field in enumerate(query_keys):
|
||||
ws.cell(row=row_idx, column=col_idx).value = tr[field]
|
||||
if tr['contact__last_name'] is None:
|
||||
if tr['availability__contact__last_name'] is None:
|
||||
# Use default contact
|
||||
contact = contacts.get(tr['availability__corporation__name'])
|
||||
if contact:
|
||||
ws.cell(row=row_idx, column=col_idx-2).value = contact.title
|
||||
ws.cell(row=row_idx, column=col_idx-1).value = contact.first_name
|
||||
ws.cell(row=row_idx, column=col_idx).value = contact.last_name
|
||||
ws.cell(row=row_idx, column=col_idx-3).value = contact.title
|
||||
ws.cell(row=row_idx, column=col_idx-2).value = contact.first_name
|
||||
ws.cell(row=row_idx, column=col_idx-1).value = contact.last_name
|
||||
ws.cell(row=row_idx, column=col_idx).value = contact.email
|
||||
|
||||
response = HttpResponse(save_virtual_workbook(wb), mimetype='application/ms-excel')
|
||||
response['Content-Disposition'] = 'attachment; filename=%s%s.xlsx' % (
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue