Example #1
0
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)
Example #2
0
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)