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
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'))
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,
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': {
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():
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)
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:
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"] = {
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')
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},