class Meta: model = Asset fields = ( 'id', 'delete', 'model_proposed', 'model_user', 'invoice_no', 'order_no', 'sn', 'barcode', 'price', 'support_price', 'support_period', 'support_type', 'support_void_reporting', 'provider', 'source', 'status', 'request_date', 'delivery_date', 'invoice_date', 'production_use_date', 'provider_order_date', 'warehouse', ) widgets = { 'request_date': DateWidget(), 'delivery_date': DateWidget(), 'invoice_date': DateWidget(), 'production_use_date': DateWidget(), 'provider_order_date': DateWidget(), 'device_info': HiddenInput(), }
class Meta: model = UsagePrice fields = 'price', 'start', 'end' widgets = { 'start': DateWidget(attrs={'class': 'input-small'}), 'end': DateWidget(attrs={'class': 'input-small'}), }
class Meta: model = ExtraCost fields = 'type', 'price', 'start', 'end' widgets = { 'start': DateWidget(attrs={'class': 'input-small'}), 'end': DateWidget(attrs={'class': 'input-small'}), }
class Meta: model = ExtraCost fields = 'service_environment', 'cost', 'start', 'end' widgets = { 'start': DateWidget(attrs={'class': 'input-small'}), 'end': DateWidget(attrs={'class': 'input-small'}), }
class WarrantyRangeReportForm(forms.Form): w_start = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='Start date', ) w_end = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='End date', )
class DeprecationRangeReportForm(forms.Form): d_start = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='Start date', ) d_end = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='End date', )
class Meta: model = ExtraCost fields = 'mode', 'pricing_venture', 'monthly_cost', 'start', 'end' widgets = { 'start': DateWidget(attrs={'class': 'input-small'}), 'end': DateWidget(attrs={'class': 'input-small'}), 'mode': forms.Select(attrs={'class': 'mode_selector'}), }
class Meta: model = TeamDaterange fields = ['start', 'end'] widgets = { 'start': DateWidget(attrs={'class': 'input-small'}), 'end': DateWidget(attrs={'class': 'input-small'}), }
class SupportRangeReportForm(forms.Form): s_start = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='Start date', ) s_end = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='End date', )
class DateRangeForm(forms.Form): '''Form schema. Used to generate venture raports''' start = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='', initial=lambda: datetime.date.today() - datetime.timedelta(days=30), ) end = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='', initial=datetime.date.today, )
class DateRangeForm(forms.Form): start = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='', initial=lambda: datetime.date.today() - datetime.timedelta(days=30), ) end = forms.DateField( widget=DateWidget(attrs={'class': 'input-small'}, ), label='', initial=datetime.date.today, ) show_in_ralph = forms.BooleanField( required=False, label=_("Show only active"), )
class Meta: model = UsagePrice fields = [ 'warehouse', 'forecast_price', 'price', 'forecast_cost', 'cost', 'start', 'end', ] widgets = { 'start': DateWidget(attrs={'class': 'input-small'}), 'end': DateWidget(attrs={'class': 'input-small'}), }
class Meta: model = Asset fields = ( 'niw', 'sn', 'type', 'category', 'model', 'status', 'warehouse', 'source', 'invoice_no', 'order_no', 'price', 'support_price', 'support_type', 'support_period', 'support_void_reporting', 'provider', 'remarks', 'sn', 'barcode', 'request_date', 'provider_order_date', 'delivery_date', 'invoice_date', 'production_use_date', 'deleted', 'deprecation_rate', 'slots', ) widgets = { 'request_date': DateWidget(), 'delivery_date': DateWidget(), 'invoice_date': DateWidget(), 'production_use_date': DateWidget(), 'provider_order_date': DateWidget(), 'remarks': Textarea(attrs={'rows': 3}), 'support_type': Textarea(attrs={'rows': 5}), 'sn': Textarea(attrs={ 'rows': 1, 'readonly': '1' }), 'barcode': Textarea(attrs={'rows': 1}), }
class ReportFiltersDateRange(forms.Form): date_attrs = { 'data-collapsed': True, 'class': 'input-small', } start_update = forms.DateField( required=False, widget=DateWidget(dict( date_attrs, placeholder='From', )), label="Update" ) end_update = forms.DateField( required=False, widget=DateWidget( attrs={ 'placeholder': 'End', 'data-collapsed': True, 'class': 'input-small', } ), label="", ) start_resolved = forms.DateField( required=False, widget=DateWidget(dict(date_attrs, placeholder='From')), label="Resolved", ) end_resolved = forms.DateField( required=False, widget=DateWidget(dict(date_attrs, placeholder='To')), label="", ) start_planned_start = forms.DateField( required=False, widget=DateWidget(dict(date_attrs, placeholder='From')), label="Planed start", ) end_planned_start = forms.DateField( required=False, widget=DateWidget(dict(date_attrs, placeholder='To')), label="", ) start_planned_end = forms.DateField( required=False, widget=DateWidget(dict(date_attrs, placeholder='From')), label="Planed end", ) end_planned_end = forms.DateField( required=False, widget=DateWidget(dict(date_attrs, placeholder='To')), label="", )
class Meta: model = UsagePrice fields = [ 'warehouse', 'team', 'team_members_count', 'internet_provider', 'forecast_price', 'price', 'forecast_cost', 'cost', 'start', 'end', ] widgets = { 'start': DateWidget(attrs={'class': 'input-small'}), 'end': DateWidget(attrs={'class': 'input-small'}), }
class TransitionForm(forms.Form): user = AutoCompleteSelectField( LOOKUPS['asset_user'], required=True, ) warehouse = AutoCompleteSelectField( LOOKUPS['asset_warehouse'], required=True, ) loan_end_date = forms.DateField( required=True, widget=DateWidget(attrs={ 'class': 'end-date-field ', 'placeholder': _('End YYYY-MM-DD'), 'data-collapsed': True, }), label=_('Loan end date'), input_formats=RALPH_DATE_FORMAT_LIST, ) country = forms.ChoiceField( choices=[('', '----')] + Country(), label=_('Country'), required=True, )
class Meta: model = OfficeInfo exclude = ('created', 'modified') widgets = { 'date_of_last_inventory': DateWidget(), }
class SearchAssetForm(Form): """returns search asset form for DC and BO. :param mode: one of `dc` for DataCenter or `bo` for Back Office :returns Form """ model = AutoCompleteField( LOOKUPS['asset_model'], required=False, help_text=None, ) manufacturer = AutoCompleteField( LOOKUPS['asset_manufacturer'], required=False, help_text=None, ) invoice_no = CharField(required=False) order_no = CharField(required=False) provider = CharField(required=False, label='Provider') status = ChoiceField(required=False, choices=[('', '----')] + AssetStatus(), label='Status') part_info = ChoiceField(required=False, choices=[('', '----'), ('device', 'Device'), ('part', 'Part')], label='Asset type') category = TreeNodeChoiceField( required=False, queryset=AssetCategory.tree.all(), level_indicator='|---', empty_label="---", ) source = ChoiceField( required=False, choices=[('', '----')] + AssetSource(), ) niw = CharField(required=False, label='Niw') sn = CharField(required=False, label='SN') barcode = CharField(required=False, label='Barcode') ralph_device_id = IntegerField( required=False, label='Ralph device id', ) request_date_from = DateField( required=False, widget=DateWidget(attrs={ 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label="Request date", ) request_date_to = DateField(required=False, widget=DateWidget( attrs={ 'class': 'end-date-field ', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='') provider_order_date_from = DateField( required=False, widget=DateWidget(attrs={ 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label="Provider order date", ) provider_order_date_to = DateField(required=False, widget=DateWidget( attrs={ 'class': 'end-date-field ', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='') delivery_date_from = DateField( required=False, widget=DateWidget(attrs={ 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label="Delivery date", ) delivery_date_to = DateField(required=False, widget=DateWidget( attrs={ 'class': 'end-date-field ', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='') deprecation_rate = ChoiceField(required=False, choices=[ ('', '----'), ('null', 'None'), ('48>', '48 <'), ('48', '24 < * <= 48'), ('24', '12 < * <= 24'), ('12', '6 < * <= 12'), ('6', '* <= 6'), ('deprecated', 'Deprecated'), ], label='Deprecation') invoice_date_from = DateField( required=False, widget=DateWidget(attrs={ 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label="Invoice date", ) invoice_date_to = DateField(required=False, widget=DateWidget( attrs={ 'class': 'end-date-field ', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='') production_use_date_from = DateField( required=False, widget=DateWidget(attrs={ 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label="Production use date", ) production_use_date_to = DateField(required=False, widget=DateWidget( attrs={ 'class': 'end-date-field ', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='') unlinked = BooleanField(required=False, label="Is unlinked") deleted = BooleanField(required=False, label="Include deleted") def __init__(self, *args, **kwargs): # Ajax sources are different for DC/BO, use mode for distinguish mode = kwargs.get('mode') if mode: del kwargs['mode'] super(SearchAssetForm, self).__init__(*args, **kwargs) category = self.fields['category'].queryset if mode == 'dc': self.fields['category'].queryset = category.filter( type=AssetCategoryType.data_center) elif mode == 'back_office': self.fields['category'].queryset = category.filter( type=AssetCategoryType.back_office)
class SearchForm(forms.Form): name = forms.CharField(required=False, widget=forms.TextInput(attrs={'class': 'span12'})) address = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Address or network") remarks = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field })) role = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Venture or role") model = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field_venture, })) component = forms.CharField( required=False, widget=forms.TextInput(attrs={'class': 'span12'}), label="Component or software") serial = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Serial number, MAC or WWN") barcode = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, })) position = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Datacenter, rack or position") history = forms.CharField( required=False, widget=forms.TextInput(attrs={'class': 'span12'})) device_type = forms.MultipleChoiceField( required=False, widget=forms.SelectMultiple(attrs={'class': 'span12'}), choices=DeviceType(item=lambda e: (e.id, e.raw)), ) device_group = forms.IntegerField(required=False, widget=DeviceGroupWidget, label="") component_group = forms.IntegerField(required=False, widget=ComponentGroupWidget, label="") purchase_date_start = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Purchase date', input_formats=['%Y-%m-%d']) purchase_date_end = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12 end-date-field', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_purchase_date = forms.BooleanField( required=False, label="Empty purchase date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) deprecation_date_start = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Deprecation date', input_formats=['%Y-%m-%d']) deprecation_date_end = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12 end-date-field', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_deprecation_date = forms.BooleanField( required=False, label="Empty deprecation date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) warranty_expiration_date_start = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Warranty expiration date', input_formats=['%Y-%m-%d']) warranty_expiration_date_end = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12 end-date-field', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_warranty_expiration_date = forms.BooleanField( required=False, label="Empty warranty expiration date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) support_expiration_date_start = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Support expiration date', input_formats=['%Y-%m-%d']) support_expiration_date_end = forms.DateField( required=False, widget=DateWidget( attrs={ 'class': 'span12 end-date-field ', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_support_expiration_date = forms.BooleanField( required=False, label="Empty support expiration date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) deleted = forms.BooleanField(required=False, label="Include deleted") def clean_purchase_date_end(self): validate_start_end_date_date(self.cleaned_data['purchase_date_start'], self.cleaned_data['purchase_date_end']) return self.cleaned_data['purchase_date_end'] def clean_deprecation_date_end(self): validate_start_end_date_date( self.cleaned_data['deprecation_date_start'], self.cleaned_data['deprecation_date_end']) return self.cleaned_data['deprecation_date_end'] def clean_warranty_expiration_date_end(self): validate_start_end_date_date( self.cleaned_data['warranty_expiration_date_start'], self.cleaned_data['warranty_expiration_date_end']) return self.cleaned_data['warranty_expiration_date_end'] def clean_support_expiration_date_end(self): validate_start_end_date_date( self.cleaned_data['support_expiration_date_start'], self.cleaned_data['support_expiration_date_end']) return self.cleaned_data['support_expiration_date_end'] def clean_address(self): data = self.cleaned_data['address'] if data: if '/' in data: try: ipaddr.IPNetwork(data) except ValueError: raise forms.ValidationError("Invalid network") else: try: ipaddr.IPv4Address(data) except ValueError: raise forms.ValidationError("Invalid address") return data
class SearchForm(forms.Form): name = forms.CharField(required=False, widget=forms.TextInput(attrs={'class': 'span12'})) address = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Address or network") remarks = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field })) role = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Venture or role") # This search field cannot be named 'service', because 'Info' tab already # has ajax field with the same id, and such collision results in unwanted # data bindings between those two. service_catalog = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Service catalog") device_environment = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Device environment") model = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field_venture, })) component = forms.CharField(required=False, widget=forms.TextInput( attrs={'class': 'span12'}), label="Component") software = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.software_field, }), label="Software") serial = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Serial number, MAC or WWN") barcode = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, })) department = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'class': 'span12', })) position = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12', 'title': TooltipContent.empty_field, }), label="Datacenter, rack or position") history = forms.CharField(required=False, widget=forms.TextInput(attrs={ 'class': 'span12' })) device_type = forms.MultipleChoiceField(required=False, widget=forms.SelectMultiple( attrs={'class': 'span12'}), choices=DeviceType( item=lambda e: (e.id, e.raw)), ) purchase_date_start = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Purchase date', input_formats=['%Y-%m-%d']) purchase_date_end = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12 end-date-field', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_purchase_date = forms.BooleanField(required=False, label="Empty purchase date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) deprecation_date_start = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Deprecation date', input_formats=['%Y-%m-%d']) deprecation_date_end = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12 end-date-field', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_deprecation_date = forms.BooleanField(required=False, label="Empty deprecation date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) deprecation_kind = forms.MultipleChoiceField( required=False, widget=forms.SelectMultiple( attrs={'class': 'span12', 'data-collapsed': True},), label="Deprecation", choices=[('None', '-----')] + [(kind.id, kind.name) for kind in DeprecationKind.objects.all()], ) warranty_expiration_date_start = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Warranty expiration date', input_formats=['%Y-%m-%d']) warranty_expiration_date_end = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12 end-date-field', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_warranty_expiration_date = forms.BooleanField(required=False, label="Empty warranty expiration date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) support_expiration_date_start = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12', 'placeholder': 'Start YYYY-MM-DD', 'data-collapsed': True, }), label='Support expiration date', input_formats=['%Y-%m-%d']) support_expiration_date_end = forms.DateField(required=False, widget=DateWidget(attrs={ 'class': 'span12 end-date-field ', 'placeholder': 'End YYYY-MM-DD', 'data-collapsed': True, }), label='', input_formats=['%Y-%m-%d']) no_support_expiration_date = forms.BooleanField(required=False, label="Empty support expiration date", widget=forms.CheckboxInput(attrs={ 'data-collapsed': True, })) with_changes = forms.BooleanField( required=False, label="Only with Scan changes", ) deleted = forms.BooleanField(required=False, label="Include deleted") def clean_purchase_date_end(self): validate_start_end_date_date(self.cleaned_data['purchase_date_start'], self.cleaned_data['purchase_date_end']) return self.cleaned_data['purchase_date_end'] def clean_deprecation_date_end(self): validate_start_end_date_date( self.cleaned_data['deprecation_date_start'], self.cleaned_data['deprecation_date_end']) return self.cleaned_data['deprecation_date_end'] def clean_warranty_expiration_date_end(self): validate_start_end_date_date( self.cleaned_data['warranty_expiration_date_start'], self.cleaned_data['warranty_expiration_date_end']) return self.cleaned_data['warranty_expiration_date_end'] def clean_support_expiration_date_end(self): validate_start_end_date_date( self.cleaned_data['support_expiration_date_start'], self.cleaned_data['support_expiration_date_end']) return self.cleaned_data['support_expiration_date_end'] def clean_address(self): data = self.cleaned_data['address'] if data: if '/' in data: try: ipaddr.IPNetwork(data) except ValueError: raise forms.ValidationError("Invalid network") else: try: ipaddr.IPv4Address(data) except ValueError: raise forms.ValidationError("Invalid address") return data