semvec/pypi-packages huggingface dataset:
django-awesome-avatar 1.1.3
Django Avatar field
License: BSD

=====================
django-awesome-avatar
=====================

Django-awesome-avatar is a reusable application providing Avatar model field.
It allows crop selected area before saving image.

Purpose
=======

| Unlike django-avatar_ and django-upload-avatar_  
| django-awesome-avatar_ uses:

- field in profile model instead creating model for saving images
- HTML5 File API instead hidden iframe AJAX for image preview
- easy customizable presence (any view and widget templates)

Install
=======

To integrate ``django-awesome-avatar`` with your site, there are few things
that are required:

#. Installing::

       pip install django-awesome-avatar

#. List this application in the ``INSTALLED_APPS`` portion of your settings file.
   Your settings file will look something like::

        INSTALLED_APPS = (
            ...
            'awesome_avatar',
        )

Usage examples
==============

with ModelForm
--------------

Add the ``AvatarField`` to your user or profile model::
        
    from awesome_avatar.fields import AvatarField
 
    class Profile(Model):
        user = OneToOneField(User, related_name='profile')
        ...
        avatar = AvatarField(upload_to='avatars', width=100, height=100)

Use model form usually way::

    class AvatarChangeForm(ModelForm):
        class Meta:
            model = Profile
            fields = ['avatar']
        
    def change_avatar(request):
        if request.method == 'POST':
            form = AvatarChangeForm(request.POST, request.FILES,
                                    instance=request.user.profile)
            if form.is_valid():
                form.save()
                return HttpResponseRedirect('/profile/')
        else:
            form = AvatarChangeForm(instance=request.user.profile)

        return render(request, 'template.html', {'form': form})
            
with Form
---------

Define some model for saving images::
    
    class Images(Model):
        image = ImageField(upload_to='images')
            
Use form field for cropping image::

    from awesome_avatar import forms as avatar_forms

    class UploadAndCropImageForm(Form):
        image = avatar_forms.AvatarField()
 
    def upload_and_crop_image(request):
        if request.method == 'POST':
            form = UploadAndCropImageForm(request.POST)
                
            if form.is_valid():
                Images(image=form.image).save()
                return HttpResponseRedirect('/any/')
        else:
            form = UploadAndCropImageForm()

        return render(request, 'template.html', {'form': form})
            
        
Global Settings
===============

Django's ``settings.py``::
     
    AWESOME_AVATAR = {
        'width': 100,
        'height': 100,
        
        'select_area_width': 400,
        'select_area_height': 300,
        
        'save_quality': 90,
        'save_format': 'png',
        ...
    }
     
.. _django-avatar: https://github.com/jezdez/django-avatar
.. _django-upload-avatar: https://github.com/yueyoum/django-upload-avatar
.. _django-awesome-avatar: https://github.com/dimka665/django-awesome-avatar