add profile form

This commit is contained in:
Élie Bouttier 2014-09-02 21:56:30 -07:00
parent ba1d9e8882
commit 2be6f4e119
3 changed files with 90 additions and 59 deletions

View file

@ -4,7 +4,7 @@ from django.forms.widgets import PasswordInput
from accounts.models import * from accounts.models import *
__all__ = ['UserForm', 'UserFormWithoutUsername', 'GroupForm', 'TeamForm'] __all__ = ['UserForm', 'UserFormWithoutUsername', 'ProfileForm', 'GroupForm', 'TeamForm']
user_fields=['first_name', 'last_name', 'email'] user_fields=['first_name', 'last_name', 'email']
@ -13,6 +13,8 @@ UserForm = modelform_factory(User,
fields=['username']+user_fields+['is_superuser']) fields=['username']+user_fields+['is_superuser'])
UserFormWithoutUsername = modelform_factory(User, UserFormWithoutUsername = modelform_factory(User,
fields=user_fields+['is_superuser']) fields=user_fields+['is_superuser'])
ProfileForm = modelform_factory(User,
fields=user_fields)
GroupForm = modelform_factory(Group, GroupForm = modelform_factory(Group,
fields=['name']) fields=['name'])
TeamForm = modelform_factory(Team, TeamForm = modelform_factory(Team,

View file

@ -21,7 +21,14 @@ from accounts.forms import *
@login_required @login_required
def profile(request): def profile(request):
return render(request, 'accounts/profile.html') form = ProfileForm(request.POST or None, instance=request.user)
if request.method == 'POST' and form.is_valid():
form.save()
messages.success(request, 'Profile updated successfully.')
return redirect('profile')
return render(request, 'accounts/profile.html', {
'form': form,
})
######### #########

View file

@ -1,6 +1,7 @@
{% extends 'base.html' %} {% extends 'base.html' %}
{% load django_markdown %} {% load django_markdown %}
{% load bootstrap3 %}
{% block profiletab %} class="active"{% endblock %} {% block profiletab %} class="active"{% endblock %}
@ -10,67 +11,88 @@
<h1>Profile</h1> <h1>Profile</h1>
</div> </div>
<ul class="list-group"> <div class="panel panel-default">
<li class="list-group-item disabled"> <div class="panel-heading">
<h3>Your profile</h3>
</div>
<div class="panel-body">
<form method="post" class="col-md-4" role="form">
{% csrf_token %}
{% bootstrap_form form %}
<div class="form-group">
<button type="submit" class="btn btn-primary">Update</button>
</div>
</form>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3>Your groups</h3> <h3>Your groups</h3>
</li> </div>
{% for group in request.user.groups.all %} <ul class="list-group">
<li class="list-group-item"> {% for group in request.user.groups.all %}
{{ group }} <li class="list-group-item">
<div class="pull-right"> {{ group }}
<a href="javascript:alert('Not yet implemented.');" class="btn btn-xs btn-danger"> <div class="pull-right">
<span class="glyphicon glyphicon-log-out"></span> leave <a href="javascript:alert('Not yet implemented.');" class="btn btn-xs btn-danger">
</a> <span class="glyphicon glyphicon-log-out"></span> leave
</div> </a>
</li> </div>
{% endfor %} </li>
{% if not request.user.groups.exists %} {% endfor %}
<li class="list-group-item"> {% if not request.user.groups.exists %}
<em>You belong to no groups.</em> <li class="list-group-item">
</li> <em>You belong to no groups.</em>
{% endif %} </li>
</ul> {% endif %}
</ul>
</div>
<ul class="list-group"> <div class="panel panel-default">
<li class="list-group-item disabled"> <div class="panel-heading">
<h3>Your teams</h3> <h3>Your teams</h3>
</li> </div>
{% for team in request.user.teams.all %} <ul class="list-group">
<li class="list-group-item"> {% for team in request.user.teams.all %}
{{ team }} <li class="list-group-item">
<div class="pull-right"> {{ team }}
<a href="javascript:alert('Not yet implemented.');" class="btn btn-xs btn-danger"> <div class="pull-right">
<span class="glyphicon glyphicon-log-out"></span> leave <a href="javascript:alert('Not yet implemented.');" class="btn btn-xs btn-danger">
</a> <span class="glyphicon glyphicon-log-out"></span> leave
</div> </a>
</li> </div>
{% endfor %} </li>
{% if not request.user.teams.exists %} {% endfor %}
<li class="list-group-item"> {% if not request.user.teams.exists %}
<em>You belong to no teams.</em> <li class="list-group-item">
</li> <em>You belong to no teams.</em>
{% endif %} </li>
</ul> {% endif %}
</ul>
</div>
<ul class="list-group"> <div class="panel panel-default">
<li class="list-group-item disabled"> <div class="panel-heading">
<h3>Projects that you are watching</h3> <h3>Projects that you are watching</h3>
</li> </div>
{% for project in request.user.subscribed_projects.all %} <ul class="list-group">
<li class="list-group-item"> {% for project in request.user.subscribed_projects.all %}
{{ project }} <li class="list-group-item">
<div class="pull-right"> {{ project }}
<a href="{% url 'unsubscribe-project' project.name %}?next={{ request.path }}" class="btn btn-xs btn-danger"> <div class="pull-right">
<span class="glyphicon glyphicon-eye-close"></span> unwatch <a href="{% url 'unsubscribe-project' project.name %}?next={{ request.path }}" class="btn btn-xs btn-danger">
</a> <span class="glyphicon glyphicon-eye-close"></span> unwatch
</div> </a>
</li> </div>
{% endfor %} </li>
{% if not request.user.subscribed_projects.exists %} {% endfor %}
<li class="list-group-item"> {% if not request.user.subscribed_projects.exists %}
<em>You are not watching any projects.</em> <li class="list-group-item">
</li> <em>You are not watching any projects.</em>
{% endif %} </li>
</ul> {% endif %}
</ul>
</div>
{% endblock %} {% endblock %}