示例#1
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = DigitalObject
     widgets = {
         'related_production':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=ProductionLookup, attrs={'size': '100'}),
         'related_festival':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=FestivalOccurrenceLookup, attrs={'size': '100'}),
         'related_venue':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=LocationLookup, attrs={'size': '100'}),
         'related_work':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=WorkRecordLookup, attrs={'size': '100'}),
         'related_award':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=AwardCandidateLookup, attrs={'size': '100'}),
         'collection':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CollectionLookup, attrs={'size': '100'}),
         'object_creator':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '100'}),
         'phys_obj_city':
         selectable_forms.AutoCompleteSelectWidget(lookup_class=CityLookup,
                                                   attrs={'size': '100'}),
     }
示例#2
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = CastMember
     widgets = {
         'person':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '100'}),
         'role':
         selectable_forms.AutoCompleteSelectWidget(lookup_class=RoleLookup,
                                                   attrs={'size': '60'}),
     }
示例#3
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = Location
     widgets = {
         'city':
         selectable_forms.AutoCompleteSelectWidget(lookup_class=CityLookup,
                                                   attrs={'size': '100'}),
         'country':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CountryLookup, attrs={'size': '100'}),
         'photo':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=DigitalObjectLookup, attrs={'size': '100'}),
     }
示例#4
0
 class Meta(object):
     model = Encuesta
     fields = '__all__'
     widgets = {
         'entrevistado':
         selectable.AutoCompleteSelectWidget(lookup_class=ProductorLookup),
     }
示例#5
0
 class Meta:
     model = Profile
     fields = ('__all__')
     widgets = {
         'user':
         selectable.AutoCompleteSelectWidget(lookup_class=UserLookup),
     }
示例#6
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = Role
     widgets = {
         'source_text':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=WorkRecordLookup, attrs={'size': '100'}),
     }
示例#7
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = RelatedWork
     widgets = {
         'second_work':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=WorkRecordLookup, attrs={'size': '100'}),
     }
示例#8
0
class VenueForm(forms.ModelForm):
    name = forms.CharField(required=True, max_length=255, min_length=3)
    city = forms.CharField(widget=selectable.AutoCompleteSelectWidget(
        CityLookup, allow_new=True),
                           required=False)
    city_identifier = forms.CharField(required=False,
                                      widget=forms.widgets.HiddenInput())
    location = forms.Field(widget=LocationWidget(), required=False)

    class Meta:
        model = Venue
        fields = ['name', 'street', 'street_number', 'location']

    def __init__(self, **kwargs):
        if 'instance' in kwargs and kwargs['instance']:
            initial = kwargs['initial'] if 'initial' in kwargs else {}
            if 'city_identifier' not in initial:
                initial['city_identifier'] = kwargs['instance'].city.id

            if 'city' not in initial:
                initial['city'] = kwargs['instance'].city

            kwargs['initial'] = initial

        super(VenueForm, self).__init__(**kwargs)
示例#9
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = RelatedCreator
     widgets = {
         'second_creator':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '60'}),
     }
示例#10
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = Stage
     widgets = {
         'venue':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=LocationLookup, attrs={'size': '100'}),
     }
示例#11
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = DigitalObject_Related_Creator
     widgets = {
         'creator':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '100'}),
     }
示例#12
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = City
     widgets = {
         'country':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CountryLookup, attrs={'size': '100'}),
     }
示例#13
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = DirectingMember
     widgets = {
         'person':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '100'})
     }
示例#14
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = WorkRecordCreator
     widgets = {
         'creator':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '100'}),
     }
示例#15
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = FestivalParticipant
     widgets = {
         'participant':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '100'}),
     }
示例#16
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = Repository
     widgets = {
         'location':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=LocationLookup, attrs={'size': '100'})
     }
示例#17
0
 class Meta(object):
     model = Team
     exclude = (
         'request_text',
         'approved',
     )
     widgets = {
         'user':
         selectable.AutoCompleteSelectWidget(lookup_class=UserLookup)
     }
示例#18
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = WorkRecord
     widgets = {
         'digital_copy':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=DigitalObjectLookup, attrs={'size': '60'}),
         'primary_publications':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=PublicationLookup, attrs={'size': '100'}),
         'secondary_publications':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=PublicationLookup, attrs={'size': '100'}),
     }
示例#19
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = Production
     widgets = \
        {'source_work':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=WorkRecordLookup, attrs={'size':'100'}),
         'venue':selectable_forms.AutoCompleteSelectWidget(
             lookup_class=LocationLookup, attrs={'size':'100'}),
         'primary_publications': \
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=PublicationLookup, attrs={'size':'100'}),
         'secondary_publications': \
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=PublicationLookup, attrs={'size':'100'}),}
示例#20
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = Creator
     widgets = {
         'birth_city': selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CityLookup,
             attrs={'size':'60'}),
         'death_city': selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CityLookup,
             attrs={'size':'60'}),
         'nationality': selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CountryLookup,
             attrs={'size':'60'}),
         'headquarter_city': selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CityLookup,
             attrs={'size':'60'}),
         'photo': selectable_forms.AutoCompleteSelectWidget(
             lookup_class=DigitalObjectLookup,
             attrs={'size':'60'}),
         'primary_publications': \
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=PublicationLookup, attrs={'size':'100'}),
         'secondary_publications':
             selectable_forms.AutoCompleteSelectMultipleWidget(
                 lookup_class=PublicationLookup, attrs={'size':'100'}),}
示例#21
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = FestivalOccurrence
     widgets = {
         'festival_series':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=FestivalLookup, attrs={'size': '100'}),
         'venue':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=LocationLookup, attrs={'size': '100'}),
         'productions':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=ProductionLookup, attrs={'size': '100'}),
         'primary_publications':
         selectable_forms.AutoCompleteSelectMultipleWidget(
             lookup_class=PublicationLookup, attrs={'size': '100'}),
     }
示例#22
0
文件: forms.py 项目: umdsp/romeu
 class Meta(object):
     model = AwardCandidate
     widgets = {
         'award':
         selectable_forms.AutoCompleteSelectWidget(lookup_class=AwardLookup,
                                                   attrs={'size': '100'}),
         'recipient':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=CreatorLookup, attrs={'size': '100'}),
         'production':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=ProductionLookup, attrs={'size': '100'}),
         'place':
         selectable_forms.AutoCompleteSelectWidget(lookup_class=CityLookup,
                                                   attrs={'size': '100'}),
         'festival':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=FestivalLookup, attrs={'size': '100'}),
         'work_record':
         selectable_forms.AutoCompleteSelectWidget(
             lookup_class=WorkRecordLookup, attrs={'size': '100'}),
     }
示例#23
0
文件: sampleForms.py 项目: udp/rotmic
class CellSampleForm( SampleForm ):
    """Customized Form for CellSample add / change"""
    
    cellCategory = forms.ModelChoiceField(label='In Species',
                            queryset=M.CellComponentType.objects.filter(subTypeOf=None),
                            required=False, 
                            empty_label=None,
                            initial=T.ccEcoli)
    
    cellType = forms.ModelChoiceField(label='Strain',
                            queryset=M.CellComponentType.objects.exclude(subTypeOf=None),
                            required=False,
                            empty_label=None,
                            initial=T.ccMach1)
    
    plasmid = sforms.AutoCompleteSelectField(label='Plasmid',
                            lookup_class=L.PlasmidLookup,
                            required=False,
                            help_text='start typing ID or name of plasmid...',
                            widget=sforms.AutoCompleteSelectWidget(lookup_class=L.PlasmidLookup,
                                                        allow_new=False,
                                                        attrs={'size':35}),)

    
    def __init__(self, *args, **kwargs):
        super(CellSampleForm, self).__init__(*args, **kwargs)

        ## keep constraint on DB level but allow user to specify via plasmid+type
        self.fields['cell'].required = False

        o = kwargs.get('instance', None)
        if o:
            self.fields['cellCategory'].initial = o.cell.componentType.category()
            self.fields['cellType'].initial = o.cell.componentType
            self.fields['plasmid'].initial = o.cell.plasmid

    def clean(self):
        """
        Verify that cell or plasmid + strain are given, create new cell if needed.
        """
        super(CellSampleForm, self).clean()
        data = self.cleaned_data
        cell = data.get('cell', None)
        plasmid = data.get('plasmid', None)
        ctype = data.get('cellType', None)
        
        if not cell and not (plasmid and ctype):
            msg = u'Please specify either an existing cell or a plasmid and strain.'
            self._errors['cell'] = self.error_class([msg])
            try: 
                del data['cell'] ## needed to really stop form saving
            except: 
                pass
            
        elif plasmid and cell:
            if plasmid != cell.plasmid:
                msg = u'Given plasmid does not match selected cell record. Remove one or the other.'
                self._errors['plasmid'] = self.error_class([msg])
                del data['plasmid']
            if ctype != cell.componentType:
                msg = u'Given strain does not match selected cell record. Clear either plasmid or cell selection.'
                self._errors['cellType'] = self.error_class([msg])
                del data['cellType']
            
        if (not cell) and plasmid:
            
            existing = M.CellComponent.objects.filter(plasmid=plasmid,
                                                    componentType=ctype)
            if existing.count():
                data['cell'] = existing.all()[0]
                messages.success(self.request, 
                                 'Attached existing cell record %s (%s) to sample.'\
                                 % (data['cell'].displayId, data['cell'].name))
            
            else:
                newcell = M.CellComponent(componentType=ctype,
                                        plasmid=plasmid,
                                        displayId=M.CellComponent.nextAvailableId(self.request.user),
                                        registeredBy = self.request.user,
                                        registeredAt = datetime.datetime.now(),
                                        name = plasmid.name + '@' + ctype.name,
                                        )
                newcell.save()
                ## Many2Many relationships can only be created after save
                newcell.authors = [self.request.user]
                newcell.projects = plasmid.projects.all()
                newcell.save()
                
                data['cell'] = newcell
                messages.success(self.request,
                                 'Created new cell record %s (%s)' %\
                                 (newcell.displayId, newcell.name))

        return data
    
    
    class Meta:
        model = M.CellSample
        widgets = getSampleWidgets( \
            {'cell': sforms.AutoComboboxSelectWidget(lookup_class=L.SampleCellLookup,
                                                    allow_new=False,
                                                    attrs={'size':35}),
             })
示例#24
0
class VenueAccountForm(forms.ModelForm):
    # There will be three modes, how we will detect wich venue user choose
    # SUGGEST - when user can not found venue in google autocomplete he can suggest new venue
    # GOOGLE - user can choose venue with help of google autocomplete widget
    # EXIST - user can choose also from venues that already exist on cityfusion
    linking_venue_mode = forms.CharField(required=True,
                                         widget=forms.widgets.HiddenInput())

    place = JSONCharField(widget=GeoCompleteWidget(), required=False)

    location = forms.Field(widget=LocationWidget(), required=False)
    venue_identifier = forms.CharField(required=False,
                                       widget=forms.widgets.HiddenInput())
    venue_name = forms.CharField(required=False, max_length=50, min_length=3)
    street = forms.CharField(required=False)
    street_number = forms.CharField(required=False)
    city = forms.CharField(widget=selectable.AutoCompleteSelectWidget(
        CityLookup, allow_new=True),
                           required=False)
    city_identifier = forms.CharField(required=False,
                                      widget=forms.widgets.HiddenInput())

    picture_src = forms.CharField(widget=AjaxCropWidget(), required=False)

    types = forms.ModelMultipleChoiceField(
        widget=forms.CheckboxSelectMultiple,
        queryset=VenueType.active_types.all(),
        required=False)

    phone = CAPhoneNumberField(required=False)
    fax = CAPhoneNumberField(required=False)
    about = RichTextFormField(required=False)

    tags = TagField(widget=VenueTagAutoSuggest(), required=False)

    social_links = forms.CharField(required=False,
                                   widget=forms.widgets.HiddenInput())

    class Meta:
        model = VenueAccount

        fields = ('phone', 'fax', 'email', 'site', 'facebook', 'myspace',
                  'twitter', 'about', 'cropping', 'types', 'tags')

    def clean_tags(self):
        tags = self.cleaned_data['tags']
        if len(tags) > 10:
            raise forms.ValidationError(
                "I'm sorry, but 10 tags is the maximum amount per event.")
        return tags

    def clean_social_links(self):
        if not self.cleaned_data["social_links"]:
            return []

        social_links = json.loads(
            self.cleaned_data["social_links"])["social_links"]

        for social_link in social_links:
            if not social_link["title"]:
                raise forms.ValidationError("Title is required")
            if not social_link["url"]:
                raise forms.ValidationError("Url is required")

            validators.URLValidator(message="Enter a valid URL.")(
                social_link["url"])

        return social_links

    def clean(self):
        cleaned_data = self.cleaned_data

        if "linking_venue_mode" in cleaned_data:
            linking_venue_mode = cleaned_data["linking_venue_mode"]
        else:
            linking_venue_mode = None

        if not linking_venue_mode:
            raise forms.ValidationError(u'Please specify venue')

        if linking_venue_mode == "SUGGEST":
            if not cleaned_data["venue_name"]:
                raise forms.ValidationError(u'Please specify venue name')

            if not cleaned_data["city_identifier"]:
                self.city_required = True
                raise forms.ValidationError(u'Pleace specify city')

            if not cleaned_data["location"]:
                raise forms.ValidationError(
                    u'Please specify location on the map')

        if linking_venue_mode == "GOOGLE":
            place = cleaned_data["place"]

            if not place["city"]:
                raise forms.ValidationError(
                    u'Please select at least a city or town name')
            if not place["venue"] or \
               not place["latitude"] or \
               not place["longtitude"]:
                raise forms.ValidationError(
                    u'Location that you choose is invalid, please, choose another one'
                )

        if linking_venue_mode == "EXIST":
            pass

        return cleaned_data

    def save(self, *args, **kwargs):
        venue_account = super(VenueAccountForm, self).save(*args, **kwargs)
        venue_account.venueaccountsociallink_set.all().delete()

        social_links = self.cleaned_data["social_links"]

        for social_link in social_links:
            VenueAccountSocialLink.objects.create(title=social_link["title"],
                                                  link=social_link["url"],
                                                  venue_account=venue_account)

        return venue_account
示例#25
0
 class Meta(object):
     model = Finca
     widgets = {
         'nombre_productor':
         selectable.AutoCompleteSelectWidget(lookup_class=ProductorLookup),
     }
示例#26
0
文件: forms.py 项目: whiplash01/39A
 class Meta(object):
     model = Lead
     widgets = {
         'lead':
         selectable.AutoCompleteSelectWidget(lookup_class=UserLookup)
     }
示例#27
0
class EditEventForm(forms.ModelForm):
    class Meta:
        model = Event
        exclude = ('owner', 'authentication_key', 'slug', 'email',
                   'facebook_event')

    # There will be four modes, how we will detect wich venue user choose
    # SUGGEST - when user can not found venue in google autocomplete he can suggest new venue
    # GOOGLE - user can choose venue with help of google autocomplete widget
    # OWNER - when user choose venue as owner of event, we can use this venue by default
    # EXIST - user can choose also from venues that already exist on cityfusion
    linking_venue_mode = forms.CharField(required=True,
                                         widget=forms.widgets.HiddenInput())

    place = JSONCharField(widget=GeoCompleteWidget(), required=False)

    location = forms.Field(widget=LocationWidget(), required=False)
    venue_identifier = forms.CharField(required=False,
                                       widget=forms.widgets.HiddenInput())
    venue_name = forms.CharField(required=False)
    street = forms.CharField(required=False)
    city = forms.CharField(widget=selectable.AutoCompleteSelectWidget(
        CityLookup, allow_new=True),
                           required=False)
    city_identifier = forms.CharField(required=False,
                                      widget=forms.widgets.HiddenInput())

    when = forms.CharField(widget=WhenWidget(), required=True)
    when_json = forms.CharField(required=True,
                                widget=forms.widgets.HiddenInput())

    occurrences_json = forms.CharField(required=False,
                                       widget=forms.widgets.HiddenInput())

    # SINGLE
    # MULTIDAY
    event_type = forms.CharField(required=True,
                                 widget=forms.widgets.HiddenInput())

    description = RichTextFormField(required=False)

    description_json = forms.CharField(required=True,
                                       widget=forms.widgets.HiddenInput())

    attachments = forms.CharField(widget=AttachmentsWidget(), required=False)

    price = forms.CharField(required=False, initial="$")

    images = forms.CharField(widget=EventImagesWidget(), required=False)

    website = forms.URLField(required=False)
    tickets = forms.CharField(required=False)

    def __init__(self, account, *args, **kwargs):
        self.city_required = False
        created_by_admin = kwargs.pop('by_admin', False)
        super(EditEventForm, self).__init__(*args, **kwargs)

        self.fields['venue_account_owner'].widget = ChooseUserContextWidget(
            account, by_admin=created_by_admin)

        if 'email' in self.fields:
            self.fields['email'].widget = HTML5EmailInput(
                attrs={'class': 'text wide'})
            self.fields['email'].label = _(u'Email Address')

        self.fields['name'].widget.attrs['tabindex'] = 1
        self.fields['name'].error_messages[
            'required'] = 'Event name is required'
        self.fields['name'].label = _(u'Event Name')

        self.fields['linking_venue_mode'].error_messages[
            'required'] = 'Your event cannot miss a location'

        self.fields['place'].error_messages[
            'required'] = 'Your event cannot miss a location'
        self.fields['place'].label = _(u'Location')
        self.fields['place'].widget.attrs['tabindex'] = 2

        # Suggest venue popup

        self.fields['city'].error_messages[
            'required'] = 'Your event cannot miss a city'
        self.fields['city'].label = _(u'City')

        self.fields['when'].widget.attrs['readonly'] = True
        self.fields['when'].widget.attrs['placeholder'] = "Click to select"
        self.fields['when'].error_messages[
            'required'] = 'Please choose at least one date'

        self.fields['when_json'].error_messages[
            'required'] = 'Please choose at least one date'

        self.fields['price'].widget.attrs['tabindex'] = 3

        self.fields['description'].widget = forms.widgets.Textarea(
            attrs={
                'class': 'textarea',
                'tabindex': 4
            })

        self.fields['website'].widget.attrs['tabindex'] = 5
        self.fields['website'].error_messages[
            'invalid'] = 'Enter a valid website url'

        self.fields['tickets'].widget.attrs['tabindex'] = 6

        self.fields['tags'].error_messages[
            'required'] = 'Please enter at least one tag'
        self.fields['tags'].widget.attrs['tabindex'] = 7

    def clean(self):
        cleaned_data = self.cleaned_data
        if 'tags' in cleaned_data:
            cleaned_data['tags'] = map(string.capwords, cleaned_data['tags'])

        if "linking_venue_mode" in cleaned_data:
            linking_venue_mode = cleaned_data["linking_venue_mode"]
        else:
            linking_venue_mode = None

        if not linking_venue_mode:
            raise forms.ValidationError(u'Please specify venue')

        if linking_venue_mode == "SUGGEST":
            if not cleaned_data["venue_name"]:
                raise forms.ValidationError(u'Please specify venue name')

            if not cleaned_data["city_identifier"]:
                self.city_required = True
                raise forms.ValidationError(u'Pleace specify city')

            if not cleaned_data["location"]:
                raise forms.ValidationError(
                    u'Please specify location on the map')

        if linking_venue_mode == "GOOGLE":
            place = cleaned_data["place"]

            if not place["city"]:
                raise forms.ValidationError(
                    u'Please select at least a city or town name')
            if not place["venue"] or \
               not place["latitude"] or \
               not place["longtitude"]:
                raise forms.ValidationError(
                    u'Location that you choose is invalid, please, choose another one'
                )

        if linking_venue_mode == "OWNER":
            pass

        if linking_venue_mode == "EXIST":
            pass

        return cleaned_data

    def clean_tags(self):
        tags = self.cleaned_data['tags']
        if len(tags) > 10:
            raise forms.ValidationError(
                "I'm sorry, but 10 tags is the maximum amount per event.")
        return tags

    def clean_when_json(self):
        when_json = json.loads(self.cleaned_data["when_json"])

        for year, months in when_json.iteritems():
            for month, days in months.iteritems():
                for day, times in days.iteritems():
                    try:
                        dateparser.parse(times["start"])
                    except:
                        raise forms.ValidationError(
                            "%s is not valid start time. Please use right format"
                            % times["start"])

                    try:
                        dateparser.parse(times["end"])
                    except:
                        raise forms.ValidationError(
                            "%s is not valid end time. Please use right format"
                            % times["end"])