Skip to content
Snippets Groups Projects
Select Git revision
  • 5dd502e0893e91cf2faab781f4b72a91cd14b15d
  • master default protected
  • quickstart
  • inheritance-v2
  • staging-playground
  • staging-test
  • voevent_fixes
  • hw-inj
  • py310
  • fs-fix
  • free-name-GWs
  • no-massgap-voevent
  • send-async-alerts
  • superevent-log-inheritance
  • response-then-logs
  • catalog-dev
  • alert-improvements
  • histogram
  • S_event_neighbours
  • no_massgap_voevent
  • new_event_superevent_types
  • gracedb-2.18.1
  • gracedb-2.18.0
  • gracedb-2.17.2
  • gracedb-2.17.1
  • gracedb-2.17.0
  • gracedb-2.16.3
  • gracedb-2.16.2
  • gracedb-2.16.1
  • gracedb-2.16.0
  • gracedb-2.15.0
  • gracedb-2.14.3
  • gracedb-2.14.1
  • gracedb-2.14.0
  • gracedb-2.13.0-2
  • gracedb-2.13.0-1
  • gracedb-2.13.0
  • gracedb-2.12.0
  • gracedb-2.12.1
  • gracedb-2.11.1-2
  • gracedb-2.11.1-1
41 results

forms.py

Blame
  • Tanner Prestegard's avatar
    Tanner Prestegard authored and Alexander Pace committed
    5dd502e0
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    forms.py 1.73 KiB
    from django import forms
    from models import Trigger, Contact
    
    from gracedb.query import parseLabelQuery
    from gracedb.pyparsing import ParseException
    
    def triggerFormFactory(postdata=None, user=None):
        class TF(forms.ModelForm):
            farThresh = forms.FloatField(label='FAR Threshold (Hz)', required=False,
                    help_text="Leave blank to recieve all events, regardless of FAR.")
            class Meta:
                model = Trigger
                exclude = ['user', 'triggerType']
                widgets = {'label_query': forms.TextInput(attrs={'size': 50})} 
    
            contacts = forms.ModelMultipleChoiceField(
                            queryset=Contact.objects.filter(user=user),
                            required=False
                            )
    
            # XXX should probably override is_valid and check for
            # truth of (atypes or labels)
            # and set field error attributes appropriately.
    
            def clean(self):
                cleaned_data = super(TF, self).clean()
                label_query = self.cleaned_data['label_query']
                if len(label_query) > 0:
                    # now try parsing it
                    try:
                        parseLabelQuery(label_query)
                    except ParseException:
                        raise forms.ValidationError("Invalid label query.")
                return cleaned_data
    
        if postdata is not None:
            return TF(postdata)
        else:
            return TF()
    
    class TriggerForm(forms.ModelForm):
        class Meta:
            model = Trigger
            exclude = ['user', 'triggerType']
    
    class ContactForm(forms.ModelForm):
        class Meta:
            model = Contact
            fields = ['desc','email','phone']
            help_texts = {
                'phone': 'Prototype service: may not be available in the future.'
            }