Skip to content

Commit

Permalink
admin edit account
Browse files Browse the repository at this point in the history
  • Loading branch information
lepture committed Aug 22, 2012
1 parent 9c1e641 commit 8c6652f
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 6 deletions.
32 changes: 28 additions & 4 deletions june/account/forms.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
from flask import g
from flask.ext.wtf import Form
from flask.ext.wtf import TextField, PasswordField, TextAreaField
from flask.ext.wtf import Required, Email, URL, Optional
from flask.ext.wtf import TextField, PasswordField, TextAreaField, IntegerField
from flask.ext.wtf import Required, Email, URL, Optional, Length
from flask.ext.wtf.html5 import EmailField, URLField
from flask.ext.babel import lazy_gettext as _
from .models import db, Member


class SignupForm(Form):
username = TextField(
_('Username'), validators=[Required()]
_('Username'), validators=[Required(), Length(min=3, max=20)],
)
email = EmailField(
_('Email'), validators=[Required(), Email()]
Expand Down Expand Up @@ -55,7 +55,7 @@ def validate_password(self, field):

class SettingForm(Form):
username = TextField(
_('Username'), validators=[Required()]
_('Username'), validators=[Required(), Length(min=3, max=20)],
)
website = URLField(
_('Website'), validators=[Optional(), URL()]
Expand All @@ -75,3 +75,27 @@ def save(self):
db.session.add(user)
db.session.commit()
return user


class EditForm(Form):
username = TextField(
_('Username'), validators=[Required(), Length(min=3, max=20)],
)
email = EmailField(
_('Email'), validators=[Required(), Email()]
)
role = IntegerField(_('Role'), default=2)
edit_username_count = IntegerField(
_('Chance'), default=2, description=_('Chance to edit username'),
)
description = TextAreaField(
_('Description'),
)

def save(self, user):
for name, data in self.data.iteritems():
setattr(user, name, data)

db.session.add(user)
db.session.commit()
return user
10 changes: 10 additions & 0 deletions june/account/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,13 @@ def check_password(self, raw):
passwd = '%s%s%s' % (salt, raw, db.app.config['PASSWORD_SECRET'])
verify = hashlib.sha1(passwd).hexdigest()
return verify == hsh

def is_admin(self):
if self.id == 1:
return True
return self.role > 9

def is_staff(self):
if self.id == 1:
return True
return self.role > 6
16 changes: 14 additions & 2 deletions june/account/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
from flask import flash
from flask import g
from flask.ext.babel import gettext as _
from .forms import SigninForm, SignupForm, SettingForm
from .forms import SigninForm, SignupForm, SettingForm, EditForm
from .models import Member
from .helpers import login, logout
from .decorators import require_login
from .decorators import require_login, require_admin

app = Blueprint('account', __name__)

Expand Down Expand Up @@ -49,3 +50,14 @@ def setting():
flash(_('Account has been updated'), 'info')
return redirect(url_for('.setting'))
return render_template('account/setting.html', form=form)


@app.route('/edit/<username>', methods=['GET', 'POST'])
@require_admin
def edit(username):
user = Member.query.filter_by(username=username).first_or_404()
form = EditForm(obj=user)
if form.validate_on_submit():
form.save(user)
return redirect(url_for('.edit', username=username))
return render_template('account/edit.html', form=form)
15 changes: 15 additions & 0 deletions june/templates/account/edit.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{% extends "layout.html" %}
{% from "snippet/macros.html" import render_field, render_submit %}

{% block content %}
<form class="fm-form" method="post" action="">
{{ form.csrf_token }}
{{ render_field(form.username) }}
{{ render_field(form.email) }}
{{ render_field(form.role) }}
{{ render_field(form.edit_username_count) }}
{{ render_field(form.description, 'fm-textarea') }}

{{ render_submit(_("Update")) }}
</form>
{% endblock %}

0 comments on commit 8c6652f

Please sign in to comment.