Skip to content

Instantly share code, notes, and snippets.

@seanmavley
Last active April 6, 2021 18:44
Show Gist options
  • Save seanmavley/6048b896dd7660694b18 to your computer and use it in GitHub Desktop.
Save seanmavley/6048b896dd7660694b18 to your computer and use it in GitHub Desktop.

Revisions

  1. seanmavley revised this gist Nov 18, 2015. 1 changed file with 19 additions and 1 deletion.
    20 changes: 19 additions & 1 deletion UserProfile.py
    Original file line number Diff line number Diff line change
    @@ -73,4 +73,22 @@ def edit_user(request, pk):
    "formset": formset,
    })
    else:
    raise PermissionDenied
    raise PermissionDenied

    # template.html
    <div class="col s12 m8 offset-m2">
    <div class="card">
    <div class="card-content">
    <h2 class="flow-text">Update your information</h2>
    <form action="." method="POST" class="padding">
    {% csrf_token %} {{ noodle_form.as_p }}
    <div class="divider"></div>
    {{ formset.management_form }}
    {{ formset.as_p }}
    <button type="submit" class="btn-floating btn-large waves-light waves-effect"><i class="large material-icons">done</i></button>
    <a href="#" onclick="window.history.back(); return false;" title="Cancel" class="btn-floating waves-effect waves-light red"><i class="material-icons">history</i></a>

    </form>
    </div>
    </div>
    </div>
  2. seanmavley revised this gist Nov 18, 2015. 1 changed file with 0 additions and 6 deletions.
    6 changes: 0 additions & 6 deletions UserProfile.py
    Original file line number Diff line number Diff line change
    @@ -38,17 +38,11 @@ def create_profile(sender, **kwargs):

    # views.py
    from django.shortcuts import render, HttpResponseRedirect, HttpResponse

    from django.contrib.auth.decorators import login_required

    from django.contrib.auth.models import User

    from .models import UserProfile

    from .forms import UserProfileForm

    from django.forms.models import inlineformset_factory

    from django.core.exceptions import PermissionDenied

    @login_required
  3. seanmavley created this gist Nov 18, 2015.
    82 changes: 82 additions & 0 deletions UserProfile.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,82 @@
    from django import forms
    from django.contrib.auth.models import User


    class UserProfileForm(forms.ModelForm):
    class Meta:
    model = User
    fields = ['first_name', 'last_name', 'email']


    # models.py
    from django.db import models
    from django.contrib.auth.models import User
    from django.utils.translation import ugettext_lazy as _
    from mezzanine.core.fields import FileField
    from django.db.models.signals import post_save


    class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='user')
    photo = FileField(verbose_name=_("Profile Picture"),
    upload_to=upload_to("main.UserProfile.photo", "profiles"),
    format="Image", max_length=255, null=True, blank=True)
    website = models.URLField(default='', blank=True)
    bio = models.TextField(default='', blank=True)
    phone = models.CharField(max_length=20, blank=True, default='')
    city = models.CharField(max_length=100, default='', blank=True)
    country = models.CharField(max_length=100, default='', blank=True)
    organization = models.CharField(max_length=100, default='', blank=True)


    def create_profile(sender, **kwargs):
    user = kwargs["instance"]
    if kwargs["created"]:
    user_profile = UserProfile(user=user)
    user_profile.save()
    post_save.connect(create_profile, sender=User)

    # views.py
    from django.shortcuts import render, HttpResponseRedirect, HttpResponse

    from django.contrib.auth.decorators import login_required

    from django.contrib.auth.models import User

    from .models import UserProfile

    from .forms import UserProfileForm

    from django.forms.models import inlineformset_factory

    from django.core.exceptions import PermissionDenied

    @login_required
    def edit_user(request, pk):
    user = User.objects.get(pk=pk)
    user_form = UserProfileForm(instance=user)

    ProfileInlineFormset = inlineformset_factory(User, UserProfile, fields=('website', 'bio', 'phone', 'city', 'country', 'organization'))
    formset = ProfileInlineFormset(instance=user)

    if request.user.is_authenticated() and request.user.id == user.id:
    if request.method == "POST":
    user_form = UserProfileForm(request.POST, request.FILES, instance=user)
    formset = ProfileInlineFormset(request.POST, request.FILES, instance=user)

    if user_form.is_valid():
    created_user = user_form.save(commit=False)
    formset = ProfileInlineFormset(request.POST, request.FILES, instance=created_user)

    if formset.is_valid():
    created_user.save()
    formset.save()
    return HttpResponseRedirect('/accounts/profile/')

    return render(request, "account/account_update.html", {
    "noodle": pk,
    "noodle_form": user_form,
    "formset": formset,
    })
    else:
    raise PermissionDenied