Example #1
0
    def test_render_nonimage(self):
        """
        ``ImageWidget`` renders the file input only, if given a non-image.

        """
        widget = ImageWidget()
        html = widget.render('fieldname', FieldFile(None, FileField(), 'something.txt'))
        self.assertHTMLEqual(html, '<input type="file" name="fieldname" />')
Example #2
0
    def test_render_nonimage(self):
        """
        ``ImageWidget`` renders the file input only, if given a non-image.

        """
        widget = ImageWidget()
        html = widget.render('fieldname', FieldFile(None, FileField(), 'something.txt'))
        self.assertHTMLEqual(html, '<input type="file" name="fieldname" value="something.txt" />')
Example #3
0
    def test_custom_template(self):
        """
        ``ImageWidget`` respects a custom template.

        """
        widget = ImageWidget(template='<div>%(image)s</div>'
                             '<div>%(input)s</div>')
        html = widget.render('fieldname', 'tiny.png')
        self.failUnless(html.startswith('<div><img src="/media/tiny'))
Example #4
0
    def test_custom_template(self):
        """
        ``ImageWidget`` respects a custom template.

        """
        widget = ImageWidget(template='<div>%(image)s</div>'
                             '<div>%(input)s</div>')
        html = widget.render('fieldname', ImageFieldFile(None, ImageField(), 'tiny.png'))
        self.assertTrue(html.startswith('<div><img'))
Example #5
0
    def test_custom_template(self):
        """
        ``ImageWidget`` respects a custom template.

        """
        widget = ImageWidget(template='<div>%(image)s</div>'
                             '<div>%(input)s</div>')
        html = widget.render('fieldname', ImageFieldFile(None, ImageField(), 'tiny.png'))
        self.assertTrue(html.startswith('<div><img'))
Example #6
0
    def test_render(self):
        """
        ``ImageWidget`` renders the file input and the image thumb.

        """
        widget = ImageWidget()
        html = widget.render('fieldname', ImageFieldFile(None, ImageField(), 'tiny.png'))
        # test only this much of the html, because the remainder will
        # vary depending on whether we have sorl-thumbnail
        self.assertTrue('<img' in html)
        self.assertTrue('/media/tiny' in html)
Example #7
0
    def test_render(self):
        """
        ``ImageWidget`` renders the file input and the image thumb.

        """
        widget = ImageWidget()
        html = widget.render('fieldname', ImageFieldFile(None, ImageField(), 'tiny.png'))
        # test only this much of the html, because the remainder will
        # vary depending on whether we have sorl-thumbnail
        self.assertTrue('<img' in html)
        self.assertTrue('/media/tiny' in html)
Example #8
0
    def test_render(self):
        """
        ``ImageWidget`` renders the file input and the image thumb.

        """
        widget = ImageWidget()
        html = widget.render('fieldname', ImageFieldFile(None, ImageField(), 'tiny.png'))
        # test only this much of the html, because the remainder will
        # vary depending on whether we have sorl-thumbnail
        self.assertTrue(html.startswith(
                '<input type="file" name="fieldname" value="tiny.png" />'
                '<br /><img src="/media/tiny'), html)
Example #9
0
 class Meta:
     model = Eestecer
     fieldsets = [
         ('Name', {
             'fields':
             ['first_name', 'middle_name', 'last_name', 'second_last_name']
         }),
         ('Additional Information', {
             'fields': [
                 'gender', 'date_of_birth', 'show_date_of_birth', 'email',
                 'thumbnail', 'field_of_study', 'curriculum_vitae'
             ]
         }),
         ('Contact Information', {
             'fields': ['hangouts', 'mobile', 'description', 'skype']
         }),
         ('Event Information', {
             'fields': [
                 'tshirt_size', 'passport_number', 'food_preferences',
                 'allergies'
             ]
         }),
         ('Administrative Information', {
             'fields': ['receive_eestec_active']
         }),
     ]
     widgets = {
         'date_of_birth':
         TextInput(attrs={'class': 'date'}),
         'description':
         EESTECEditor(include_jquery=False),
         'thumbnail':
         ImageWidget(template='<span>%(image)s<br />%(input)s</span>'),
     }
Example #10
0
    def test_custom_file_widget(self):
        """
        ``ClearableFileInput`` respects its ``file_widget`` argument.

        """
        widget = ClearableFileInput(file_widget=ImageWidget())
        html = widget.render('fieldname', ImageFieldFile(None, ImageField(), 'tiny.png'))
        self.assertTrue('<img' in html)
Example #11
0
 class Meta:
     model = Meal
     exclude = [
         'cook',
     ]
     widgets = {
         'image': ImageWidget(),
     }
Example #12
0
 class Meta:
     model = Ad
     widgets = {
         'start': DateWidget(usel10n=True, bootstrap_version=3),
         'end': DateWidget(usel10n=True, bootstrap_version=3),
         'image': ImageWidget()
     }
     exclude = ['id']
Example #13
0
    def test_custom_file_field_widget_used(self):
        """
        If we pass in our own ``file_field`` its widget is used for
        the internal file field.

        """
        widget = ImageWidget()
        file_field = forms.ImageField(widget=widget)
        field = ClearableFileField(file_field=file_field)
        self.assertTrue(field.fields[0].widget is widget)
Example #14
0
 class Meta:
     model = Job
     fields = [
         'title', 'url', 'organization', 'image', 'categories', 'approved',
         'include_in_newsletter', 'pub_date'
     ]
     widgets = {
         'pub_date': DateTimeWidget(usel10n=True, bootstrap_version=3),
         'image': ImageWidget(),
     }
     labels = job_field_labels
     help_texts = job_help_texts
Example #15
0
class EestecerChangeForm(UserChangeForm):
    """A form for updating users. Includes all the fields on
    the user, but replaces the password field with admin's
    password hash display field.
    """
    thumbnail = ImageField(widget=ImageWidget())

    def __init__(self, *args, **kargs):
        super(EestecerChangeForm, self).__init__(*args, **kargs)
        del self.fields['username']

    class Meta:
        model = Eestecer
Example #16
0
 def render(self, name, value, attrs=None):
     """
     Wrapper to super class render, providing a "no image" thumbnail when there's no picture,
     and getting the thumbnail image path if there's.
     """
     if not value:
         try:
             value = settings.DAG_NO_IMAGE[self.photo_size]
         except AttributeError:
             value = ""
     else:
         if isinstance(value, long):
             try:
                 value = Photo.objects.get(pk=value).image
             except Photo.DoesNotExist:
                 value = None
         if value:
             path_dir = os.path.dirname(value.name)
             extension = os.path.basename(value.name).split(".")[-1]
             filename = smart_unicode(os.path.basename(value.name).replace(".%s" % extension, ""))
             value.name = "%s/cache/%s_%s.%s" % (path_dir, filename, self.photo_size, extension)
     self.template = self.template % {"photo_label": _("Photo")}
     return ImageWidget.render(self, name, value, attrs=attrs)
Example #17
0
class EventImageInline(InlineFormSet):
    model = EventImage
    form_class = modelform_factory(EventImage,
                                   widgets={'image': ImageWidget()})
Example #18
0
class EventImages(EventMixin, DialogFormMixin, UpdateWithInlinesView):
    model = Event
    form_class = modelform_factory(Event, fields=('thumbnail',),
                                   widgets={'thumbnail': ImageWidget()})
    inlines = [EventImageInline]
Example #19
0
 class Meta:
     model = Image
     exclude = ('key', 'uploaded_by', 'date_created', 'date_updated')
     widgets = {
         'image': ImageWidget(),
     }
Example #20
0
 def __init__(self, photo_size, *args, **kwargs):
     self.photo_size = photo_size
     ImageWidget.__init__(self, template=self.template, *args, **kwargs)
Example #21
0
 class Meta:
     model = Team
     fields = ('thumbnail', )
     widgets = {'thumbnail': ImageWidget()}
Example #22
0
class LargeImagePreviewInChangeForm(object):
    formfield_overrides = {
        ImageField: {'widget': ImageWidget()},
    }
Example #23
0
 class Meta:
     model = MemberImage
     widgets = {'image': ImageWidget()}
Example #24
0
class EditFormSocio(RegistrationForm):
    first_name = forms.CharField(max_length=50, label=_(u'Nome'))
    last_name = forms.CharField(max_length=50, label=_(u'Cognome'))
    born_date = forms.DateField(input_formats=["%d/%m/%Y"],
                                label=_(u'Data di Nascita'))
    born_place = forms.CharField(max_length=50, label=_(u'Luogo di Nascita'))
    doc_type = forms.ChoiceField(choices=DOCUMENT_TYPES, label=_(u'Documento'))
    doc_id = forms.CharField(max_length=20, label=_(u'N documento'))

    username = forms.RegexField(
        regex=r'^[\w.@+-]+$',
        max_length=30,
        widget=forms.TextInput(),
        label=_("Username/Nickname"),
        error_messages={
            'invalid':
            _("Questo campo puo' contenere solo lettere, numeri e questi caratteri @/./+/-/_ "
              )
        })
    password1 = forms.CharField(widget=forms.PasswordInput(render_value=False),
                                label=_("Password"),
                                required=False)
    password2 = forms.CharField(widget=forms.PasswordInput(render_value=False),
                                label=_("Password (di nuovo)"),
                                required=False)

    photo = forms.ImageField(required=False,
                             label=_(u'Foto'),
                             widget=ImageWidget(
                                 width=50,
                                 height=50,
                                 template='%(input)s<br />%(image)s'))
    how_hear = forms.CharField(max_length=500,
                               widget=forms.Textarea,
                               label=_(u'Come ci hai conosciuto?'),
                               required=False)
    salutatore = forms.CharField(
        max_length=500,
        widget=forms.Textarea,
        label=_(u'Saluto personalizzato sul salutatore'),
        required=False)

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        self.activation_key = kwargs.pop('activation_key', None)
        self.activating_user = kwargs.pop('activating_user', None)
        super(EditFormSocio, self).__init__(*args, **kwargs)

    def clean(self):
        data = self.cleaned_data
        if 'photo' in data and data['photo']:
            image = self.request.FILES['photo']
            if image.size > MAX_PHOTO_SIZE:
                raise forms.ValidationError(
                    _("La foto che hai immesso e' troppo grande"))

        if self.activation_key:
            try:
                user = RegistrationProfile.objects.get(
                    activation_key=self.activation_key).user
            except RegistrationProfile.DoesNotExist:
                user = None
        else:
            user = self.request.user

        if not user:  #give error
            return render_to_response('registration/activate.html', {},
                                      context_instance=RequestContext(request))

        has_password = user.is_authenticated() and user.has_usable_password()

        if not has_password:
            if ('password1' not in self.cleaned_data
                    or len(self.cleaned_data['password1']) <= 0) or (
                        'password2' not in self.cleaned_data
                        or len(self.cleaned_data['password2']) <= 0):
                raise forms.ValidationError(
                    _("Non hai nessuna password impostata. Imposta una password per poterti autenticare."
                      ))

        if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data:
            if self.cleaned_data['password1'] != self.cleaned_data['password2']:
                raise forms.ValidationError(
                    _("Le password non corrispondono."))

        return self.cleaned_data

    def clean_username(self):
        if self.activating_user:
            user = self.activating_user

        if user.username == self.cleaned_data['username']:
            return self.cleaned_data['username']

        # if change username and has activation key, or if just change username:
        if self.request.user.username != self.cleaned_data['username']:
            existing = User.objects.filter(
                username__iexact=self.cleaned_data['username'])
            if existing.exists():
                raise forms.ValidationError(
                    _("Questo username e' stato gia' preso da un altro utente."
                      ))
        return self.cleaned_data['username']

    def do_save(self, user):
        if user:
            user = user
        else:
            user = self.request.user

        profile = user.get_profile()

        data = self.cleaned_data
        user.first_name = data['first_name']
        user.last_name = data['last_name']
        user.email = data['email']
        user.username = data['username']
        if data['password1'] and len(data['password1']) > 0:
            user.set_password(data['password1'])

        profile.born_date, profile.born_place = data['born_date'], data[
            'born_place']
        profile.doc_type, profile.doc_id = data['doc_type'], data['doc_id']
        if 'how_hear' in data and len(data['how_hear']):
            profile.how_hear = data['how_hear']
        if 'salutatore' in data and len(data['salutatore']):
            profile.salutatore = data['salutatore']
        if 'photo' in data and data['photo']:
            image = self.request.FILES['photo']
            profile.photo.save(image.name, image)

        profile.user = user
        profile.save()
        user.save()
Example #25
0
from ....forms import PostSubmitForm, PostUpdateForm
from ..models import Job

job_field_labels = {
    'image': 'Institution Logo (10Mb Limit)',
    'url': 'URL',
    'categories': 'Categories (choose up to 3)'
}

job_help_texts = {
    'url': 'Provide a full URL, e.g., "http://www.example.com/page.html"',
    'pub_date': 'Date job originally appeared on website'
}

field_widgets = {'image': ImageWidget(attrs={'required': 'required'})}


class JobSubmitForm(PostSubmitForm):
    class Meta:
        model = Job
        fields = ['title', 'url', 'organization', 'image', 'categories']
        labels = job_field_labels
        help_texts = job_help_texts
        widgets = field_widgets


class JobUpdateForm(PostUpdateForm):
    class Meta:
        model = Job
        fields = [