コード例 #1
0
ファイル: directory.py プロジェクト: anemitz/calendarserver
def recordBasicInfo(directory, record):
    """
    Basic information for a record.
    """
    table = Table()

    def add(name, value):
        if value:
            table.addRow((name, value))

    add("Service"    , record.service   )
    add("Record Type", record.recordType)

    for shortName in record.shortNames:
        add("Short Name", shortName)

    add("GUID"      , record.guid     )
    add("Full Name" , record.fullName )
    add("First Name", record.firstName)
    add("Last Name" , record.lastName )

    for email in record.emailAddresses:
        add("Email Address", email)

    for cua in record.calendarUserAddresses:
        add("Calendar User Address", cua)

    add("Server ID"           , record.serverID              )
    add("Partition ID"        , record.partitionID           )
    add("Enabled"             , record.enabled               )
    add("Enabled for Calendar", record.enabledForCalendaring )
    add("Enabled for Contacts", record.enabledForAddressBooks)

    return succeed(table.toString())
コード例 #2
0
ファイル: vfs.py プロジェクト: redtailtech/calendarserver
def tableString(rows, header=None):
    table = Table()
    if header:
        table.addHeader(header)
    for row in rows:
        table.addRow(row)

    output = StringIO()
    table.printTable(os=output)
    return output.getvalue()
コード例 #3
0
ファイル: directory.py プロジェクト: advatar/CalendarServer
def summarizeRecords(directory, records):
    table = Table()

    table.addHeader((
        "UID",
        "Record Type",
        "Short Names",
        "Email Addresses",
        "Full Name",
    ))

    def formatItems(items):
        if items:
            return ", ".join(items)
        else:
            return None

    for record in records:
        table.addRow((
            record.uid,
            record.recordType,
            formatItems(record.shortNames),
            formatItems(record.emailAddresses),
            record.fullName,
        ))

    if table.rows:
        return succeed(table.toString())
    else:
        return succeed(None)
コード例 #4
0
ファイル: vfs.py プロジェクト: nunb/calendarserver
def tableString(rows, header=None):
    table = Table()
    if header:
        table.addHeader(header)
    for row in rows:
        table.addRow(row)

    output = StringIO()
    table.printTable(os=output)
    return output.getvalue()
コード例 #5
0
ファイル: directory.py プロジェクト: anemitz/calendarserver
def summarizeRecords(directory, records):
    table = Table()

    table.addHeader((
        "UID",
        "Record Type",
        "Short Names",
        "Email Addresses",
        "Full Name",
    ))

    def formatItems(items):
        if items:
            return ", ".join(items)
        else:
            return None

    for record in records:
        table.addRow((
            record.uid,
            record.recordType,
            formatItems(record.shortNames),
            formatItems(record.emailAddresses),
            record.fullName,
        ))

    if table.rows:
        return succeed(table.toString())
    else:
        return succeed(None)
コード例 #6
0
ファイル: directory.py プロジェクト: advatar/CalendarServer
def recordBasicInfo(directory, record):
    """
    Basic information for a record.
    """
    table = Table()

    def add(name, value):
        if value:
            table.addRow((name, value))

    add("Service", record.service)
    add("Record Type", record.recordType)

    for shortName in record.shortNames:
        add("Short Name", shortName)

    add("GUID", record.guid)
    add("Full Name", record.fullName)
    add("First Name", record.firstName)
    add("Last Name", record.lastName)

    try:
        for email in record.emailAddresses:
            add("Email Address", email)
    except AttributeError:
        pass

    try:
        for cua in record.calendarUserAddresses:
            add("Calendar User Address", cua)
    except AttributeError:
        pass

    add("Server ID", record.serverID)
    add("Enabled", record.enabled)
    add("Enabled for Calendar", record.hasCalendars)
    add("Enabled for Contacts", record.hasContacts)

    return succeed(table.toString())
コード例 #7
0
ファイル: directory.py プロジェクト: advatar/CalendarServer
def recordProxyAccessInfo(directory, record):
    """
    Group membership info for a record.
    """

    # FIXME: This proxy finding logic should be in DirectoryRecord.

    def meAndMyGroups(record=record, groups=set((record, ))):
        for group in record.groups():
            groups.add(group)
            meAndMyGroups(group, groups)
        return groups

    # FIXME: This module global is really gross.
    from twistedcaldav.directory.calendaruserproxy import ProxyDBService

    rows = []
    proxyInfoSeen = set()
    for record in meAndMyGroups():
        proxyUIDs = (yield ProxyDBService.getMemberships(record.uid))

        for proxyUID in proxyUIDs:
            # These are of the form: F153A05B-FF27-4B6C-BD6D-D1239D0082B0#calendar-proxy-read
            # I don't know how to get DirectoryRecord objects for the proxyUID here, so, let's cheat for now.
            proxyUID, proxyType = proxyUID.split("#")
            if (proxyUID, proxyType) not in proxyInfoSeen:
                proxyRecord = yield directory.recordWithUID(proxyUID)
                rows.append((proxyUID, proxyRecord.recordType,
                             proxyRecord.shortNames[0], proxyRecord.fullName,
                             proxyType))
                proxyInfoSeen.add((proxyUID, proxyType))

    if not rows:
        returnValue(None)

    rows = sorted(rows, key=lambda row: (row[1], row[2], row[4]))

    table = Table()
    table.addHeader(
        ("UID", "Record Type", "Short Name", "Full Name", "Access"))
    for row in rows:
        table.addRow(row)

    returnValue(table.toString())
コード例 #8
0
ファイル: directory.py プロジェクト: advatar/CalendarServer
def recordGroupMembershipInfo(directory, record):
    """
    Group membership info for a record.
    """
    rows = []

    for group in record.groups():
        rows.append((group.uid, group.shortNames[0], group.fullName))

    if not rows:
        return succeed(None)

    rows = sorted(rows, key=lambda row: (row[1], row[2]))

    table = Table()
    table.addHeader(("UID", "Short Name", "Full Name"))
    for row in rows:
        table.addRow(row)

    return succeed(table.toString())
コード例 #9
0
ファイル: directory.py プロジェクト: eventable/CalendarServer
def recordProxyAccessInfo(directory, record):
    """
    Group membership info for a record.
    """
    # FIXME: This proxy finding logic should be in DirectoryRecord.

    def meAndMyGroups(record=record, groups=set((record,))):
        for group in record.groups():
            groups.add(group)
            meAndMyGroups(group, groups)
        return groups

    # FIXME: This module global is really gross.
    from twistedcaldav.directory.calendaruserproxy import ProxyDBService

    rows = []
    proxyInfoSeen = set()
    for record in meAndMyGroups():
        proxyUIDs = (yield ProxyDBService.getMemberships(record.uid))

        for proxyUID in proxyUIDs:
            # These are of the form: F153A05B-FF27-4B6C-BD6D-D1239D0082B0#calendar-proxy-read
            # I don't know how to get DirectoryRecord objects for the proxyUID here, so, let's cheat for now.
            proxyUID, proxyType = proxyUID.split("#")
            if (proxyUID, proxyType) not in proxyInfoSeen:
                proxyRecord = yield directory.recordWithUID(proxyUID)
                rows.append((proxyUID, proxyRecord.recordType, proxyRecord.shortNames[0], proxyRecord.fullName, proxyType))
                proxyInfoSeen.add((proxyUID, proxyType))

    if not rows:
        returnValue(None)

    rows = sorted(
        rows,
        key=lambda row: (row[1], row[2], row[4])
    )

    table = Table()
    table.addHeader(("UID", "Record Type", "Short Name", "Full Name", "Access"))
    for row in rows:
        table.addRow(row)

    returnValue(table.toString())
コード例 #10
0
ファイル: directory.py プロジェクト: anemitz/calendarserver
def recordGroupMembershipInfo(directory, record):
    """
    Group membership info for a record.
    """
    rows = []

    for group in record.groups():
        rows.append((group.uid, group.shortNames[0], group.fullName))

    if not rows:
        return succeed(None)

    rows = sorted(rows,
        key = lambda row: (row[1], row[2])
    )

    table = Table()
    table.addHeader(("UID", "Short Name", "Full Name"))
    for row in rows:
        table.addRow(row)

    return succeed(table.toString())