forked from tilde/ssh-reg
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
5 years ago
|
from lib.sqlitedb import SQLiteDB
|
||
|
import sqlite3 # sqlite3.Row-Object
|
||
|
from typing import List # Typing support!
|
||
|
|
||
|
|
||
|
class ListUsers:
|
||
|
"""
|
||
|
List tilde users
|
||
|
"""
|
||
|
|
||
|
db = None
|
||
|
users_fetch = None
|
||
|
|
||
|
def __init__(self, db: str, unapproved: bool = False, approved: bool = True, single_user: str = None):
|
||
|
"""Constructs list_users
|
||
|
|
||
|
:param db: Database to access
|
||
|
:type db: str
|
||
|
:param unapproved: only List unapproved users
|
||
|
:type unapproved: bool
|
||
|
:param approved: only list approved users
|
||
|
:type approved: bool
|
||
|
"""
|
||
|
|
||
|
self.db = SQLiteDB(db)
|
||
|
if unapproved: # only unapproved users
|
||
|
query = "SELECT * FROM `applications` WHERE `status` = '0'"
|
||
|
elif approved: # Approved users
|
||
|
query = "SELECT * FROM `applications` WHERE `status` = '1'"
|
||
|
else: # All users
|
||
|
query = "SELECT * FROM `applications`"
|
||
|
self.users_fetch = self.db.query(query)
|
||
|
if single_user is not None:
|
||
|
query = "SELECT * FROM `applications` WHERE `username` = ?"
|
||
|
self.users_fetch = self.db.safequery(query, tuple([single_user]))
|
||
|
|
||
|
def output_as_list(self) -> str:
|
||
|
"""Generates a string with one (approved) single_user per line and one newline at the end
|
||
|
|
||
|
:rtype: str
|
||
|
:return: String consisting with one(activated) single_user per line
|
||
|
"""
|
||
|
|
||
|
list_str: str = ""
|
||
|
query = "SELECT `username` FROM `applications` WHERE `status` = '1' ORDER BY timestamp ASC"
|
||
|
self.users_fetch = self.db.query(query)
|
||
|
for user in self.users_fetch:
|
||
|
list_str += user["username"] + "\n"
|
||
|
return list_str
|
||
|
|
||
|
def pretty_print(self) -> None:
|
||
|
"""
|
||
|
pretty-print users
|
||
|
:return: None
|
||
|
"""
|
||
|
pass # see below why not implemented yet, texttable...
|
||
|
|
||
|
def get_fetch(self) -> List[sqlite3.Row]:
|
||
|
""" Returns a complete users done by the lib.sqlitedb-class
|
||
|
|
||
|
:return: Complete fetchall(). A List[sqlite3.Row] with dict-emulation objects.
|
||
|
:rtype: List[sqlite3.Row]
|
||
|
"""
|
||
|
|
||
|
return self.users_fetch
|