示例#1
0
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.")
示例#2
0
    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))
        )
示例#3
0
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
示例#4
0
    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))
示例#5
0
    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())
                )
示例#7
0
    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))
        )
示例#8
0
    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)
示例#9
0
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)
示例#10
0
    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
示例#12
0
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)
示例#13
0
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))