Exemplo n.º 1
0
    def __init__(self, blueprint, text, description=None, blueprint_access=None):
        """Init the `BlueprintNavigation` instance.

        :param blueprint: A `flask.Blueprint` instance.
        :param text: The text for the top bar navigation.
        :param description: An optional anchor title.
        """
        self.blueprint = blueprint
        self.text = text
        self.description = description
        self._elements = []
        if blueprint_access is None:
            blueprint_access = BlueprintAccess(blueprint)
        self._access = blueprint_access
Exemplo n.º 2
0
    UnconfirmedTransactionsTable
from web.blueprints.navigation import BlueprintNavigation
from web.template_filters import date_filter, money_filter, datetime_filter
from web.template_tests import privilege_check
from web.templates import page_resources
from web.blueprints.helpers.api import json_agg_core

from sqlalchemy.sql.expression import literal_column, func, select, Join

from fints.dialog import FinTSDialogError
from fints.exceptions import FinTSClientPINError
from fints.utils import mt940_to_array
from datetime import date

bp = Blueprint('finance', __name__)
access = BlueprintAccess(bp, required_properties=['finance_show'])
nav = BlueprintNavigation(bp, "Finanzen", blueprint_access=access)


@bp.route('/')
@bp.route('/bank-accounts')
@bp.route('/bank-accounts/list')
@nav.navigate(u"Bankkonten")
def bank_accounts_list():
    bank_account_table = BankAccountTable(
        data_url=url_for('.bank_accounts_list_json'),
        create_account=privilege_check(current_user, 'finance_change'))

    bank_account_activity_table = BankAccountActivityTable(
        data_url=url_for('.bank_accounts_activities_json'))
Exemplo n.º 3
0
    UserEditNameForm, UserEditEMailForm, UserSuspendForm, UserMoveOutForm, \
    InterfaceChangeMacForm, UserEditGroupMembership, UserSelectGroupForm, \
    UserResetPasswordForm, UserMoveInForm, UserEditBirthdateForm
from web.blueprints.access import BlueprintAccess
from web.blueprints.helpers.api import json_agg
from datetime import datetime, timedelta
from flask_login import current_user
from web.template_filters import datetime_filter
from ..helpers.log import format_user_log_entry, format_room_log_entry, \
    format_hades_log_entry
from .log import formatted_user_hades_logs
from .tables import LogTableExtended, LogTableSpecific, MembershipTable, HostTable
from ..finance.tables import FinanceTable, FinanceTableSplitted

bp = Blueprint('user', __name__)
access = BlueprintAccess(bp, required_properties=['user_show'])
nav = BlueprintNavigation(bp, "Nutzer", blueprint_access=access)


@bp.route('/')
@nav.navigate(u"Übersicht")
def overview():
    uquery = lambda: session.session.query(User)

    entries = [{"title": "Nutzer in Datenbank",
                "href": None,
                "number": uquery().count()},
               {"title": "Mitglieder",
                "href": None,
                "number": uquery().join(Membership).filter(
                                Membership.group == config.member_group,
Exemplo n.º 4
0
from pycroft import lib, config
from pycroft.helpers import facilities
from pycroft.model import session
from pycroft.model.facilities import Room, Site
from pycroft.model.property import CurrentProperty
from pycroft.model.user import User
from web.blueprints.access import BlueprintAccess
from web.blueprints.facilities.forms import (
    RoomForm, BuildingForm, RoomLogEntry)
from web.blueprints.helpers.user import user_button
from web.blueprints.navigation import BlueprintNavigation
from web.template_filters import datetime_filter

bp = Blueprint('facilities', __name__)
access = BlueprintAccess(bp, required_properties=['facilities_show'])
nav = BlueprintNavigation(bp, "Wohnheime", blueprint_access=access)

@bp.route('/')
def root():
    return redirect(url_for(".overview"))

@nav.navigate(u"Wohnheime")
@bp.route('/sites/')
def overview():
    return render_template('facilities/site_overview.html')

@bp.route('/sites/json')
def overview_json():
    return jsonify(items=[{
            'site': {
Exemplo n.º 5
0
from flask import Blueprint, flash, redirect, render_template, url_for
from web.blueprints.navigation import BlueprintNavigation
from web.blueprints.properties.forms import PropertyGroupForm, TrafficGroupForm
from pycroft.model.property import PropertyGroup, TrafficGroup, \
    property_categories
from pycroft.lib.property import delete_property, delete_property_group, \
    delete_traffic_group, create_property, create_property_group, \
    create_traffic_group
from web.blueprints.access import BlueprintAccess

bp = Blueprint(
    'properties',
    __name__,
)
access = BlueprintAccess(bp, ['groups_traffic_show', 'groups_show'])
nav = BlueprintNavigation(bp, "Eigenschaften", blueprint_access=access)


@bp.route('/traffic_groups')
@nav.navigate(u"Trafficgruppen")
@access.require('groups_traffic_show')
def traffic_groups():
    traffic_groups_list = TrafficGroup.q.all()
    return render_template('properties/traffic_groups_list.html',
                           traffic_groups=traffic_groups_list)


@bp.route('/traffic_group/create', methods=['GET', 'POST'])
@access.require('groups_traffic_change')
def traffic_group_create():
Exemplo n.º 6
0
    JournalCreateForm, FinanceAccountCreateForm
from pycroft.lib import finance, config
from datetime import datetime, timedelta
from pycroft.model.finance import Semester, Journal, JournalEntry, Split
from pycroft.model.session import session
from pycroft.model.user import User
from pycroft.model.finance import FinanceAccount, Transaction
import os
import math
from web.blueprints.access import BlueprintAccess

bp = Blueprint(
    'finance',
    __name__,
)
access = BlueprintAccess(bp, ['finance_show'])
nav = BlueprintNavigation(bp, "Finanzen", blueprint_access=access)


@bp.route('/')
@bp.route('/journals')
@bp.route('/journals/list')
@access.require('finance_show')
@nav.navigate(u"Journals")
def journals_list():
    journals = Journal.q.all()

    page = request.args.get("page", 1, type=int)
    limit = request.args.get("limit", 25, type=int)
    order = request.args.get("order", "transaction_date", type=str)
Exemplo n.º 7
0
    edit_switch_port, remove_patch_to_patch_port, delete_switch_port
from pycroft.model.facilities import Room
from web.blueprints.infrastructure.forms import SwitchForm, SwitchPortForm

from pycroft.helpers import net
from pycroft.model import session
from pycroft.model.host import Switch, SwitchPort
from pycroft.model.net import VLAN, Subnet
from pycroft.model.port import PatchPort
from pycroft.lib.net import get_subnets_with_usage
from web.blueprints.navigation import BlueprintNavigation
from web.blueprints.access import BlueprintAccess
from .tables import SubnetTable, SwitchTable, VlanTable, PortTable

bp = Blueprint('infrastructure', __name__)
access = BlueprintAccess(bp, required_properties=['infrastructure_show'])
nav = BlueprintNavigation(bp, "Infrastruktur", blueprint_access=access)


@bp.route('/subnets')
@nav.navigate(u"Subnetze")
def subnets():
    return render_template(
        'infrastructure/subnets_list.html',
        subnet_table=SubnetTable(data_url=url_for(".subnets_json")))


def format_address_range(base_address, amount):
    if amount == 0:
        raise ValueError
    elif abs(amount) == 1:
Exemplo n.º 8
0
    abort
from flask_login import current_user
from flask_wtf import FlaskForm

from pycroft.lib.membership import grant_property, deny_property, \
    remove_property, edit_property_group, delete_property_group, \
    known_properties
from pycroft.model import session
from pycroft.model.user import PropertyGroup
from pycroft.property import property_categories
from web.blueprints.access import BlueprintAccess
from web.blueprints.navigation import BlueprintNavigation
from web.blueprints.properties.forms import PropertyGroupForm

bp = Blueprint('properties', __name__)
access = BlueprintAccess(bp, required_properties=['groups_show'])
nav = BlueprintNavigation(bp,
                          "",
                          icon='fa-cogs',
                          push_right=True,
                          blueprint_access=access)


@bp.route('/property_groups')
@nav.navigate("Gruppen")
def property_groups():
    property_groups_list = PropertyGroup.q.all()
    categories = property_categories
    properties_with_description = set(
        chain(*(category.keys() for category in categories.values())))
    categories["Ohne Beschreibung"] = {
Exemplo n.º 9
0
from flask.ext.login import current_user
from pycroft import lib
from pycroft.helpers import dormitory
from pycroft.lib.dormitory import create_dormitory, create_room, delete_room
from pycroft.model.session import session
from pycroft.model.dormitory import Room, Dormitory
from web.blueprints.navigation import BlueprintNavigation
from web.blueprints.dormitories.forms import RoomForm, DormitoryForm, \
    RoomLogEntry
from web.blueprints.access import BlueprintAccess

bp = Blueprint(
    'dormitories',
    __name__,
)
access = BlueprintAccess(bp, ['dormitories_show'])
nav = BlueprintNavigation(bp, "Wohnheime", blueprint_access=access)


@bp.route('/')
@nav.navigate(u"Wohnheime")
# careful with permissions here, redirects!
def overview():
    dormitories_list = Dormitory.q.all()
    dormitories_list = dormitory.sort_dormitories(dormitories_list)
    return render_template('dormitories/overview.html',
                           dormitories=dormitories_list)


@bp.route('/show/<dormitory_id>')
@access.require('dormitories_show')
Exemplo n.º 10
0
from pycroft.model.session import session
from pycroft.model.user import User
from pycroft.model.property import Membership
from pycroft.model.accounting import TrafficVolume
from sqlalchemy.sql.expression import or_, func
from web.blueprints.navigation import BlueprintNavigation
from web.blueprints.user.forms import UserSearchForm, UserCreateForm,\
    hostCreateForm, UserLogEntry, UserAddGroupMembership, UserMoveForm,\
    UserEditNameForm, UserEditEMailForm, UserBlockForm, UserMoveOutForm, \
    NetDeviceChangeMacForm, UserEditGroupMembership
from web.blueprints.access import BlueprintAccess
from datetime import datetime, timedelta, time
from flask.ext.login import current_user

bp = Blueprint('user', __name__, )
access = BlueprintAccess(bp, ['user_show'])
nav = BlueprintNavigation(bp, "Nutzer", blueprint_access=access)


@bp.route('/')
@nav.navigate(u"Übersicht")
def overview():
    return redirect(url_for("dormitories.overview"))


@bp.route('/json/search')
@access.require('user_show')
def json_search():
    query = request.args['query']
    return jsonify(users=map(
        lambda u: {"id": u.id, "name": u.name},