Skip to content
This repository has been archived by the owner on Apr 9, 2023. It is now read-only.

Commit

Permalink
Adding logging of activity using events
Browse files Browse the repository at this point in the history
  • Loading branch information
bloodbare committed Dec 18, 2016
1 parent 61ad078 commit ca2d0d7
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/plone.server/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
ErrorResponse objects with Exceptions that implement ISerializableException.
[vangheem]

- Add Events to enable audit of activity
[ramonnb]

- Add the JSON Field
[ramonnb]

Expand Down
10 changes: 8 additions & 2 deletions src/plone.server/plone/server/api/content.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
from plone.server.events import ObjectFinallyCreatedEvent
from plone.server.events import ObjectFinallyDeletedEvent
from plone.server.events import ObjectFinallyModifiedEvent
from plone.server.events import ObjectFinallyVisitedEvent
from plone.server.events import ObjectPermissionsViewEvent
from plone.server.events import ObjectPermissionsModifiedEvent
from plone.server.exceptions import ConflictIdOnContainer
from plone.server.interfaces import IAbsoluteURL
from plone.server.json.exceptions import DeserializationError
Expand Down Expand Up @@ -41,7 +44,9 @@ async def __call__(self):
serializer = getMultiAdapter(
(self.context, self.request),
IResourceSerializeToJson)
return serializer()
result = serializer()
await notify(ObjectFinallyVisitedEvent(self.context))
return result


class DefaultPOST(Service):
Expand Down Expand Up @@ -178,6 +183,7 @@ async def __call__(self):
'principal_permission': prinperm._byrow,
'principal_role': prinrole._byrow,
})
await notify(ObjectPermissionsViewEvent(self.context))
return result


Expand All @@ -191,7 +197,7 @@ async def __call__(self):
for user, roles in data['prinrole'].items():
for role in roles:
prinrole.assignRoleToPrincipal(role, user)
await notify(ObjectFinallyModifiedEvent(self.context))
await notify(ObjectPermissionsModifiedEvent(self.context))


class DefaultDELETE(Service):
Expand Down
1 change: 1 addition & 0 deletions src/plone.server/plone/server/directives.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ class index(MetadataDictDirective):
'date',
'boolean',
'binary',
'object',
'float',
'path'
)
Expand Down
18 changes: 18 additions & 0 deletions src/plone.server/plone/server/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
from plone.server.interfaces import IObjectFinallyCreatedEvent
from plone.server.interfaces import IObjectFinallyDeletedEvent
from plone.server.interfaces import IObjectFinallyModifiedEvent
from plone.server.interfaces import IObjectFinallyVisitedEvent
from plone.server.interfaces import IObjectPermissionsViewEvent
from plone.server.interfaces import IObjectPermissionsModifiedEvent
from zope.component._api import getSiteManager
from zope.component._declaration import adapter
from zope.component.interfaces import ComponentLookupError
Expand Down Expand Up @@ -33,6 +36,21 @@ class ObjectFinallyModifiedEvent(ObjectEvent):
"""An object has been modified."""


@implementer(IObjectFinallyVisitedEvent)
class ObjectFinallyVisitedEvent(ObjectEvent):
"""An object has been modified."""


@implementer(IObjectPermissionsViewEvent)
class ObjectPermissionsViewEvent(ObjectEvent):
"""An object has been modified."""


@implementer(IObjectPermissionsModifiedEvent)
class ObjectPermissionsModifiedEvent(ObjectEvent):
"""An object has been modified."""


@implementer(INewUserAdded)
class NewUserAdded(object):
"""An object has been created."""
Expand Down
3 changes: 3 additions & 0 deletions src/plone.server/plone/server/interfaces/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
from plone.server.interfaces.events import IObjectFinallyDeletedEvent # noqa
from plone.server.interfaces.events import IObjectFinallyModifiedEvent # noqa
from plone.server.interfaces.exceptions import ISerializableException # noqa
from plone.server.interfaces.events import IObjectFinallyVisitedEvent # noqa
from plone.server.interfaces.events import IObjectPermissionsViewEvent # noqa
from plone.server.interfaces.events import IObjectPermissionsModifiedEvent # noqa
from plone.server.interfaces.files import IFile # noqa
from plone.server.interfaces.files import IFileField # noqa
from plone.server.interfaces.files import IFileManager # noqa
Expand Down
12 changes: 12 additions & 0 deletions src/plone.server/plone/server/interfaces/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,18 @@ class IObjectFinallyModifiedEvent(interfaces.IObjectEvent):
The location will usually be ``None`` for this event."""


class IObjectFinallyVisitedEvent(interfaces.IObjectEvent):
"""An object has been visited."""


class IObjectPermissionsViewEvent(interfaces.IObjectEvent):
"""An object permissions has been visited."""


class IObjectPermissionsModifiedEvent(interfaces.IObjectEvent):
"""An object permissions has been modified."""


class INewUserAdded(Interface):
"""A new user logged in.
Expand Down

0 comments on commit ca2d0d7

Please sign in to comment.