class PowerConnectionImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=PowerConnectionCSVForm) def clean(self): records = self.cleaned_data.get('csv') if not records: return connection_list = [] for i, record in enumerate(records, start=1): form = self.fields['csv'].csv_form(data=record) if form.is_valid(): power_port = PowerPort.objects.get( device=form.cleaned_data['device'], name=form.cleaned_data['power_port']) power_port.power_outlet = PowerOutlet.objects.get( device=form.cleaned_data['pdu'], name=form.cleaned_data['power_outlet']) if form.cleaned_data['status'] == 'planned': power_port.connection_status = CONNECTION_STATUS_PLANNED else: power_port.connection_status = CONNECTION_STATUS_CONNECTED connection_list.append(power_port) else: for field, errors in form.errors.items(): for e in errors: self.add_error('csv', "Record {} {}: {}".format(i, field, e)) self.cleaned_data['csv'] = connection_list
class InterfaceConnectionImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=InterfaceConnectionCSVForm) def clean(self): records = self.cleaned_data.get('csv') if not records: return connection_list = [] for i, record in enumerate(records, start=1): form = self.fields['csv'].csv_form(data=record) if form.is_valid(): interface_a = Interface.objects.get( device=form.cleaned_data['device_a'], name=form.cleaned_data['interface_a']) interface_b = Interface.objects.get( device=form.cleaned_data['device_b'], name=form.cleaned_data['interface_b']) connection = InterfaceConnection(interface_a=interface_a, interface_b=interface_b) if form.cleaned_data['status'] == 'planned': connection.connection_status = CONNECTION_STATUS_PLANNED else: connection.connection_status = CONNECTION_STATUS_CONNECTED connection_list.append(connection) else: for field, errors in form.errors.items(): for e in errors: self.add_error('csv', "Record {} {}: {}".format(i, field, e)) self.cleaned_data['csv'] = connection_list
class PrefixImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=PrefixFromCSVForm)
class AggregateImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=AggregateFromCSVForm)
class ImportForm(BootstrapMixin, Form): csv = CSVDataField(from_form=self.model_form, widget=Textarea(attrs=self.widget_attrs))
class ProviderImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=ProviderFromCSVForm)
class CircuitImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=CircuitFromCSVForm)
class SecretImportForm(BulkImportForm, BootstrapMixin): private_key = forms.CharField(widget=forms.HiddenInput()) csv = CSVDataField( csv_form=SecretFromCSVForm, widget=forms.Textarea(attrs={'class': 'requires-private-key'}))
class RackImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=RackFromCSVForm)
class SecretImportForm(BulkImportForm, BootstrapMixin): private_key = forms.CharField(widget=forms.HiddenInput()) csv = CSVDataField(csv_form=SecretFromCSVForm)
class VRFImportForm(BootstrapMixin, BulkImportForm): csv = CSVDataField(csv_form=VRFFromCSVForm)
class SecretImportForm(BootstrapMixin, BulkImportForm): csv = CSVDataField( csv_form=SecretFromCSVForm, widget=forms.Textarea(attrs={'class': 'requires-session-key'}))
class TenantImportForm(BootstrapMixin, BulkImportForm): csv = CSVDataField(csv_form=TenantFromCSVForm)
class ImportForm(BootstrapMixin, Form): csv = CSVDataField(fields=fields, required_fields=required_fields)
class DeviceImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=DeviceFromCSVForm)
class IPAddressImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=IPAddressFromCSVForm)
class VLANImportForm(BulkImportForm, BootstrapMixin): csv = CSVDataField(csv_form=VLANFromCSVForm)
class ImportForm(BootstrapMixin, Form): csv = CSVDataField(fields=fields, required_fields=required_fields, widget=Textarea(attrs=self.widget_attrs))