def put(self, jwt, contactgroup_id): if contactgroup_id is None: return jsonify(error=True) contactgroup = ContactGroup.get_by_id(contactgroup_id) if contactgroup is None: return jsonify(error=True) if request.is_json and request.get_json(silent=True) is not None: try: post_data = request.get_json() contactgroup_name = post_data.get('contactgroup_name') alias = post_data.get('alias') if contactgroup_name is not None: contactgroup.contactgroup_name = contactgroup_name if alias is not None: contactgroup.alias = alias writeNagiosContactGroupsConfigFile(contactgroup) if restartNagios() == False: db.session.rollback() syncNagiosAllConfigWithDb() return jsonify(error=True, msg="Invalid process") db.session.commit() return jsonify(data=contactgroup.serialize()) except Exception as e: db.session.rollback() syncNagiosAllConfigWithDb() return jsonify(error=True, msg=str(e)) finally: db.session.close() return jsonify(error=True)
def get(self, jwt, contactgroup_id): data = [] #If no contactgroup_id is passed in get all contactgroups. if contactgroup_id is None: contactgroups = ContactGroup.get_all() else: contactgroups = [ContactGroup.get_by_id(contactgroup_id)] #Loop over results and get json form of contactgroup to return. if contactgroups is not None: for contactgroup in contactgroups: data.append(contactgroup.serialize()) pass return jsonify(data=data) else: return jsonify(data=[])
def delete(self, jwt, contactgroup_id): if contactgroup_id is None: return jsonify(error=True) contactgroup = ContactGroup.get_by_id(contactgroup_id) if contactgroup is None: return jsonify(error=True) else: try: deleteNagiosContactGroupsConfigFile(contactgroup) db.session.delete(contactgroup) # process contact_contactgroup table relations = Contact2Group.query.filter_by(contactgroup_id=contactgroup_id).all() relation_contact_ids = [] if relations is not None: for relation in relations: relation_contact_ids.append(relation.contact_id) # delete from contact_contactgroup table connection = db.session.connection() connection.execute("DELETE FROM contact_contactgroup WHERE contactgroup_id = '%s'", (contactgroup_id)) # update contact table for relation_contact_id in relation_contact_ids: contact = Contact.get_by_id(relation_contact_id) if contact is None: continue connection = db.session.connection() result = connection.execute( "SELECT GROUP_CONCAT(B.contactgroup_name) contactgroup_names FROM contact_contactgroup A" + " LEFT JOIN contactgroups B ON A.contactgroup_id=B.id" + " WHERE A.contact_id = '%s'" + " GROUP BY A.contact_id" , (contact.id)) if len(result._saved_cursor._result.rows) == 0: contact.contactgroups = '' writeNagiosContactsConfigFile(contact) else: for row in result: contactgroup_names_str = row['contactgroup_names'] contact.contactgroups = contactgroup_names_str writeNagiosContactsConfigFile(contact) break # process contactgroup_service table csrelations = ContactgroupService.query.filter_by(contactgroup_id=contactgroup_id).all() relation_service_ids = [] if csrelations is not None: for csrelation in csrelations: relation_service_ids.append(csrelation.service_id) # delete from contactgroup_service table connection = db.session.connection() connection.execute("DELETE FROM contactgroup_service WHERE contactgroup_id = '%s'", (contactgroup_id)) # update service table for relation_service_id in relation_service_ids: service = Service.get_by_id(relation_service_id) if service is None: continue connection = db.session.connection() result = connection.execute( "SELECT GROUP_CONCAT(B.contactgroup_name) contactgroup_names FROM contactgroup_service A" + " LEFT JOIN contactgroups B ON A.contactgroup_id=B.id" + " WHERE A.service_id = '%s'" + " GROUP BY A.service_id" , (service.id)) if len(result._saved_cursor._result.rows) == 0: service.contact_groups = '' tmp_checkInterval = service.check_interval service.check_interval = round(int(service.check_interval) / 60, 1) writeNagiosServicesConfigFile(service) service.check_interval = tmp_checkInterval else: for row in result: contactgroup_names_str = row['contactgroup_names'] service.contact_groups = contactgroup_names_str tmp_checkInterval = service.check_interval service.check_interval = round(int(service.check_interval) / 60, 1) writeNagiosServicesConfigFile(service) service.check_interval = tmp_checkInterval break if restartNagios() == False: db.session.rollback() syncNagiosAllConfigWithDb() return jsonify(error=True, msg="Invalid process") db.session.commit() return jsonify(error=False) except Exception as e: db.session.rollback() syncNagiosAllConfigWithDb() return jsonify(error=True, msg=str(e)) finally: db.session.close() return jsonify(error=True)