class SetOrderAction(workflows.Action): start_time = forms.DateTimeField(label=_("Start Time"), disabled=True) stop_time = forms.DateTimeField(label=_("Stop Time"), disabled=True) def __init__(self, request, *args, **kwargs): super(SetOrderAction, self).__init__(request, *args, **kwargs) # NOTE(e0ne): we don't need 'required attribute for networks # checkboxes to be able to select only one network # NOTE(e0ne): we need it for compatibility with different # Django versions (prior to 1.11) self.use_required_attribute = False class Meta(object): name = _("Order") help_text = _("Select Order for your instance.")
def __init__(self, request, *args, **kwargs): super(GrantAllForm, self).__init__(request, *args, **kwargs) curr_year = datetime.now().year self.fields['expiration'] = forms.DateTimeField( label=_("Expiration date"), required=True, widget=SelectDateWidget(None, range(curr_year, curr_year + 25)) )
class OrderTimeForm(forms.SelfHandlingForm): start_time = forms.DateTimeField(label=_("Start Time")) stop_time =forms.DateTimeField(label=_("Stop Time")) def __init__(self, request, *args, **kwargs): super(OrderTimeForm, self).__init__(request, *args, **kwargs) def clean(self): cleaned_data = super(OrderTimeForm, self).clean() return cleaned_data @sensitive_variables('data') def handle(self, request, data): start_time = data.get('start_time') stop_time = data.get('stop_time') # order_hypervisor=order.order_hypervisor(request,start_time.strftime('%Y-%m-%d %H:%M:%S'),stop_time.strftime('%Y-%m-%d %H:%M:%S')) if start_time and stop_time: return True else: return False
def __init__(self, request, *args, **kwargs): super(RenewAdminForm, self).__init__(request, *args, **kwargs) self.fields['requestid'] = forms.CharField(widget=HiddenInput) curr_year = datetime.now().year years_list = range(curr_year, curr_year + 25) self.fields['expiration'] = forms.DateTimeField( label=_("Expiration date"), widget=SelectDateWidget(None, years_list))
def __init__(self, request, *args, **kwargs): super(ApproveSubscrForm, self).__init__(request, *args, **kwargs) self.fields['regid'] = forms.CharField(widget=HiddenInput) curr_year = datetime.utcnow().year years_list = range(curr_year, curr_year + MAX_RENEW) self.fields['expiration'] = forms.DateTimeField( label=_("Expiration date"), widget=SelectDateWidget(None, years_list) )
def __init__(self, request, *args, **kwargs): super(RenewExpForm, self).__init__(request, *args, **kwargs) self.fields['userid'] = forms.CharField( label=_("User ID"), widget=HiddenInput ) for item in kwargs['initial']: if item.startswith('prj_'): self.fields[item] = forms.DateTimeField( label="%s %s" % (_("Project"), item[4:]), widget=SelectDateWidget(None, get_year_list()) )
def __init__(self, request, *args, **kwargs): super(GuestCheckForm, self).__init__(request, *args, **kwargs) self.fields['regid'] = forms.IntegerField(widget=HiddenInput) self.fields['username'] = forms.CharField( label=_("User name"), required=False, max_length=OS_LNAME_LEN ) curr_year = datetime.now().year self.fields['expiration'] = forms.DateTimeField( label=_("Expiration date"), required=False, widget=SelectDateWidget(None, range(curr_year, curr_year + 25)) )
def __init__(self, request, *args, **kwargs): super(GrantAllForm, self).__init__(request, *args, **kwargs) curr_year = datetime.now().year self.fields['expiration'] = forms.DateTimeField( label=_("Expiration date"), required=True, widget=SelectDateWidget(None, range(curr_year, curr_year + 25))) self.fields['rename'] = forms.CharField(label=_('Project name'), max_length=OS_SNAME_LEN) self.fields['newdescr'] = forms.CharField( label=_("Project description"), required=False, widget=forms.widgets.Textarea()) add_unit_combos(self)
class MediaUpdateForm(forms.Form): id = forms.IntegerField(min_value=1) title = forms.CharField(max_length=128, required=False) subtitle = forms.CharField(max_length=128, required=False) description = forms.CharField(required=False) template_type = forms.ChoiceField(choices=((1, 1), (2, 2)), required=False) # 标签:数据格式为JSON字符串,如:[1, 2, 3] (值为标签ID) tags = forms.CharField(required=False) # 资源热度 temperature = forms.FloatField(min_value=0.1, max_value=10.0, required=False) # 票房预测 box_office_forecast = forms.FloatField(min_value=0.1, max_value=5.0, required=False) # 口碑预测 public_praise_forecast = forms.FloatField(min_value=0.1, max_value=5.0, required=False) # ROI 投资回报比 例如:1:5 (1比5) roi = forms.CharField(max_length=10, required=False) # 题材类别 theme_type_id = forms.IntegerField(min_value=1, required=False) # 项目进度 progress_id = forms.IntegerField(min_value=1, required=False) # 资源概述 数据格式为字典形式的JSON字符串,如:{"导演": "冯小刚, 吴宇森", # "主演": "成龙, 李连杰", # "出演": "巩俐, 章子怡", ......} media_outline = forms.CharField(required=False) # 预计上映/播出时间 air_time = forms.DateTimeField(required=False) # 运营标记 0: 未设定 1:热门 mark = forms.ChoiceField(choices=((0, 1), (1, 2)), required=False) # 电影表现大数据分析 数据格式为字典形式的JSON字符串,如:{"导演号召力": 3.5, # "男主角号召力": 4.0, # "女主角号召力": 4.2, # "类型关注度": 3.8, # "片方指数": 3.7} film_performance = forms.CharField(max_length=512, required=False) picture = forms.ImageField(required=False)
def __init__(self, request, *args, **kwargs): super(NewProjectCheckForm, self).__init__(request, *args, **kwargs) self.fields['newname'] = forms.CharField(label=_('Project name'), max_length=OS_SNAME_LEN) self.fields['newdescr'] = forms.CharField( label=_("Project description"), required=False, widget=forms.widgets.Textarea()) self.fields['requestid'] = forms.CharField(widget=HiddenInput) curr_year = datetime.now().year years_list = range(curr_year, curr_year + 25) self.fields['expiration'] = forms.DateTimeField( label=_("Administrator expiration date"), widget=SelectDateWidget(None, years_list)) add_unit_combos(self)
def __init__(self, request, *args, **kwargs): super(ReactivateForm, self).__init__(request, *args, **kwargs) self.fields['userid'] = forms.CharField( label=_("User ID"), widget=HiddenInput ) self.fields['expdate'] = forms.DateTimeField( label="Expiration date", widget=SelectDateWidget(None, get_year_list()) ) self.fields['projects'] = forms.MultipleChoiceField( label=_('Available projects'), required=True, widget=forms.SelectMultiple(attrs={'class': 'switched'}) ) avail_prjs = list() for prj_entry in Project.objects.all(): avail_prjs.append((prj_entry.projectname, prj_entry.projectname)) self.fields['projects'].choices = avail_prjs
class MediaInputForm(forms.Form): title = forms.CharField(max_length=128) subtitle = forms.CharField(max_length=128) description = forms.CharField(required=False) template_type = forms.ChoiceField(choices=((1, 1), (2, 2)), error_messages={ 'required': 'Template type must in [1, 2]' }, required=False) # 标签:数据格式为JSON字符串,如:[1, 2, 3] (值为标签ID) tags = forms.CharField() # 资源热度 temperature = forms.FloatField(min_value=0.1, max_value=10.0) # 票房预测 box_office_forecast = forms.FloatField(min_value=0.1, max_value=5.0) # 口碑预测 public_praise_forecast = forms.FloatField(min_value=0.1, max_value=5.0) # ROI 投资回报比 例如:1:5 (1比5) roi = forms.CharField(max_length=10) # # 资源类型 # media_type_id = forms.IntegerField(min_value=1) # 题材类别 theme_type_id = forms.IntegerField(min_value=1) # 项目进度 progress_id = forms.IntegerField(min_value=1) # # 导演:数据格式为JSON字符串,如:['斯皮尔伯格', '冯小刚'] # director = forms.CharField(max_length=256) # # 主演:数据格式为JSON字符串,如:['汤姆克鲁斯', '威尔史密斯', '皮尔斯布鲁斯南'] # stars = forms.CharField(max_length=256) # # 演员:数据格式为JSON字符串,如:['王晓霞', '詹姆斯', '韦德'] # actors = forms.CharField(max_length=256) # # 监制:数据格式为JSON字符串,如:['欧文'] # producer = forms.CharField(max_length=256) # # 出品公司:数据格式为JSON字符串,如:['华文映像', '福星传媒'] # production_company = forms.CharField(max_length=256) # # # 预计开机/录制时间 # recorded_time = forms.DateTimeField() # 资源概述 数据格式为字典形式的JSON字符串,如:{"导演": "冯小刚, 吴宇森", # "主演": "成龙, 李连杰", # "出演": "巩俐, 章子怡", ......} media_outline = forms.CharField(required=False) # 预计上映/播出时间 air_time = forms.DateTimeField() # # 预计播出平台:数据格式为JSON字符串,如:['一线卫视', '视频网络渠道'] # play_platform = forms.CharField(max_length=256) # 运营标记 0: 未设定 1:热门 mark = forms.ChoiceField(choices=((0, 1), (1, 2)), error_messages={ 'required': 'mark must in [0, 1]' }) # 电影表现大数据分析 数据格式为字典形式的JSON字符串,如:{"导演号召力": 3.5, # "男主角号召力": 4.0, # "女主角号召力": 4.2, # "类型关注度": 3.8, # "片方指数": 3.7} film_performance = forms.CharField(max_length=512, required=False) picture = forms.ImageField(required=False)
class CreateForm(forms.SelfHandlingForm): # General fields name = forms.CharField(label=_("Lease Name"), required=True, max_length=80) start_date = forms.DateTimeField( label=_("Start Date"), required=False, help_text=_('Enter YYYY-MM-DD HH:MM or blank for now'), input_formats=['%Y-%m-%d %H:%M'], widget=forms.DateTimeInput( attrs={'placeholder': 'YYYY-MM-DD HH:MM (blank for now)'})) end_date = forms.DateTimeField( label=_("End Date"), required=False, help_text=_('Enter YYYY-MM-DD HH:MM or blank for Start Date + 24h'), input_formats=['%Y-%m-%d %H:%M'], widget=forms.DateTimeInput( attrs={ 'placeholder': 'YYYY-MM-DD HH:MM (blank for Start Date + ' '24h)' })) resource_type = forms.ChoiceField( label=_("Resource Type"), required=True, choices=(('host', _('Physical Host')), ('instance', _('Virtual Instance'))), widget=forms.ThemableSelectWidget(attrs={ 'class': 'switchable', 'data-slug': 'source' })) # Fields for host reservation min_hosts = forms.IntegerField( label=_('Minimum Number of Hosts'), required=False, help_text=_('Enter the minimum number of hosts to reserve.'), min_value=1, initial=1, widget=forms.NumberInput( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-host': _('Minimum Number of Hosts') })) max_hosts = forms.IntegerField( label=_('Maximum Number of Hosts'), required=False, help_text=_('Enter the maximum number of hosts to reserve.'), min_value=1, initial=1, widget=forms.NumberInput( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-host': _('Maximum Number of Hosts') })) hypervisor_properties = forms.CharField( label=_("Hypervisor Properties"), required=False, help_text=_('Enter properties of a hypervisor to reserve.'), max_length=255, widget=forms.TextInput( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-host': _('Hypervisor Properties'), 'placeholder': 'e.g. [">=", "$vcpus", "2"]' })) # Fields for instance reservation amount = forms.IntegerField( label=_('Instance Count'), required=False, help_text=_('Enter the number of instances to reserve.'), min_value=1, initial=1, widget=forms.NumberInput( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-instance': _('Instance Count') })) vcpus = forms.IntegerField( label=_('Number of VCPUs'), required=False, help_text=_('Enter the number of VCPUs per instance.'), min_value=1, initial=1, widget=forms.NumberInput( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-instance': _('Number of VCPUs') })) memory_mb = forms.IntegerField( label=_('RAM (MB)'), required=False, help_text=_('Enter the size of RAM (MB) per instance'), min_value=1, initial=1, widget=forms.NumberInput( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-instance': _('RAM (MB)') })) disk_gb = forms.IntegerField( label=_('Root Disk (GB)'), required=False, help_text=_('Enter the root disk size (GB) per instance'), min_value=0, initial=0, widget=forms.NumberInput( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-instance': _('Root Disk (GB)') })) affinity = forms.ChoiceField( label=_("Affinity Rule"), required=False, choices=( (None, _('None')), (True, _('Affinity')), (False, _('Anti-Affinity')), ), initial=None, widget=forms.ThemableSelectWidget( attrs={ 'class': 'switched', 'data-switch-on': 'source', 'data-source-instance': _('Affinity Rule') })) # Fields for both of host and instance reservations resource_properties = forms.CharField( label=_("Resource Properties"), required=False, help_text=_('Enter properties of a resource to reserve.'), max_length=255, widget=forms.TextInput( attrs={'placeholder': 'e.g. ["==", "$extra_key", "extra_value"]'})) def handle(self, request, data): if data['resource_type'] == 'host': reservations = [{ 'resource_type': 'physical:host', 'min': data['min_hosts'], 'max': data['max_hosts'], 'hypervisor_properties': (data['hypervisor_properties'] or ''), 'resource_properties': data['resource_properties'] or '' }] elif data['resource_type'] == 'instance': reservations = [{ 'resource_type': 'virtual:instance', 'amount': data['amount'], 'vcpus': data['vcpus'], 'memory_mb': data['memory_mb'], 'disk_gb': data['disk_gb'], 'affinity': data['affinity'], 'resource_properties': data['resource_properties'] or '' }] events = [] try: api.client.lease_create( request, data['name'], data['start_date'].strftime('%Y-%m-%d %H:%M'), data['end_date'].strftime('%Y-%m-%d %H:%M'), reservations, events) messages.success( request, _('Lease %s was successfully ' 'created.') % data['name']) return True except Exception as e: LOG.error('Error submitting lease: %s', e) exceptions.handle(request, message='An error occurred while creating this ' 'lease. Please try again.') def clean(self): cleaned_data = super(CreateForm, self).clean() local = timezone( self.request.session.get( 'django_timezone', self.request.COOKIES.get('django_timezone', 'UTC'))) if cleaned_data['start_date']: cleaned_data['start_date'] = local.localize( cleaned_data['start_date'].replace(tzinfo=None)).astimezone( timezone('UTC')) else: cleaned_data['start_date'] = datetime.datetime.utcnow() if cleaned_data['end_date']: cleaned_data['end_date'] = local.localize( cleaned_data['end_date'].replace(tzinfo=None)).astimezone( timezone('UTC')) else: cleaned_data['end_date'] = (cleaned_data['start_date'] + datetime.timedelta(days=1))