diff --git a/app/cloud/controllers/users/manage.py b/app/cloud/controllers/users/manage.py index 37724b2..e4c4ef3 100644 --- a/app/cloud/controllers/users/manage.py +++ b/app/cloud/controllers/users/manage.py @@ -26,3 +26,26 @@ class ControllerManageUsers: 'total': models.Users.select().count(), 'items': models.Users.select() } + + def item_get(self, user_id): + return models.Users.select().where(models.Users.id == user_id)[0] + + +class ControllerManageUsersDetails: + def exists(self, user_id): + if models.UsersDetails.select().where(models.UsersDetails.user == user_id).count() == 0: + return False + return True + + def item_get(self, user_id): + return models.UsersDetails.select().where(models.UsersDetails.user == user_id)[0] + + +class ControllerManageUsersBalance: + def exists(self, user_id): + if models.UsersBalance.select().where(models.UsersBalance.user == user_id).count() == 0: + return False + return True + + def item_get(self, user_id): + return models.UsersBalance.select().where(models.UsersBalance.user == user_id)[0] diff --git a/app/cloud/views/administrator/__init__.py b/app/cloud/views/administrator/__init__.py index bb5c348..5357a51 100644 --- a/app/cloud/views/administrator/__init__.py +++ b/app/cloud/views/administrator/__init__.py @@ -12,6 +12,9 @@ from app import models from app.cloud.controllers.common import special_match from app.cloud.controllers.common import ControllerMessagesEmail from app.cloud.controllers.administrators import ControllerAdministrators +from app.cloud.controllers.users.manage import ControllerManageUsers +from app.cloud.controllers.users.manage import ControllerManageUsersDetails +from app.cloud.controllers.users.manage import ControllerManageUsersBalance viewAdministrator = Blueprint('administrator', __name__, url_prefix='/administrator') @@ -83,13 +86,31 @@ def users(): # auth user if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']): return redirect(url_for("administrator.logout")) - # формируем массив со списком пользователей - users_items = { - 'total': models.Users.select().count(), - 'items': models.Users.select() - } # - return render_template('administrator/users/index.html', users=users_items) + return render_template( + 'administrator/users/index.html', + users=ControllerManageUsers().items_get() + ) + + +@viewAdministrator.route('/users/details/') +def user_details(user_id): + # check session + if not ControllerAdministrators().check_session(): + return redirect(url_for("administrator.logout")) + # auth user + if not ControllerAdministrators().auth(session['admin_email'], session['admin_password']): + return redirect(url_for("administrator.logout")) + # check exists user by uuid + if not ControllerManageUsers().exists_by_id(user_id): + return redirect(url_for('administrator.users')) + # + return render_template( + 'administrator/users/details.html', + user_account=ControllerManageUsers().item_get(user_id), + user_details=ControllerManageUsersDetails().item_get(user_id), + user_balance=ControllerManageUsersBalance().item_get(user_id), + ) @viewAdministrator.route('/rules/') diff --git a/app/models.py b/app/models.py index ff7975b..5ac0701 100644 --- a/app/models.py +++ b/app/models.py @@ -55,6 +55,8 @@ class Ips(PgSQLModel): ipv6 = CharField() ipv4_gateway = CharField() ipv6_gateway = CharField() + # 0 - free + # 1 - used status = IntegerField() @@ -100,6 +102,9 @@ class UsersBalanceTransactions(PgSQLModel): amount = FloatField(default=0, null=False) created = DateTimeField(default=datetime.datetime.now) notified = IntegerField(null=False, default=0) + # success + # process + # fail status = TextField(null=False) @@ -115,6 +120,12 @@ class Containers(PgSQLModel): user = ForeignKeyField(Users) ipv4 = CharField() ipv6 = CharField() + # 0 + # 1 + # 2 + # 3 + # 4 + # 5 status = IntegerField() diff --git a/app/templates/administrator/users/details.html b/app/templates/administrator/users/details.html new file mode 100644 index 0000000..aecb18e --- /dev/null +++ b/app/templates/administrator/users/details.html @@ -0,0 +1,71 @@ +{% extends 'administrator/_layout.auth.html' %} + +{% block title %}User details{% endblock %} + +{% block subtitle %}User details{% endblock %} + +{% block content %} +

Account

+ + + + + + + + + + + + + + + +
ID{{ user_account['id'] }}
Email{{ user_account['email'] }}
Status{{ user_account['status'] }}
+

Details

+Edit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
First name{{ user_details['fname'] }}
Last name{{ user_details['lname'] }}
Address{{ user_details['address'] }}
City{{ user_details['city'] }}
Country{{ user_details['country'] }}
State{{ user_details['state'] }}
ZIP code{{ user_details['zipcode'] }}
+

Balance

+Add money + + + + + + + +
Balance{{ user_balance['balance'] }}
+

Transactions history

+... +{% endblock %} diff --git a/app/templates/administrator/users/index.html b/app/templates/administrator/users/index.html index a72fc95..deada31 100644 --- a/app/templates/administrator/users/index.html +++ b/app/templates/administrator/users/index.html @@ -24,7 +24,7 @@ {{ user.email }} {{ user.status }} - Edit + Edit {% endfor %}