예제 #1
0
def logRoleGrant(context, receiver, role):
    # adapted from subscribers.sharing.SharingHandler
    # this function should be replaced by a factored out variant from patches.py:sharing_handle_form
    # to have an actual context-diff.

    from zopyx.plone.persistentlogger.logger import IPersistentLogger

    logger = IPersistentLogger(context)

    user = plone.api.user.get_current()
    username = user.getUserName()
    info_url = '/@@user-information?userid={}'.format(username)
    email = user.getProperty('email')
    fullname = user.getProperty('fullname')
    if fullname and email:
        username = '******'.format(username, fullname, email)

    diff_context = {
        'role_changes': {
            receiver.getId(): {
                'fullname': receiver.getProperty('fullname'),
                'email': receiver.getProperty('email'),
                'added': {role,},
                'removed': set(),
            }
        }
    }

    logger.log('Sharing updated (via Role Request)',
               level='info',
               username=username,
               info_url=info_url,
               details=diff_context)
예제 #2
0
 def log_clear(self):
     """ Clear persistent log """
     alsoProvides(self.request, IDisableCSRFProtection)
     logger = IPersistentLogger(self.context)
     logger.clear()
     msg = u'Log entries cleared'
     logger.log(msg, 'info')
     self.context.plone_utils.addPortalMessage(msg)
     return self.request.response.redirect('{}/persistent-log'.format(
         self.context.absolute_url()))
예제 #3
0
 def log_clear(self):
     """ Clear persistent log """
     alsoProvides(self.request, IDisableCSRFProtection)
     logger = IPersistentLogger(self.context)
     logger.clear()
     msg = u'Log entries cleared'
     logger.log(msg, 'info')
     self.context.plone_utils.addPortalMessage(msg)
     return self.request.response.redirect(
         '{}/persistent-log'.format(self.context.absolute_url()))
예제 #4
0
 def test_entries(self):
     c = self.portal
     logger = IPersistentLogger(c)
     logger.log(u'error', 'error')
     logger.log(u'info', 'info')
     self.assertEqual(len(logger), 2)
     entries = logger.entries
     self.assertEqual(len(entries), 2)
     for entry in entries:
         self.assertEqual(entry, logger.entry_by_uuid(entry['uuid']))
예제 #5
0
 def test_logging(self):
     c = self.portal
     logger = IPersistentLogger(c)
     self.assertEqual(len(logger), 0)
     logger.log(u'error', 'error')
     logger.log(u'info', 'info')
     self.assertEqual(len(logger), 2)
     logger.clear()
     self.assertEqual(len(logger), 0)
     self.assertEqual(logger.get_last_user(), 'test-user')
예제 #6
0
def create_accounting_account(obj, event):
    """ Create an IAccount for a registered resource during object creation """

    logger = IPersistentLogger(obj)

    try:
        obj.addAccount()
        logger.log('Account created on accounting server', level='info')
    except ConflictError:
        raise
    except Exception as e:
        pass
예제 #7
0
 def demo(self):
     """ Create demo logger entries """
     import time
     import random
     alsoProvides(self.request, IDisableCSRFProtection)
     logger = IPersistentLogger(self.context)
     for i in range(20):  
         text = u'some text üöä {}'.format(i)
         level = random.choice(['debug', 'info', 'warn', 'error', 'fatal'])
         details = dict(a=random.random(), b=random.random(), c=random.random())
         logger.log(text, level, details)
         time.sleep(0.3)
     self.context.plone_utils.addPortalMessage(u'Demo logger entries created')
     self.request.response.redirect(self.context.absolute_url() + '/@@persistent-log')
예제 #8
0
 def demo(self):
     """ Create demo logger entries """
     import time
     import random
     alsoProvides(self.request, IDisableCSRFProtection)
     logger = IPersistentLogger(self.context)
     for i in range(20):
         text = u'some text üöä {}'.format(i)
         level = random.choice(['debug', 'info', 'warn', 'error', 'fatal'])
         details = dict(a=random.random(),
                        b=random.random(),
                        c=random.random())
         logger.log(comment=text, level=level, details=details)
         time.sleep(0.3)
     self.context.plone_utils.addPortalMessage(
         u'Demo logger entries created')
     self.request.response.redirect(self.context.absolute_url() +
                                    '/@@persistent-log')
예제 #9
0
def SharingHandler(event):
    """ Log/intercept @@sharing changes """

    context = event.object
    logger = IPersistentLogger(context)

    user = plone.api.user.get_current()
    username = user.getUserName()
    info_url = '/@@user-information?userid={}'.format(username)
    email = user.getProperty('email')
    fullname = user.getProperty('fullname')
    if fullname and email:
        username = '******'.format(username, fullname, email)

    logger.log('Sharing updated',
               level='info',
               username=username,
               info_url=info_url,
               details=event.diff_context)