Example #1
0
def users():
    return "Disabled for now"
    page = request.args['page'] if 'page' in request.args else 1
    try:
        page = int(page)
    except:
        page = 1

    page = max(1, page)
    perPage = 200

    g.dbsession = Config.ScopedSession()
    now = datetime.now(utc)

    total = g.dbsession.query(Credential).filter(Credential.expiration > now).count()
    pages = ceil(total / perPage)
    page = min(pages, page)

    pagerange = range(max(0, page - 3) + 1, min(pages, page + 2) + 1)


    members = g.dbsession.query(Credential).filter(Credential.expiration > now)\
        .order_by(Credential.memberid)\
        .order_by(Credential.priority)\
        .order_by(Credential.expiration).offset((page - 1) * perPage).limit(perPage).all()

    membersgrouped = dict((k,list(v)) for k,v in groupby(members, lambda m : m.memberid))

    for k,v in membersgrouped.items():
        #blah = list(v)
        print(k,len(list(v)))

    return render_template('users.html', activity=activity, members=membersgrouped,ctx="users",page=page, pages=pages,pagerange=pagerange)
Example #2
0
def export():
    g.dbsession = Config.ScopedSession()
    activity = g.dbsession.query(Activity).order_by(Activity.timestamp.desc())

    def generate():
        yield f"Time,Facility,MemberId,Authcode,Result\r\n"
        a: Activity
        for a in activity:
            yield f"{a.timestamp.strftime('%c')},{a.facility},{a.memberid},{a.credentialref},{a.result}\r\n"

    return Response(stream_with_context(generate()),mimetype="text/csv")
Example #3
0
def query_hardware():
    #rapidly clicking query could cause problems.
    q: Queue = webpanel.config['squeue']
    w: Queue = webpanel.config['wqueue']
    q.put(("query",))
    try:
        status = w.get(True, 10.0)
    except Empty:
        status = []

    g.dbsession = Config.ScopedSession()

    return "<br />".join(status)
Example #4
0
def activity():
    page = request.args['page'] if 'page' in request.args else 1
    try:
        page = int(page)
    except:
        page = 1

    page = max(1,page)
    perPage = 200
    g.dbsession = Config.ScopedSession()

    total = g.dbsession.query(Activity).count()
    pages = ceil(total / perPage)
    page = min(pages, page)

    pagerange = range(max(0,page-3)+1,min(pages, page+2)+1)

    activity = g.dbsession.query(Activity).order_by(Activity.timestamp.desc()).offset((page - 1) * perPage).limit(perPage)

    return render_template('activity.html',activity=activity,ctx="activity",page=page, pages=pages,pagerange=pagerange)
Example #5
0
def diagnostics():
    q: Queue = webpanel.config['squeue']
    w: Queue = webpanel.config['wqueue']
    q.put(("status",))
    try:
        status = w.get(True,0.250)
    except Empty:
        status = {}
    g.dbsession = Config.ScopedSession()
    facility_map = {}
    for f in status:
        facility_map[f] = ( Config.Facilities[f].board, Config.Facilities[f].relay )
    #requirements : List[AccessRequirement] = list(g.dbsession.query(AccessRequirement).order_by(AccessRequirement.requiredpriority.desc()).all())
    #TODO
    requirements = []
    requiredLevel = 0
    for r in requirements:
        if r.is_active():
            requiredLevel = max(requiredLevel,r.requiredpriority)

    return render_template('diagnostics.html',facility_status=status,facility_map=facility_map,requirements=requirements,rlevel=requiredLevel,ctx="diagnostics")
Example #6
0
from models import Credential, Activity, AccessRequirement
from random import randint, sample
from uuid import uuid4
from datetime import datetime, timedelta
from pytz import utc


def randomId(size=6):
    return "".join([str(randint(0, 9)) for a in range(size)])


numUsers = 35
maxCredentialsPerUser = 8
now = datetime.now(utc)

session = Config.ScopedSession()


def makeUsers(numUsers, maxCredentialsPerUser, priority):
    Users = {}
    for u in range(numUsers):
        memberId = memberid = randomId(4)
        Users[memberId] = []
        for un in range(1):  #range(randint(0,maxCredentialsPerUser)):
            start = now - timedelta(days=randint(0, 12))
            end = now + timedelta(days=randint(0, 36))
            c = Credential(facility="frontdoor",
                           memberid=memberId,
                           credential=randomId(9),
                           type="fob",
                           effective=start,
Example #7
0
def hardware():
    g.dbsession = Config.ScopedSession()
    #boards = g.dbsession.query(Board).all()
    #facilities = g.dbsession.query(Facility).order_by(Facility.name).all()
    return render_template('configuration.html', ctx="hardware")