def usersuite(): """Usersuite landing page with user account information and traffic overview. """ try: user_info = dict(current_user.get_information()) traffic_data = current_user.get_traffic_data() except DBQueryEmpty as e: logger.error('Userinfo DB query could not be finished', extra={'data': {'exception_args': e.args}, 'stack': True}) flash(gettext("Es gab einen Fehler bei der Datenbankanfrage!"), "error") return redirect(url_for('generic.index')) user_info.update({prop: unsupported_property() for prop in current_user.unsupported(display=True)}) descriptions = OrderedDict([ ('id', gettext("Nutzer-ID")), ('uid', gettext("Accountname")), ('status', gettext("Accountstatus")), ('address', gettext("Aktuelles Zimmer")), ('ip', gettext("Aktuelle IP-Adresse")), ('mac', gettext("Aktuelle MAC-Adresse")), ('mail', gettext("E-Mail-Weiterleitung")), ('hostname', gettext("Hostname")), ('hostalias', gettext("Hostalias")), ('userdb', gettext("MySQL Datenbank")), ]) ordered_user_info = OrderedDict() for key, description in descriptions.items(): if key in user_info: ordered_user_info[key] = user_info[key] ordered_user_info[key]['description'] = descriptions[key] # set {mail,mac,userdb}_{change,delete} urls if 'mail_change' in current_user.supported(): ordered_user_info['mail']['action_links'] = { ACTIONS.EDIT: url_for('.usersuite_change_mail'), ACTIONS.DELETE: url_for('.usersuite_delete_mail') } if 'mac_change' in current_user.supported(): ordered_user_info['mac']['action_links'] = { ACTIONS.EDIT: url_for('.usersuite_change_mac') } if 'userdb_change' in current_user.supported(): ordered_user_info['userdb']['action_links'] = { ACTIONS.EDIT: url_for('.usersuite_hosting') } return render_template("usersuite/index.html", userinfo=ordered_user_info, usertraffic=traffic_data)
def usertraffic(): """For anonymous users with a valid IP """ ip_user = user_from_ip(request.remote_addr) if isinstance(ip_user, BaseUser): if current_user.is_authenticated: if current_user != ip_user: flash(gettext("Ein anderer Nutzer als der für diesen " "Anschluss Eingetragene ist angemeldet!"), 'warning') flash(gettext("Hier werden die Trafficdaten " "dieses Anschlusses angezeigt"), "info") return render_template("usertraffic.html", usertraffic=( ip_user.get_traffic_data())) else: if current_user.is_authenticated: return render_template("usertraffic.html", usertraffic=( current_user.get_traffic_data())) else: abort(401)