PANIC 7.3.0
-----------

7.3.0
    solve disabled bug, add event pushing
    save regexp of userfilters between ()
    allow multiple disable/acknowledge
    Merge branch 'documentation'
    fix setup.py


7.2.3 - fix bug on snaps widget
7.2.2 - fix bug when UserTimeout is not specified
7.2.1 - Merge panic-wiki-links by s2Innovation

PANIC_DEFAULT deprecated as option
Merge branch 'S2Innovation-panic-2-wiki-links' into develop
Solve bug on empty PanicUserTimeout  property
Merge branch 'panic-2-wiki-links' of https://github.com/S2Innovation/PANIC into S2Innovation-panic-2-wiki-links


7.2.0 - added back taurus3 compatibility, solved bug on history widget

7.1.2 - Solved bugs at gui startup

7.1.1 - Solved bugs on server init, add test_telegram.py

7.1.0 - Merged pull requests from github

S2Innovation: Solve -r problems, added MailRDashOptio for backwards compatibility
Gabriel Jover: Add Telegram messaging, using SendTelegram command and TGConfig property
Daniel Roldan: patch in setup.py for Debian packaging

7.0.0 AlarmHandler compatibility, use TANGO properties instead of PyAlarm class

6.5.1 Fixes on new/delete alarms by s2innovation

6.5.0: Fix New Alarm button bug

"New Alarm" button fix by S2innovation
Improve Status Message
update kpi

6.4.1: solved high cpu issues in pyalarm

Solve High CPU bug: init_callbacks(50ms) added to panic.engine and PyAlarm
fix case bug in panic.view.check_multi_host
Avoid api.devices clear during load, do 1by1 update instead

Temporary patch: Multiple disabling/ack disabled to
prevent PyAlarm exceptions. see CS4-526
Add Enabled sorting as "PreCondition" to sort alarms by operation modes
Solve bugs on editing formulas or looking at remote values
remove unnecessary imports
Solve bug on writing arrays on ACTION
Execute SNAP/actions on DEBUG Alarms (only sms ignored)
Add warning on reset of active alarms
Remove unused severity checkboxes from main window
(replaced by priority filter)
Force devices update on PhoneBook values change
remove wrong multi-host warning
Return exception strings on evaluation from client

Add warnings on modifying Device config, unify calls on gui/editor
Add exceptions on wrong tag name, use UNACK as active state
Extend regexp syntax to key=value and & clauses
add minimal widget for panic system status

PANIC 6.3.1
-----------

PANIC 7 GUI is ready. PanicEngine/PanicViewDS devices are pending.

Added QAlarmPanels, searches and userfilters to GUI

Zillions of bugs solved.

PANIC 6.2.1
-----------

IEC & Elettra compatibility, QAlarmPanel widget, new GUI usable

AlarmSummary/GetAlarmInfo added to PyAlarm for GUI connection; format agreed with Elettra for cross-compatibility
Requires Fandango > 13.2
Alarm States and Fields renamed to match IEC terminology
New GUI using AlarmView to query attribute values as arrays,
AlarmView backwards compatibility with Panic <6
Performance improvement using latest Fandango (cached DB/DeviceProxy searches)
Split and refactor gui module in gui/actions/views
New Alarm object state machine based on json-like arrays (AlarmSummary)
Increase ERROR alarms visibility
Allow '~' for negated regexp searches
New QAlarmPanel widget
New methods for .json exporting / web browsing
Many GUI bugs solved
Add ArchivingBrowser launcher to toolbar
Solve validation issues on AlarmForm editor
API refactoring, solved internal imports problem

PANIC 6.0
---------

Package refactored to build valid system/PIP/rpm packages
PANIC Migrated to github.
Development moved to develop branch, stable to master

Main new features:

 * enhanced logs and actions
 * properties managed in the API side
 * added multiple test cases
 * added GlobalReceivers and Defines
 * logs: record local or remote using text or json
 * enabled plugin methods for user validation
 * solved many, many bugs
 
Dropped features from this release:

 * gui refactoring
 * alarm collections
 * IEC compliance (in progress)
 * kibana integration
 

Summary of changes since PANIC 5.4 (Last Sourceforge release):


 PyAlarm device server:
 
  All panic times are now seconds, added deprecated message for pollings in milliseconds
  Quality of failed alarms set to INVALID (~DISABLED)
  
  Solve bug on PyAlarm.GenerateReport command
  Solve bug on "zombie" alarm deleted/removed 
  Move Reset notification to send_alarm()
  Replace phonebook entries on ACTION receivers
  reload global_receivers on init()
  
  free_alarm and send_alarm methods refactored for better actions
  Added SendAlarm as command
  kill/pause events added
  Added MemUsage/LastUpdate attributes  
  Properties definition moved to panic.properties
  Add invalid quality to disabled alarms
  Add FAULT state when many alarms are failed
  Add LastUpdate and MemUsage attributes
  Avoid update_locals to reread attributes if check=False
  Add receiver defines: $ALARM/TAG/NAME/DEVICE/DESCRIPTION/VALUES/REPORT/DATE/JSON
  
  Implement Pause() command and kill/pause methods for thread management.
  LogFiles capable of saving remotely using fandango.device.FolderDS 
  
  Solved bugs on trigger_action (see documentation on github)
  Properties definition moved to panic.properties
  Added global receivers property  
  Add Reports Cache, refactor send_alarm logging
  Refactor PyAlarm.parse_receivers
  Alarm actions will be executed before mail and snapshot.
  Added replacement of $DESCRIPTION,$ALARM in actions
  
 GUI:
  New panic Icon
  Reduce gui dependencies to speed up startup
  GUI adapted to Taurus 4
  launcher renamed to just "panic"
  Solve GUI bug on empty ActiveAlarms attribute
  Solve getParams deprecation on Taurus4
  Added User login access via UserValidator widget

 API: 
 
  Logging added to AlarmAPI
  Added Alarm.disabled flag
  to_dict and ping() methods for Alarms and AlarmDS objects
  get_active_alarms() method added to AlarmDS
  AlarmDS.Enable/Disable methods now can enable both Devices and individual Alarms
  Added export_to_csv and export_to_dict API methods
  panic.Evaluate() timeout set to 1000. 
  allow multiple filters on GlobalReceivers
  Add test cases for Group/Action/Clock/Reset
  Solve API bug on empty receivers  
  Solve bug on AlarmAPI.put_db_properties (Wrote to device instead of free property)
  Solve bug in AlarmsAPI.get_global_properties
  Solved bug on phonebook parsing
  Group macro refactored (see documentation/recipes)
  Add api.split_formula()
  Change api.evaluate() timeout and checks


  
Release 5.4 - 2015/12
---------------------

Changes in API and device server to solve several multi-host evaluation issues.
Small patches required by SKA project.

Release 5.2 - New evaluate() from API/GUI, added user admins for alarms
-------------------------------------------------------------------------------
evaluate() method adapted to be usable by GUI and test evaluation on a remote PyAlarm device
Bug solved on SentEmails recording.

Release 5.1 - May 2015
-------------------------------------------------------------------------------
PyAlarm: added try/except to update_locals() method
API: get_admins_for_alarm() method added to enable some minimal access control.

Release 5.0 - May 2015
-------------------------------------------------------------------------------
NOTE: Requires Fandango update, to use NaN values and new TangoEval macros

API: Improved group macro to use only cached values for evaluation
API: Improved caselessness on API
Eval: Added EvalTimes dictionary to keep the time needed on each EvaluateFormula() call.
Eval: Added DEVICE, ALARMS, PANIC objects to locals()
Eval: Added own Attribute values to Eval cache to avoid deadlocks when evaluating itself
Enabled property, converted from string to DevVarStringArray to allow time and formulas
Attributes: Removed locks from read methods (UI was locking the evaluation trend), lock is needed only on write/update actions
Solved bug that didn't send VALUES on State/Attribute exception
RethrowAttribute, from boolean to string to allow choosing False/0/NaN/None
Emails: solved problems string arrays and '\r' and '"' characters
Traces: shortened strings



Release 4.20
-------------------------------------------------------------------------------
@pending: solve threads and UseProcess issues
MaxAlarmsPerDay property removed (was unused)
Added new GROUP macro to formula evaluation.
SnapContext: Using modify instead of create context when this already exists
Added methods to taurus-like get_model from alarms
Email report refactored to show values in rows and parse state values.
Added methods do import/export alarm configurations from .csv files
EvaluateFormula converted in a Tango command callable by clients
Solved bugs using SNAP as receiver.
Snap: Using newest context when several match the alarm name
Eval cache reduced to AlarmThreshold+1 to adjust .delta to AlarmThreshold
Solved bug in SMS sending when source contains non-alpha characters

Release 4.19
@pending: solve threads and UseProcess issues
Solved bugs in alarm parsing, loading .csv and loading alarms from device
Added AlarmValueLabel widget

Release 4.18
Disable screen in launch script, replaced by Tango logging
Added DDebug device for debugging threads
AlarmsAPI.load() time consumption reduced to avoid timeouts
RethrowState=False and RethrowAttribute=False will disable exception propagation from TangoEval, it allows to manage exceptions as None in the alarm formulas.
Added IgnoreExceptions property
Using polling period instead of timeout as keeptime on TangoEval
Renamed method get_attribute_values to get_last_values

In AlarmAPI:

Added filter_alarms, export_to_csv, modify methods
get/filter* methods modified to allow custom alarm lists
Bugs solved in load_from_csv
getCurrent will return last API instance used

Added IgnoreExceptions property
children() replaced by get_basic_alarms method
parse_variables replaced by parse_attributes and evaluate()


Release 4.17 2013/09/09

Added VersionNumber attribute
Added methods Status/dev_status to remove automatic messages on qualities.
Added self.update_locals() for a better update of alarm values, periods and conditions reviewed.
fandango.threads.WorkerProcess has been optimized, PyAlarm modified to use new pause method
Methods returning sorted lists


Release 4.16

References to taurus removed if UseTaurus property is False (default)
Minimum polling reduced to 250 ms
Using panic.PyAlarmDefaultProperties to have consitency between api/gui/device
Solved bug that caused timeouts on alarm exception (time wait before finally clause)
Disable method is now capable to disable alarms only for TIMEOUT argument
If Enabled property is an integer, alarm changes will be ignored for INT seconds at startup; it should allow to restart devices w/out resending all active alarms; a ResetAll() can be used to rethrow all messages if wanted.
CheckDisabled will manage alarm reactivation after timeout

The Panic module has been renamed to panic; several bugs have been solved and methods for enabling/disabling alarms have been added.


4.15 September 2012
Disabled LogFile by default
BETA: Cache added to TangoEval to try alarm on transition.

4.14, September 2012
Added StartupDelay property
Bugs solved in Snap context creation.
Added user message to alarm RESET emails.
 
