Exemplo n.º 1
0
 def wiki_page_changed(self, page, version, t, comment, author, ipnr):
     log = EventLogIO()
     event = {}
     event['event'] = "wiki_edited"
     event['project'] = self.env_name
     event['username'] = author
     log.write_event(event)
Exemplo n.º 2
0
 def ticket_created(self, ticket):
     event_log = EventLogIO()
     event = {}
     event['event'] = "ticket_created"
     event['project'] = self.env_name
     event['username'] = ticket['reporter']
     event_log.write_event(event)
Exemplo n.º 3
0
 def download_created(self, context, download):
     log = EventLogIO()
     event = {}
     event['event'] = "release_uploaded"
     event['project'] = self.env_name
     event['username'] = context.req.authname
     log.write_event(event)
Exemplo n.º 4
0
 def wiki_page_added(self, page):
     log = EventLogIO()
     event = {}
     event['event'] = "wiki_created"
     event['project'] = self.env_name
     event['username'] = page.author
     log.write_event(event)
Exemplo n.º 5
0
class FilesAnalytics(Component):
    """
    Class handling 'file_uploaded', 'file_copied', 'file_deleted', 'file_downloaded'
    """
    implements(IFilesEventListener)

    def __init__(self):
        self.event_log = EventLogIO()

    def node_created(self, username, target_node):
        if target_node.is_file():
            self._event_write('file_uploaded', username)
            if target_node.is_download():
                self._event_write('release_uploaded', username)

    def node_moved(self, username, target_node, destination_node):
        if target_node.is_file():
            self._event_write('file_moved', username)
            if target_node.is_download():
                if destination_node.is_download():
                    self._event_write('release_moved', username)
                else:
                    self._event_write('release_deleted', username)
            elif destination_node.is_download():
                self._event_write('release_uploaded', username)

    def node_copied(self, username, target_node, destination_node):
        if target_node.is_file():
            self._event_write('file_copied', username)
            if target_node.is_download():
                if destination_node.is_download():
                    self._event_write('release_copied', username)
                # download -> file copies are file_copied events
            elif destination_node.is_download():
                self._event_write('release_uploaded', username)

    def node_removed(self, username, target_node):
        if target_node.is_file():
            self._event_write('file_deleted', username)
            if target_node.is_download():
                self._event_write('release_deleted', username)

    def node_downloaded(self, username, target_node):
        if target_node.is_file():
            self._event_write('file_downloaded', username)
            if target_node.is_download():
                self._event_write('release_downloaded', username)

    def _event_write(self, event_name, username):
        event = {
            'event': event_name,
            'project': self.env.project_identifier,
            'username': username,
            'comment': ''
        }

        try:
            self.event_log.write_event(event)
        except:
            self.log.error("FilesAnalytics._event_write(): EventLogIO.write_event failed")
Exemplo n.º 6
0
 def download_created(self, context, download):
     log = EventLogIO()
     event = {}
     event['event'] = "release_uploaded"
     event['project'] = self.env_name
     event['username'] = context.req.authname
     log.write_event(event)
Exemplo n.º 7
0
 def topic_deleted(self, context, topic):
     log = EventLogIO()
     event = {}
     event['event'] = "topic_deleted"
     event['project'] = self.env_name
     event['username'] = context.req.authname
     event['forum_id'] = topic['forum']
     log.write_event(event)
Exemplo n.º 8
0
 def message_deleted(self, context, message):
     log = EventLogIO()
     event = {}
     event['event'] = "message_deleted"
     event['project'] = self.env_name
     event['username'] = context.req.authname
     event['forum_id'] = message['forum']
     log.write_event(event)
Exemplo n.º 9
0
 def ticket_changed(self, ticket, comment, author, old_values):
     if ticket['status'] == 'closed':
         event_log = EventLogIO()
         event = {}
         event['event'] = "ticket_closed"
         event['project'] = self.env_name
         event['username'] = ticket['author']
         event_log.write_event(event)
Exemplo n.º 10
0
 def downloaded(self, context, download):
     """Called when a file is downloaded
     """
     log = EventLogIO()
     event = {}
     event['event'] = "release_downloaded"
     event['project'] = self.env_name
     event['username'] = context.req.authname
     log.write_event(event)
Exemplo n.º 11
0
 def downloaded(self, context, download):
     """Called when a file is downloaded
     """
     log = EventLogIO()
     event = {}
     event['event'] = "release_downloaded"
     event['project'] = self.env_name
     event['username'] = context.req.authname
     log.write_event(event)
Exemplo n.º 12
0
    def _log_event(self, project, eventname):
        """
        Internal method for creating event in analytics log
        """
        self.log.info('Received notification for %s: %s' % (project, eventname))

        # Load username from project author information or fallback to anonymous
        user = project.author
        username = user.username if user else 'anonymous'

        log = EventLogIO()
        event = {'event':eventname, 'project':project.env_name, 'username':username}
        log.write_event(event)
Exemplo n.º 13
0
    def pre_process_request(self, req, handler):
        # If request is applicable (not in ignore list)
        # Write page_request in event log
        if self.is_applicable(req):
            event = {}
            event['event'] = 'page_request'
            event['project'] = self.env_name
            event['username'] = req.authname
            event['method'] = req.method
            event['path_info'] = req.path_info

            log = EventLogIO()
            log.write_event(event)
        return handler
Exemplo n.º 14
0
    def pre_process_request(self, req, handler):
        # If request is applicable (not in ignore list)
        # Write page_request in event log
        if self.is_applicable(req):
            event = {}
            event['event'] = 'page_request'
            event['project'] = self.env_name
            event['username'] = req.authname
            event['method'] = req.method
            event['path_info'] = req.path_info

            log = EventLogIO()
            log.write_event(event)
        return handler
Exemplo n.º 15
0
class EventGenerator(object):
    """
    Simple analytical event generator
    """
    def __init__(self):
        self.log = EventLogIO()
        self.etl = EventLogETL()

    def generate(self, count, projects, users, events):
        event = dict()

        for i in xrange(count):
            eventtype = random.choice(events)
            if eventtype not in EVENT_DESCRIPTIONS.keys():
                logging.warning('Event type "%s" is not known, skipping it' %
                                eventtype)
                continue

            event['project'] = random.choice(projects)
            event['event'] = eventtype
            event['username'] = random.choice(users)

            self.log.write_event(event)
            print '.',

        print ''

    def process(self):
        # Update tables
        self.etl.run()

        # Run summaries from last two full hours
        dt_now = datetime.utcnow()
        dt_end = dt_now - timedelta(minutes=dt_now.minute,
                                    seconds=dt_now.second,
                                    microseconds=dt_now.microsecond)
        dt_start = dt_end - timedelta(hours=2)

        stl = SummaryETL(dt_start, dt_end)
        stl.run()
Exemplo n.º 16
0
class EventGenerator(object):
    """
    Simple analytical event generator
    """
    def __init__(self):
        self.log = EventLogIO()
        self.etl = EventLogETL()


    def generate(self, count, projects, users, events):
        event = dict()

        for i in xrange(count):
            eventtype = random.choice(events)
            if eventtype not in EVENT_DESCRIPTIONS.keys():
                logging.warning('Event type "%s" is not known, skipping it' % eventtype)
                continue

            event['project'] = random.choice(projects)
            event['event'] = eventtype
            event['username'] = random.choice(users)

            self.log.write_event(event)
            print '.',

        print ''


    def process(self):
        # Update tables
        self.etl.run()

        # Run summaries from last two full hours
        dt_now = datetime.utcnow()
        dt_end = dt_now - timedelta(minutes = dt_now.minute, seconds = dt_now.second, microseconds = dt_now.microsecond)
        dt_start = dt_end - timedelta(hours = 2)

        stl = SummaryETL(dt_start, dt_end)
        stl.run()
Exemplo n.º 17
0
 def __init__(self):
     self.log = EventLogIO()
     self.etl = EventLogETL()
Exemplo n.º 18
0
 def __init__(self):
     self.event_log = EventLogIO()
Exemplo n.º 19
0
 def __init__(self):
     self.event_log = EventLogIO()
Exemplo n.º 20
0
class FilesAnalytics(Component):
    """
    Class handling 'file_uploaded', 'file_copied', 'file_deleted', 'file_downloaded'
    """
    implements(IFilesEventListener)

    def __init__(self):
        self.event_log = EventLogIO()

    def node_created(self, username, target_node):
        if target_node.is_file():
            self._event_write('file_uploaded', username)
            if target_node.is_download():
                self._event_write('release_uploaded', username)

    def node_moved(self, username, target_node, destination_node):
        if target_node.is_file():
            self._event_write('file_moved', username)
            if target_node.is_download():
                if destination_node.is_download():
                    self._event_write('release_moved', username)
                else:
                    self._event_write('release_deleted', username)
            elif destination_node.is_download():
                self._event_write('release_uploaded', username)

    def node_copied(self, username, target_node, destination_node):
        if target_node.is_file():
            self._event_write('file_copied', username)
            if target_node.is_download():
                if destination_node.is_download():
                    self._event_write('release_copied', username)
                # download -> file copies are file_copied events
            elif destination_node.is_download():
                self._event_write('release_uploaded', username)

    def node_removed(self, username, target_node):
        if target_node.is_file():
            self._event_write('file_deleted', username)
            if target_node.is_download():
                self._event_write('release_deleted', username)

    def node_downloaded(self, username, target_node):
        if target_node.is_file():
            self._event_write('file_downloaded', username)
            if target_node.is_download():
                self._event_write('release_downloaded', username)

    def _event_write(self, event_name, username):
        event = {
            'event': event_name,
            'project': self.env.project_identifier,
            'username': username,
            'comment': ''
        }

        try:
            self.event_log.write_event(event)
        except:
            self.log.error(
                "FilesAnalytics._event_write(): EventLogIO.write_event failed")
Exemplo n.º 21
0
 def __init__(self):
     self.log = EventLogIO()
     self.etl = EventLogETL()
Exemplo n.º 22
0
# Generic script for all source control management incoming hooks

import sys
from multiproject.core.analytics.event import EventLogIO
from datetime import datetime
event_log = EventLogIO()

script, repo_path, author = sys.argv

event_log.write_event({'username':author,
                       'project':repo_path.split("/")[-3],
                       'timestamp':datetime.utcnow(),
                       'event':'source_checkin'
                       })