def main(cursor, forAuthor, start=None, end=None):
    if start is not None:
        start = Time.fromISO8601TimeAndDate(start).asDatetime()
    else:
        start = datetime.now() - timedelta(days=365)
    if end is not None:
        end = Time.fromISO8601TimeAndDate(end).asDatetime()
    else:
        end = datetime.now()

    statement = (
        "select time, ticket, field, oldvalue, newvalue, author "
        "from ticket_change "
        "where field = 'keywords' and (time > %(start)d and time < %(end)d) "
        "order by time asc") % {
            'start': time.mktime(start.utctimetuple()),
            'end': time.mktime(end.utctimetuple())
        }
    cursor.execute(statement)
    for (when, ticket, field, old, new, author) in cursor.fetchall():

        # Check to see if it is by the right author
        if author != forAuthor:
            continue

        if 'review' in old and 'review' not in new:
            print 'Reviewed', ticket, 'on', datetime.fromtimestamp(when)

    raise SystemExit()
def main(cursor, start=None, end=None):
    if start is not None:
        start = Time.fromISO8601TimeAndDate(start).asDatetime()
    else:
        start = datetime.now() - timedelta(days=365)
    if end is not None:
        end = Time.fromISO8601TimeAndDate(end).asDatetime()
    else:
        end = datetime.now()

    reviewers = {}

    statement = (
        "select time, ticket, field, oldvalue, newvalue, author "
        "from ticket_change "
        "where field = 'keywords' and (time > %(start)d and time < %(end)d) "
        "order by time asc") % {
            'start': time.mktime(start.utctimetuple()),
            'end': time.mktime(end.utctimetuple())
        }
    cursor.execute(statement)
    for (when, ticket, field, old, new, author) in cursor.fetchall():
        if 'review' in old and 'review' not in new:
            reviewers[author] = reviewers.get(author, 0) + 1

    return tracstats.Frequencies(
        "Ticket Reviewers", sorted(reviewers.items(), key=lambda (a, b): b))
示例#3
0
    def _parse_get_bucket(self, xml_bytes):
        root = XML(xml_bytes)
        name = root.findtext("Name")
        prefix = root.findtext("Prefix")
        marker = root.findtext("Marker")
        max_keys = root.findtext("MaxKeys")
        is_truncated = root.findtext("IsTruncated")
        contents = []

        for content_data in root.findall("Contents"):
            key = content_data.findtext("Key")
            date_text = content_data.findtext("LastModified")
            modification_date = Time.fromISO8601TimeAndDate(
                date_text).asDatetime()
            etag = content_data.findtext("ETag")
            size = content_data.findtext("Size")
            storage_class = content_data.findtext("StorageClass")
            owner_id = content_data.findtext("Owner/ID")
            owner_display_name = content_data.findtext("Owner/DisplayName")
            owner = ItemOwner(owner_id, owner_display_name)
            content_item = BucketItem(key, modification_date, etag, size,
                                      storage_class, owner)
            contents.append(content_item)

        common_prefixes = []
        for prefix_data in root.findall("CommonPrefixes"):
            common_prefixes.append(prefix_data.text)

        return BucketListing(name, prefix, marker, max_keys, is_truncated,
                             contents, common_prefixes)
示例#4
0
文件: client.py 项目: zancas/txaws
    def _parse_get_bucket(self, xml_bytes):
        root = XML(xml_bytes)
        name = root.findtext("Name")
        prefix = root.findtext("Prefix")
        marker = root.findtext("Marker")
        max_keys = root.findtext("MaxKeys")
        is_truncated = root.findtext("IsTruncated")
        contents = []

        for content_data in root.findall("Contents"):
            key = content_data.findtext("Key")
            date_text = content_data.findtext("LastModified")
            modification_date = Time.fromISO8601TimeAndDate(
                date_text).asDatetime()
            etag = content_data.findtext("ETag")
            size = content_data.findtext("Size")
            storage_class = content_data.findtext("StorageClass")
            owner_id = content_data.findtext("Owner/ID")
            owner_display_name = content_data.findtext("Owner/DisplayName")
            owner = ItemOwner(owner_id, owner_display_name)
            content_item = BucketItem(key, modification_date, etag, size,
                                      storage_class, owner)
            contents.append(content_item)

        common_prefixes = []
        for prefix_data in root.findall("CommonPrefixes"):
            common_prefixes.append(prefix_data.text)

        return BucketListing(name, prefix, marker, max_keys, is_truncated,
                             contents, common_prefixes)
示例#5
0
文件: cal.py 项目: jonathanj/mantissa
 def peerRequestedAppointment(self, whom, when):
     app = Appointment(
         store=self.store, when=Time.fromISO8601TimeAndDate(when),
         withWhomUsername=whom.localpart, withWhomDomain=whom.domain,
         withWhomShareID=whom.shareID, remoteID=whom.shareID)
     role = getPrimaryRole(self.store, u"%s@%s" % (whom.localpart, whom.domain), True)
     appointmentID = role.shareItem(app, interfaces=[IMessageReceiver]).shareID
     return {'appointmentID': appointmentID}
示例#6
0
文件: cal.py 项目: rcarmo/divmod.org
 def peerRequestedAppointment(self, whom, when):
     app = Appointment(
         store=self.store, when=Time.fromISO8601TimeAndDate(when),
         withWhomUsername=whom.localpart, withWhomDomain=whom.domain,
         withWhomShareID=whom.shareID, remoteID=whom.shareID)
     role = getPrimaryRole(self.store, u"%s@%s" % (whom.localpart, whom.domain), True)
     appointmentID = role.shareItem(app, interfaces=[IMessageReceiver]).shareID
     return {'appointmentID': appointmentID}
def main(cursor, forAuthor, start=None, end=None):
    if start is not None:
        start = Time.fromISO8601TimeAndDate(start).asDatetime()
    else:
        start = datetime.now() - timedelta(days=365)
    if end is not None:
        end = Time.fromISO8601TimeAndDate(end).asDatetime()
    else:
        end = datetime.now()

    for change in tracstats.changes(cursor, start, end):
        if change['author'] != forAuthor:
            continue

        if change['old'] != 'closed' and change['new'] == 'closed':
            print 'Closed', change['ticket'], 'on', change['time']

    raise SystemExit()
示例#8
0
def main(cursor, start=None, end=None):
    if start is not None:
        start = Time.fromISO8601TimeAndDate(start).asDatetime()
    else:
        start = datetime.now() - timedelta(days=365)
    if end is not None:
        end = Time.fromISO8601TimeAndDate(end).asDatetime()
    else:
        end = datetime.now()

    closers = {}

    for change in tracstats.changes(cursor, start, end):
        if change['old'] != 'closed' and change['new'] == 'closed':
            closers[change['author']] = closers.get(change['author'], 0) + 1

    return tracstats.Frequencies(
            "Ticket Closers",
            sorted(closers.items(), key=lambda (a, b): b))
示例#9
0
文件: client.py 项目: zancas/txaws
 def _parse_list_buckets(self, xml_bytes):
     """
     Parse XML bucket list response.
     """
     root = XML(xml_bytes)
     buckets = []
     for bucket_data in root.find("Buckets"):
         name = bucket_data.findtext("Name")
         date_text = bucket_data.findtext("CreationDate")
         date_time = Time.fromISO8601TimeAndDate(date_text).asDatetime()
         bucket = Bucket(name, date_time)
         buckets.append(bucket)
     return buckets
示例#10
0
 def _parse_list_buckets(self, xml_bytes):
     """
     Parse XML bucket list response.
     """
     root = XML(xml_bytes)
     buckets = []
     for bucket_data in root.find("Buckets"):
         name = bucket_data.findtext("Name")
         date_text = bucket_data.findtext("CreationDate")
         date_time = Time.fromISO8601TimeAndDate(date_text).asDatetime()
         bucket = Bucket(name, date_time)
         buckets.append(bucket)
     return buckets
示例#11
0
    def formatEntry(self, formatting, entry):
        """
        Format an Superfeedr entry element according to the formatting type.
        """
        parts = [
            getattr(entry, elemName, None) or u'<unknown>'
            for elemName in formatting]
        parts = u' -- '.join(map(str, parts))

        try:
            timestamp = Time.fromISO8601TimeAndDate(
                str(entry.published)).asHumanly(tzinfo=const.timezone)
            timestamp = u' (%s)' % (timestamp,)
        except ValueError:
            timestamp = u''

        return u'%s%s' % (parts, timestamp)
示例#12
0
    def formatEntry(self, formatting, entry):
        """
        Format an Superfeedr entry element according to the formatting type.
        """
        parts = [
            getattr(entry, elemName, None) or u'<unknown>'
            for elemName in formatting
        ]
        parts = u' -- '.join(map(str, parts))

        try:
            timestamp = Time.fromISO8601TimeAndDate(str(
                entry.published)).asHumanly(tzinfo=const.timezone)
            timestamp = u' (%s)' % (timestamp, )
        except ValueError:
            timestamp = u''

        return u'%s%s' % (parts, timestamp)
示例#13
0
        s = Store()
        err = self.assertRaises(AttributeError,
                                    FunkyItem, store=s, name="foo")
        self.assertEqual(str(err), "'FunkyItem' can't set attribute 'name'")


class WhiteboxComparableTest(TestCase):
    def test_likeRejectsIllegalOperations(self):
        """
        Test that invoking the underlying method which provides the interface
        to the LIKE operator raises a TypeError if it is invoked with too few
        arguments.
        """
        self.assertRaises(TypeError, Comparable()._like, 'XYZ')

someRandomDate = Time.fromISO8601TimeAndDate("1980-05-29")

class DatedThing(Item):
    date = timestamp(default=someRandomDate)

class CreationDatedThing(Item):
    creationDate = timestamp(defaultFactory=lambda : Time())

class StructuredDefaultTestCase(TestCase):
    def testTimestampDefault(self):
        s = Store()
        sid = DatedThing(store=s).storeID
        self.assertEqual(s.getItemByID(sid).date,
                          someRandomDate)

    def testTimestampNow(self):
示例#14
0
    @raise ValueError: If no XSI type information could be found

    @rtype: C{unicode}
    @return: The XSI type string
    """
    xsiType = elem.get(XSI + 'type')
    if xsiType is None:
        xsiType = elem.get(XSI2001 + 'type')

    if xsiType is not None:
        return unicode(xsiType, 'ascii')

    raise ValueError(u'"%s" has no XSI type information' % (elem.tag,))


_xsiTypes = {
    u'xsd:string': unicode,
    u'xsd:int': int,
    u'xsd:boolean': lambda t: t.lower() == 'true',
    u'xsd:dateTime': lambda t: Time.fromISO8601TimeAndDate(t),
    }

def getValueFromXSIType(elem, xsiType=None):
    """
    Convert C{elem} to it's Python value based on it's C{xsi:type} attriubte.
    """
    if xsiType is None:
        xsiType = getXSIType(elem)
    return _xsiTypes[xsiType](elem.text)