Make user add/delete/update work.
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
This commit is contained in:
parent
6b892de27e
commit
f0448e59d3
|
|
@ -143,14 +143,65 @@ class IndexView(ViewBase):
|
||||||
return self._template({})
|
return self._template({})
|
||||||
|
|
||||||
|
|
||||||
|
class ReLoginView(ViewBase):
|
||||||
@aiohttp_jinja2.template("relogin.html")
|
@aiohttp_jinja2.template("relogin.html")
|
||||||
def re_login(request):
|
async def get(self):
|
||||||
pass
|
return self._template({'action': 'update', 'description': 'Refresh'})
|
||||||
|
|
||||||
|
@aiohttp_jinja2.template("relogin.html")
|
||||||
|
async def post(self):
|
||||||
|
data = await self.request.post()
|
||||||
|
self._set_data(data)
|
||||||
|
|
||||||
|
validator = Validator(self.request.app.loop, data)
|
||||||
|
await validator.validate_credentials()
|
||||||
|
self._add_errors(validator.errors)
|
||||||
|
|
||||||
|
if validator.success:
|
||||||
|
with self._session as session:
|
||||||
|
user = session.query(models.User).filter(models.User.name == validator.username).first()
|
||||||
|
if user is None:
|
||||||
|
self._add_errors({'user': 'User not registered'})
|
||||||
|
else:
|
||||||
|
if await self._wallabag.get_token(user, validator.password):
|
||||||
|
session.commit()
|
||||||
|
self._add_message("User {user} successfully updated.".format(user=validator.username))
|
||||||
|
logger.info("User {user} successfully updated.", user=user)
|
||||||
|
else:
|
||||||
|
self._add_errors({'auth': "Authentication against wallabag server failed"})
|
||||||
|
|
||||||
|
return self._template({'action': 'update', 'description': 'Refresh'})
|
||||||
|
|
||||||
|
|
||||||
@aiohttp_jinja2.template("index.html")
|
class DeleteView(ViewBase):
|
||||||
def delete_user(request):
|
@aiohttp_jinja2.template("relogin.html")
|
||||||
pass
|
async def get(self):
|
||||||
|
return self._template({'action': 'delete', 'description': 'Delete'})
|
||||||
|
|
||||||
|
@aiohttp_jinja2.template("relogin.html")
|
||||||
|
async def post(self):
|
||||||
|
data = await self.request.post()
|
||||||
|
self._set_data(data)
|
||||||
|
|
||||||
|
validator = Validator(self.request.app.loop, data)
|
||||||
|
await validator.validate_credentials()
|
||||||
|
self._add_errors(validator.errors)
|
||||||
|
|
||||||
|
if validator.success:
|
||||||
|
with self._session as session:
|
||||||
|
user = session.query(models.User).filter(models.User.name == validator.username).first()
|
||||||
|
if user is None:
|
||||||
|
self._add_errors({'user': 'User not registered'})
|
||||||
|
else:
|
||||||
|
if await self._wallabag.get_token(user, validator.password):
|
||||||
|
session.delete(user)
|
||||||
|
session.commit()
|
||||||
|
self._add_message("User {user} successfully deleted.".format(user=validator.username))
|
||||||
|
logger.info("User {user} successfully deleted.", user=user)
|
||||||
|
else:
|
||||||
|
self._add_errors({'auth': "Authentication against wallabag server failed"})
|
||||||
|
|
||||||
|
return self._template({'action': 'delete', 'description': 'Delete'})
|
||||||
|
|
||||||
|
|
||||||
class App:
|
class App:
|
||||||
|
|
@ -176,6 +227,8 @@ class App:
|
||||||
path=os.path.join(os.path.dirname(__file__), 'static'),
|
path=os.path.join(os.path.dirname(__file__), 'static'),
|
||||||
name='static')
|
name='static')
|
||||||
self.app.router.add_view("/", IndexView)
|
self.app.router.add_view("/", IndexView)
|
||||||
|
self.app.router.add_view("/delete", DeleteView)
|
||||||
|
self.app.router.add_view("/update", ReLoginView)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
web.run_app(self.app, host=self.config.interface_host, port=self.config.interface_port)
|
web.run_app(self.app, host=self.config.interface_host, port=self.config.interface_port)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
{{ forms.messages(errors=errors, messages=messages) }}
|
{{ forms.messages(errors=errors, messages=messages) }}
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">Add or edit an account</div>
|
<div class="card-header">Add an account</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form method="post" action="/">
|
<form method="post" action="/">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
|
||||||
|
|
@ -3,19 +3,19 @@
|
||||||
{% import 'macros.html' as forms %}
|
{% import 'macros.html' as forms %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
|
{{ forms.messages(errors=errors, messages=messages) }}
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-header">Fetch a new Wallabag API token</div>
|
<div class="card-header">{{ description }} an account</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<form>
|
<form method="post" action="/{{ action }}">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
{{ forms.input('user', "Username", description='Your wallabag username at ' + wallabag_host) }}
|
{{ forms.input('username', "Username", description='Your wallabag username at ' + wallabag_host, data=data, errors=errors) }}
|
||||||
{{ forms.input('password', "Password", type='password', description='Your wallabag password at ' + wallabag_host + ". The password will not be stored") }}
|
{{ forms.input('password', "Password", type='password', description='Your wallabag password at ' + wallabag_host + ". The password will not be stored", data=data, errors=errors) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg">
|
<div class="col-lg">
|
||||||
<button type="submit" class="btn btn-primary">Register</button>
|
<button type="submit" class="btn btn-primary">{{ description }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue