SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
A novel approach to undo
Modification audit logging and using
zc.beforestorage to time travel.
Sean	Upton	/	UPIQ
#ploneconf2016	|	@sdupton
Disclaimers
• Experimental approach
• Unfinished work in progress
• I’m here to pitch an idea about undo, whose
principles have been field tested…
– ... But we need a UI for this.
– .... I’m working on it.
• Today, we’ll look at the pieces and talk about
them.
• Maybe find a way forward for practical undo?
#ploneconf2016	|	@sdupton
Motivations
• Reasonable degree of interest on Github and
Twitter.
• Some of my users cost me hours fixing human
errors with programmatic monkey-wrenching.
• If we can use this programmatically in
repeatable ways, we can make something
user-facing, no?
• Because we cannot use ”Undo” to undo.
#ploneconf2016	|	@sdupton
The basics: audit logging
• Audit log of all changes, stored in ZODB
– Logging now is synchronous, may be async in future,
TBD.
– Log all of:
• Deletion
• Modification
• Move
• Addition
– Log independent of Catalog.
– Handlers call logging system
• Logging components adapt site, use annotations.
#ploneconf2016	|	@sdupton
Audit logging: usage
• Core components tested, but… still needs a
good UI.
• Outside of core use case, this could be used
for regulatory audit requirements (e.g. HIPAA).
• UI plan is enumerating in views:
– A view to enumerate changes, by “facility”
– A view to prune changes
• We may need better possible ZODB conflict
resolution strategy for queuing (LIFO insertion)
of modification facilities logged.
#ploneconf2016	|	@sdupton
Okay, so you log every change?
• Right, and we will have view to enumerate
these changes, in reverse chronological
(insertion) order.
– With filtering
– With batching
• For regulatory logging, you could to this to a
data retention threshold before pruning, or not
prune this at all. The change records are
small.
#ploneconf2016	|	@sdupton
Facility
• For each type of change we have a facility:
– Modifications
– Deletions
– Additions
– Moves / renames
• Each logs records with:
– UID
– Path
– Authenticated user
– Timestamp (python datetime, currently local time)
#ploneconf2016	|	@sdupton
But what do we do with this?
FIX	HUMAN	ERRORS!
#ploneconf2016	|	@sdupton
The plan
• I have used zc.beforestorage multiple times to
fix human errors, each time programmatically.
• If what you have is within your kept history,
going back in time is easy.
• We want to make this user-facing, not a
programmer’s problem.
• I’m creating a package called plone.wabac as
a transitional/experimental proof of concept.
– Now soliciting collaborators! J
#ploneconf2016	|	@sdupton
plone.wabac
• WABAC == “wayback”
• Transitional add-on
• Half-finished
• May get exploded and
federated elsewhere.
• Assumed goal of
eventual PLIP, once
proven.
• Want this to be testable
by users, uninstallable
in meantime.
#ploneconf2016	|	@sdupton
Restoration, not “Undo”
• We want to restore item to previous known-
good state:
– Before accidental deletion
– Before modification that was problematic.
• This might compete with CMFEditions, so may be a non-
problem.
• But my site stores non-content ZODB stuff on content objects,
so I cannot merely use CMFEditions for rollback.
– Before renaming or moving.
• User picks item from audit log, and clicks
“restore”. Or more than one item at a time.
#ploneconf2016	|	@sdupton
zc.beforestorage
• Time-travel through your kept history.
• !! Requires you keep history.
• !! Requires you keep enough history.
– We could use this on kept FileStorage backups too, if
we were clever and did not want to only go through
live history.
• But that is not in scope yet, requires configuration.
• Mostly, I want to undo things easily when the
“Oh ****” phone call comes in.
– Or better, tell the site admin how to fix it.
#ploneconf2016	|	@sdupton
Programmatic use
• Load storage wrapper programmatically.
• setSite() on the time-travelled version.
• Get your content;
• ZEXP export it;
• setSite() on live target;
• Restore from ZEXP.
• Repeat.
– Show example code
#ploneconf2016	|	@sdupton
Security disclaimers
• We might want to be able to stop ability to
undo things (e.g. delete something very bad,
very quickly, and very permanently).
• My vision now is a site-wide audit logging
facility accessible to Site Administrator or
Manager role.
• We can make this placeful if we index audit
trail by path.
– Not yet in scope.
– Need to ponder permissions for restoration.
#ploneconf2016	|	@sdupton
Next steps
• Finish the UI for enumeration, filtering, and
pruning of audit data.
• Come up with reasonable tactic for avoiding
conflict for audit logging key insertion.
• Views and adapters for restoration via
zc.beforestorage.
• Logging the restorations themselves.
• Prove concept universally useful, then PLIP it?
#ploneconf2016	|	@sdupton
Questions?
… and feedback via:
#ploneconf2016	|	@sdupton

Más contenido relacionado

La actualidad más candente

Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
Ross Snyder
 

La actualidad más candente (13)

Just Too Late
Just Too LateJust Too Late
Just Too Late
 
STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)
 
Engineers need to learn UXR
Engineers need to learn UXREngineers need to learn UXR
Engineers need to learn UXR
 
PhoneGap at JSConf
PhoneGap at JSConfPhoneGap at JSConf
PhoneGap at JSConf
 
Principles, Backbone and Bottlenose
Principles, Backbone and BottlenosePrinciples, Backbone and Bottlenose
Principles, Backbone and Bottlenose
 
Making Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceMaking Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux Conference
 
Deployments in one click!
Deployments in one click!Deployments in one click!
Deployments in one click!
 
2015 nouveaux outilsdevweb
2015 nouveaux outilsdevweb2015 nouveaux outilsdevweb
2015 nouveaux outilsdevweb
 
Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
 
Full stack-web-design
Full stack-web-designFull stack-web-design
Full stack-web-design
 
More Productivitiy with Spring Roo
More Productivitiy with Spring RooMore Productivitiy with Spring Roo
More Productivitiy with Spring Roo
 
Ease into HTML5 and CSS3
Ease into HTML5 and CSS3Ease into HTML5 and CSS3
Ease into HTML5 and CSS3
 
Cross-platform logging and analytics
Cross-platform logging and analyticsCross-platform logging and analytics
Cross-platform logging and analytics
 

Destacado

Academies everything to everyone for learning evermore
Academies everything to everyone for learning evermoreAcademies everything to everyone for learning evermore
Academies everything to everyone for learning evermore
Suzie McGuiggan
 

Destacado (17)

5 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 55 things STILL! TOO! HARD! in Plone 5
5 things STILL! TOO! HARD! in Plone 5
 
St. tammany chapter 6
St. tammany chapter 6St. tammany chapter 6
St. tammany chapter 6
 
Press
PressPress
Press
 
Abc
AbcAbc
Abc
 
Grupo psi tema 5
Grupo psi   tema 5Grupo psi   tema 5
Grupo psi tema 5
 
Abengoa y la desalación
Abengoa y la desalaciónAbengoa y la desalación
Abengoa y la desalación
 
Compatibilitynewsletter
CompatibilitynewsletterCompatibilitynewsletter
Compatibilitynewsletter
 
El teclado
El tecladoEl teclado
El teclado
 
O comércio
O comércioO comércio
O comércio
 
71czO7f-ADL
71czO7f-ADL71czO7f-ADL
71czO7f-ADL
 
Knowledge management
Knowledge managementKnowledge management
Knowledge management
 
сцусуцвмы
сцусуцвмысцусуцвмы
сцусуцвмы
 
Participacion ciuadana
Participacion ciuadanaParticipacion ciuadana
Participacion ciuadana
 
Academies everything to everyone for learning evermore
Academies everything to everyone for learning evermoreAcademies everything to everyone for learning evermore
Academies everything to everyone for learning evermore
 
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
Personal Branding Masterclass for Coaches, Consultants, Solopreneurs & Small ...
 
Montowanie zegarów bijących
Montowanie zegarów bijącychMontowanie zegarów bijących
Montowanie zegarów bijących
 
Competencias docentes 2.0
Competencias docentes 2.0Competencias docentes 2.0
Competencias docentes 2.0
 

Similar a A novel approach to Undo

Product Management at Contactually
Product Management at ContactuallyProduct Management at Contactually
Product Management at Contactually
Contactually
 

Similar a A novel approach to Undo (20)

Efficient Django
Efficient DjangoEfficient Django
Efficient Django
 
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
Journeys with Transmogrifier and friends or How not to get stuck in the Plone...
 
Devops For Drupal
Devops  For DrupalDevops  For Drupal
Devops For Drupal
 
SharePoint logging & debugging
SharePoint logging  & debugging SharePoint logging  & debugging
SharePoint logging & debugging
 
All about that reactive ui
All about that reactive uiAll about that reactive ui
All about that reactive ui
 
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
 
Building trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOpsBuilding trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOps
 
Revamping FYP using Agile Methodology.pptx
Revamping FYP using Agile Methodology.pptxRevamping FYP using Agile Methodology.pptx
Revamping FYP using Agile Methodology.pptx
 
Tools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipelineTools and practices to use in a Continuous Delivery pipeline
Tools and practices to use in a Continuous Delivery pipeline
 
Product Management at Contactually
Product Management at ContactuallyProduct Management at Contactually
Product Management at Contactually
 
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
 
Django production
Django productionDjango production
Django production
 
There is something about serverless
There is something about serverlessThere is something about serverless
There is something about serverless
 
Bulletproof design systems using storybook
Bulletproof design systems using storybookBulletproof design systems using storybook
Bulletproof design systems using storybook
 
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of HistoryFuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
Fuel Good 2018: Upgrades Made Easy: The Canadian Museum of History
 
Using React for the Mobile Web
Using React for the Mobile WebUsing React for the Mobile Web
Using React for the Mobile Web
 
Devops at Startup Weekend BXL
Devops at Startup Weekend BXLDevops at Startup Weekend BXL
Devops at Startup Weekend BXL
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 

Último

%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

Último (20)

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 

A novel approach to Undo

  • 1. A novel approach to undo Modification audit logging and using zc.beforestorage to time travel. Sean Upton / UPIQ #ploneconf2016 | @sdupton
  • 2. Disclaimers • Experimental approach • Unfinished work in progress • I’m here to pitch an idea about undo, whose principles have been field tested… – ... But we need a UI for this. – .... I’m working on it. • Today, we’ll look at the pieces and talk about them. • Maybe find a way forward for practical undo? #ploneconf2016 | @sdupton
  • 3. Motivations • Reasonable degree of interest on Github and Twitter. • Some of my users cost me hours fixing human errors with programmatic monkey-wrenching. • If we can use this programmatically in repeatable ways, we can make something user-facing, no? • Because we cannot use ”Undo” to undo. #ploneconf2016 | @sdupton
  • 4. The basics: audit logging • Audit log of all changes, stored in ZODB – Logging now is synchronous, may be async in future, TBD. – Log all of: • Deletion • Modification • Move • Addition – Log independent of Catalog. – Handlers call logging system • Logging components adapt site, use annotations. #ploneconf2016 | @sdupton
  • 5. Audit logging: usage • Core components tested, but… still needs a good UI. • Outside of core use case, this could be used for regulatory audit requirements (e.g. HIPAA). • UI plan is enumerating in views: – A view to enumerate changes, by “facility” – A view to prune changes • We may need better possible ZODB conflict resolution strategy for queuing (LIFO insertion) of modification facilities logged. #ploneconf2016 | @sdupton
  • 6. Okay, so you log every change? • Right, and we will have view to enumerate these changes, in reverse chronological (insertion) order. – With filtering – With batching • For regulatory logging, you could to this to a data retention threshold before pruning, or not prune this at all. The change records are small. #ploneconf2016 | @sdupton
  • 7. Facility • For each type of change we have a facility: – Modifications – Deletions – Additions – Moves / renames • Each logs records with: – UID – Path – Authenticated user – Timestamp (python datetime, currently local time) #ploneconf2016 | @sdupton
  • 8. But what do we do with this? FIX HUMAN ERRORS! #ploneconf2016 | @sdupton
  • 9. The plan • I have used zc.beforestorage multiple times to fix human errors, each time programmatically. • If what you have is within your kept history, going back in time is easy. • We want to make this user-facing, not a programmer’s problem. • I’m creating a package called plone.wabac as a transitional/experimental proof of concept. – Now soliciting collaborators! J #ploneconf2016 | @sdupton
  • 10. plone.wabac • WABAC == “wayback” • Transitional add-on • Half-finished • May get exploded and federated elsewhere. • Assumed goal of eventual PLIP, once proven. • Want this to be testable by users, uninstallable in meantime. #ploneconf2016 | @sdupton
  • 11. Restoration, not “Undo” • We want to restore item to previous known- good state: – Before accidental deletion – Before modification that was problematic. • This might compete with CMFEditions, so may be a non- problem. • But my site stores non-content ZODB stuff on content objects, so I cannot merely use CMFEditions for rollback. – Before renaming or moving. • User picks item from audit log, and clicks “restore”. Or more than one item at a time. #ploneconf2016 | @sdupton
  • 12. zc.beforestorage • Time-travel through your kept history. • !! Requires you keep history. • !! Requires you keep enough history. – We could use this on kept FileStorage backups too, if we were clever and did not want to only go through live history. • But that is not in scope yet, requires configuration. • Mostly, I want to undo things easily when the “Oh ****” phone call comes in. – Or better, tell the site admin how to fix it. #ploneconf2016 | @sdupton
  • 13. Programmatic use • Load storage wrapper programmatically. • setSite() on the time-travelled version. • Get your content; • ZEXP export it; • setSite() on live target; • Restore from ZEXP. • Repeat. – Show example code #ploneconf2016 | @sdupton
  • 14. Security disclaimers • We might want to be able to stop ability to undo things (e.g. delete something very bad, very quickly, and very permanently). • My vision now is a site-wide audit logging facility accessible to Site Administrator or Manager role. • We can make this placeful if we index audit trail by path. – Not yet in scope. – Need to ponder permissions for restoration. #ploneconf2016 | @sdupton
  • 15. Next steps • Finish the UI for enumeration, filtering, and pruning of audit data. • Come up with reasonable tactic for avoiding conflict for audit logging key insertion. • Views and adapters for restoration via zc.beforestorage. • Logging the restorations themselves. • Prove concept universally useful, then PLIP it? #ploneconf2016 | @sdupton
  • 16. Questions? … and feedback via: #ploneconf2016 | @sdupton