~allenap/maas/ucs-runner-prep

« back to all changes in this revision

Viewing changes to src/maasserver/forms.py

  • Committer: Tarmac
  • Author(s): Raphael Badin
  • Date: 2012-12-04 10:06:52 UTC
  • mfrom: (1388.3.3 com-script-ui)
  • Revision ID: tarmac-20121204100652-3m6vyo4yscskriew
[r=benji][bug=][author=rvb] UI to manage (add & delete) commissioning scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
__all__ = [
14
14
    "AdminNodeWithMACAddressesForm",
15
15
    "CommissioningForm",
 
16
    "CommissioningScriptForm",
16
17
    "get_action_form",
17
18
    "get_node_edit_form",
18
19
    "get_node_create_form",
81
82
from maasserver.node_action import compile_node_actions
82
83
from maasserver.power_parameters import POWER_TYPE_PARAMETERS
83
84
from maasserver.utils import strip_domain
 
85
from metadataserver.fields import Bin
 
86
from metadataserver.models import CommissioningScript
84
87
from provisioningserver.enum import (
85
88
    POWER_TYPE,
86
89
    POWER_TYPE_CHOICES,
614
617
 
615
618
 
616
619
class CommissioningForm(ConfigForm):
617
 
    """Settings page, CommissioningF section."""
 
620
    """Settings page, Commissioning section."""
618
621
    check_compatibility = forms.BooleanField(
619
622
        label="Check component compatibility and certification",
620
623
        required=False)
863
866
            msg = 'Invalid xpath expression: %s' % (e,)
864
867
            raise ValidationError({'definition': [msg]})
865
868
        return definition
 
869
 
 
870
 
 
871
class CommissioningScriptForm(forms.Form):
 
872
 
 
873
    content = forms.FileField(
 
874
        label="Commissioning script", allow_empty_file=False)
 
875
 
 
876
    def __init__(self, instance=None, *args, **kwargs):
 
877
        super(CommissioningScriptForm, self).__init__(*args, **kwargs)
 
878
 
 
879
    def clean_content(self):
 
880
        content = self.cleaned_data['content']
 
881
        name = content.name
 
882
        if CommissioningScript.objects.filter(name=name).exists():
 
883
            raise forms.ValidationError(
 
884
                "A script with that name already exists.")
 
885
        return content
 
886
 
 
887
    def save(self, *args, **kwargs):
 
888
        content = self.cleaned_data['content']
 
889
        CommissioningScript.objects.create(
 
890
            name=content.name,
 
891
            content=Bin(content.read()))