Best Python code snippet using fMBT_python
subsetting_config.py
Source:subsetting_config.py
1def get_subsetting_config():2 subsettingConfig = {3 "config": {4 "FILTER_SETTINGS": {5 "measureColumnFilters": [6 {7 "filterType": "valueRange",8 "lowerBound": 9,9 "colname": "education-num",10 "upperBound": 911 }12 ],13 "dimensionColumnFilters": [14 ],15 "timeDimensionColumnFilters": [16 ]17 },18 "DATA_SOURCE": {19 "datasource_type": "fileUpload",20 "datasource_details": ""21 },22 "COLUMN_SETTINGS": {23 "analysis_type": [24 "metaData"25 ]26 },27 "TRANSFORMATION_SETTINGS": {28 "existingColumns": [29 {30 "slug": "0f37d194687f43e09573aa07326c26b2",31 "name": "age",32 "columnSetting": [33 {34 "status": False,35 "actionName": "unique_identifier",36 "displayName": "Unique Identifier"37 },38 {39 "status": False,40 "actionName": "delete",41 "displayName": "Delete Column"42 },43 {44 "status": False,45 "actionName": "rename",46 "displayName": "Rename Column",47 "newName": None48 },49 {50 "status": False,51 "actionName": "replace",52 "replaceTypeList": [53 {54 "displayName": "Contains",55 "name": "contains"56 },57 {58 "displayName": "Equal To",59 "name": "equals"60 },61 {62 "displayName": "Starts With",63 "name": "startsWith"64 },65 {66 "displayName": "Ends With",67 "name": "endsWith"68 }69 ],70 "displayName": "Replace Values",71 "replacementValues": [72 ]73 },74 {75 "status": False,76 "actionName": "data_type",77 "displayName": "Change Datatype",78 "listOfActions": [79 {80 "status": True,81 "displayName": "Numeric",82 "name": "numeric"83 },84 {85 "status": False,86 "displayName": "Text",87 "name": "text"88 }89 ]90 },91 {92 "status": False,93 "actionName": "set_variable",94 "displayName": "Set Variable as",95 "listOfActions": [96 {97 "status": True,98 "displayName": "General Numeric",99 "name": "general_numeric"100 },101 {102 "status": False,103 "displayName": "Percentage",104 "name": "percentage"105 },106 {107 "status": False,108 "displayName": "Index",109 "name": "index"110 },111 {112 "status": False,113 "displayName": "Average",114 "name": "average"115 }116 ]117 },118 {119 "status": False,120 "actionName": "set_polarity",121 "displayName": "Set Polarity as",122 "listOfActions": [123 {124 "status": True,125 "displayName": "Positive",126 "name": "positive"127 },128 {129 "status": False,130 "displayName": "Negative",131 "name": "negative"132 }133 ]134 },135 {136 "status": False,137 "actionName": "ignore_suggestion",138 "displayName": "Ignore for Analysis",139 "previous_status": False140 }141 ]142 },143 {144 "slug": "26dbb1f77f614106bd1a704c9c0c4bb8",145 "name": "education",146 "columnSetting": [147 {148 "status": False,149 "actionName": "unique_identifier",150 "displayName": "Unique Identifier"151 },152 {153 "status": False,154 "actionName": "delete",155 "displayName": "Delete Column"156 },157 {158 "status": False,159 "actionName": "rename",160 "displayName": "Rename Column",161 "newName": None162 },163 {164 "status": False,165 "actionName": "replace",166 "replaceTypeList": [167 {168 "displayName": "Contains",169 "name": "contains"170 },171 {172 "displayName": "Equal To",173 "name": "equals"174 },175 {176 "displayName": "Starts With",177 "name": "startsWith"178 },179 {180 "displayName": "Ends With",181 "name": "endsWith"182 }183 ],184 "displayName": "Replace Values",185 "replacementValues": [186 ]187 },188 {189 "status": False,190 "actionName": "ignore_suggestion",191 "displayName": "Ignore for Analysis",192 "previous_status": False193 }194 ]195 },196 {197 "slug": "bf209c718c3b406aac15df355030cae3",198 "name": "education-num",199 "columnSetting": [200 {201 "status": False,202 "actionName": "unique_identifier",203 "displayName": "Unique Identifier"204 },205 {206 "status": False,207 "actionName": "delete",208 "displayName": "Delete Column"209 },210 {211 "status": False,212 "actionName": "rename",213 "displayName": "Rename Column",214 "newName": None215 },216 {217 "status": False,218 "actionName": "replace",219 "replaceTypeList": [220 {221 "displayName": "Contains",222 "name": "contains"223 },224 {225 "displayName": "Equal To",226 "name": "equals"227 },228 {229 "displayName": "Starts With",230 "name": "startsWith"231 },232 {233 "displayName": "Ends With",234 "name": "endsWith"235 }236 ],237 "displayName": "Replace Values",238 "replacementValues": [239 ]240 },241 {242 "status": False,243 "actionName": "data_type",244 "displayName": "Change Datatype",245 "listOfActions": [246 {247 "status": True,248 "displayName": "Numeric",249 "name": "numeric"250 },251 {252 "status": False,253 "displayName": "Text",254 "name": "text"255 }256 ]257 },258 {259 "status": False,260 "actionName": "set_variable",261 "displayName": "Set Variable as",262 "listOfActions": [263 {264 "status": True,265 "displayName": "General Numeric",266 "name": "general_numeric"267 },268 {269 "status": False,270 "displayName": "Percentage",271 "name": "percentage"272 },273 {274 "status": False,275 "displayName": "Index",276 "name": "index"277 },278 {279 "status": False,280 "displayName": "Average",281 "name": "average"282 }283 ]284 },285 {286 "status": False,287 "actionName": "set_polarity",288 "displayName": "Set Polarity as",289 "listOfActions": [290 {291 "status": True,292 "displayName": "Positive",293 "name": "positive"294 },295 {296 "status": False,297 "displayName": "Negative",298 "name": "negative"299 }300 ]301 },302 {303 "status": False,304 "actionName": "ignore_suggestion",305 "displayName": "Ignore for Analysis",306 "previous_status": False307 }308 ]309 },310 {311 "slug": "c89d460d3d57463e89ec68743687416a",312 "name": "relationship",313 "columnSetting": [314 {315 "status": False,316 "actionName": "unique_identifier",317 "displayName": "Unique Identifier"318 },319 {320 "status": False,321 "actionName": "delete",322 "displayName": "Delete Column"323 },324 {325 "status": False,326 "actionName": "rename",327 "displayName": "Rename Column",328 "newName": None329 },330 {331 "status": False,332 "actionName": "replace",333 "replaceTypeList": [334 {335 "displayName": "Contains",336 "name": "contains"337 },338 {339 "displayName": "Equal To",340 "name": "equals"341 },342 {343 "displayName": "Starts With",344 "name": "startsWith"345 },346 {347 "displayName": "Ends With",348 "name": "endsWith"349 }350 ],351 "displayName": "Replace Values",352 "replacementValues": [353 ]354 },355 {356 "status": False,357 "actionName": "ignore_suggestion",358 "displayName": "Ignore for Analysis",359 "previous_status": False360 }361 ]362 },363 {364 "slug": "722123903acd4850b83a0b39de91bcc1",365 "name": "race",366 "columnSetting": [367 {368 "status": False,369 "actionName": "unique_identifier",370 "displayName": "Unique Identifier"371 },372 {373 "status": False,374 "actionName": "delete",375 "displayName": "Delete Column"376 },377 {378 "status": False,379 "actionName": "rename",380 "displayName": "Rename Column",381 "newName": None382 },383 {384 "status": False,385 "actionName": "replace",386 "replaceTypeList": [387 {388 "displayName": "Contains",389 "name": "contains"390 },391 {392 "displayName": "Equal To",393 "name": "equals"394 },395 {396 "displayName": "Starts With",397 "name": "startsWith"398 },399 {400 "displayName": "Ends With",401 "name": "endsWith"402 }403 ],404 "displayName": "Replace Values",405 "replacementValues": [406 ]407 },408 {409 "status": False,410 "actionName": "ignore_suggestion",411 "displayName": "Ignore for Analysis",412 "previous_status": False413 }414 ]415 },416 {417 "slug": "e55473c7a15245b5b24af14a160914bb",418 "name": "sex",419 "columnSetting": [420 {421 "status": False,422 "actionName": "unique_identifier",423 "displayName": "Unique Identifier"424 },425 {426 "status": False,427 "actionName": "delete",428 "displayName": "Delete Column"429 },430 {431 "status": False,432 "actionName": "rename",433 "displayName": "Rename Column",434 "newName": None435 },436 {437 "status": False,438 "actionName": "replace",439 "replaceTypeList": [440 {441 "displayName": "Contains",442 "name": "contains"443 },444 {445 "displayName": "Equal To",446 "name": "equals"447 },448 {449 "displayName": "Starts With",450 "name": "startsWith"451 },452 {453 "displayName": "Ends With",454 "name": "endsWith"455 }456 ],457 "displayName": "Replace Values",458 "replacementValues": [459 ]460 },461 {462 "status": False,463 "actionName": "ignore_suggestion",464 "displayName": "Ignore for Analysis",465 "previous_status": False466 }467 ]468 },469 {470 "slug": "b768943ae03f4093ab5f0395325afb19",471 "name": "Capital-gain",472 "columnSetting": [473 {474 "status": False,475 "actionName": "unique_identifier",476 "displayName": "Unique Identifier"477 },478 {479 "status": False,480 "actionName": "delete",481 "displayName": "Delete Column"482 },483 {484 "status": False,485 "actionName": "rename",486 "displayName": "Rename Column",487 "newName": None488 },489 {490 "status": False,491 "actionName": "replace",492 "replaceTypeList": [493 {494 "displayName": "Contains",495 "name": "contains"496 },497 {498 "displayName": "Equal To",499 "name": "equals"500 },501 {502 "displayName": "Starts With",503 "name": "startsWith"504 },505 {506 "displayName": "Ends With",507 "name": "endsWith"508 }509 ],510 "displayName": "Replace Values",511 "replacementValues": [512 ]513 },514 {515 "status": False,516 "actionName": "data_type",517 "displayName": "Change Datatype",518 "listOfActions": [519 {520 "status": True,521 "displayName": "Numeric",522 "name": "numeric"523 },524 {525 "status": False,526 "displayName": "Text",527 "name": "text"528 }529 ]530 },531 {532 "status": False,533 "actionName": "set_variable",534 "displayName": "Set Variable as",535 "listOfActions": [536 {537 "status": True,538 "displayName": "General Numeric",539 "name": "general_numeric"540 },541 {542 "status": False,543 "displayName": "Percentage",544 "name": "percentage"545 },546 {547 "status": False,548 "displayName": "Index",549 "name": "index"550 },551 {552 "status": False,553 "displayName": "Average",554 "name": "average"555 }556 ]557 },558 {559 "status": False,560 "actionName": "set_polarity",561 "displayName": "Set Polarity as",562 "listOfActions": [563 {564 "status": True,565 "displayName": "Positive",566 "name": "positive"567 },568 {569 "status": False,570 "displayName": "Negative",571 "name": "negative"572 }573 ]574 },575 {576 "status": False,577 "actionName": "ignore_suggestion",578 "displayName": "Ignore for Analysis",579 "previous_status": False580 }581 ]582 },583 {584 "slug": "b3a2a40c6ffc403999f5c31312963ffa",585 "name": "class_label",586 "columnSetting": [587 {588 "status": False,589 "actionName": "unique_identifier",590 "displayName": "Unique Identifier"591 },592 {593 "status": False,594 "actionName": "delete",595 "displayName": "Delete Column"596 },597 {598 "status": False,599 "actionName": "rename",600 "displayName": "Rename Column",601 "newName": None602 },603 {604 "status": False,605 "actionName": "replace",606 "replaceTypeList": [607 {608 "displayName": "Contains",609 "name": "contains"610 },611 {612 "displayName": "Equal To",613 "name": "equals"614 },615 {616 "displayName": "Starts With",617 "name": "startsWith"618 },619 {620 "displayName": "Ends With",621 "name": "endsWith"622 }623 ],624 "displayName": "Replace Values",625 "replacementValues": [626 ]627 },628 {629 "status": False,630 "actionName": "ignore_suggestion",631 "displayName": "Ignore for Analysis",632 "previous_status": False633 }634 ]635 }636 ]637 },638 "FILE_SETTINGS": {639 "outputfile": [640 #"gAAAAABaxGdWjSShSd8sbTDAo_7Jj8MvNP8Th9zCneWRxjeZw0GHNTZg2GLs9ebK6zJbC_uGbyqhkrOD0AsfwFgSsRQC8JI2EVIiBOmRXy6iKpLqQYWyrsbKm2Wl9BuTPgIQg7ngO_m6fS73C2ZBiUxiEwkfGSi8bUlCznZBRCI45vgQu0tIvBtrtWAKKQ5rbEplWxpUtjoG"641 "file:///home/gulshan/marlabs/csvout/data"642 ],643 "metadata": {644 "url": "34.196.204.54:9012/api/get_metadata_for_mlscripts/",645 "slug_list": [646 "demography100csv-jhgb0uix28"647 ]648 },649 "inputfile": [650 "file:///home/gulshan/marlabs/datasets/sampleDatasets/demography100.csv"651 ]652 },653 "DATE_SETTINGS": {654 }655 },656 "job_config": {657 "message_url": "http://34.196.204.54:9012/api/messages/Job_subsetting-gul-sub-ayju8x9s4m-rs4kp1im0t_123/",658 "get_config": {659 "action": "get_config",660 "method": "GET"661 },662 "error_reporting_url": "http://34.196.204.54:9012/api/set_job_report/subsetting-gul-sub-ayju8x9s4m-rs4kp1im0t/",663 "set_result": {664 "action": "result",665 "method": "PUT"666 },667 "job_url": "http://34.196.204.54:9012/api/job/subsetting-gul-sub-ayju8x9s4m-rs4kp1im0t/",668 "job_type": "subSetting",669 "job_name": "gul-sub",670 "xml_url": "http://34.196.204.54:9012/api/xml/subsetting-gul-sub-ayju8x9s4m-rs4kp1im0t/",671 "app_id": None672 }673 }...
amazon_ses.py
Source:amazon_ses.py
1# http://tagmask.com/vladimir/posts/262#Copyright (c) 2011 Vladimir Pankratiev http://tagmask.com3#4#Permission is hereby granted, free of charge, to any person obtaining a copy5#of this software and associated documentation files (the "Software"), to deal6#in the Software without restriction, including without limitation the rights7#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell8#copies of the Software, and to permit persons to whom the Software is9#furnished to do so, subject to the following conditions:10#11#The above copyright notice and this permission notice shall be included in12#all copies or substantial portions of the Software.13#14#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE17#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER18#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,19#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN20#THE SOFTWARE.21import httplib22import urllib23import hashlib24import hmac25import logging26import base6427from datetime import datetime28from xml.etree.ElementTree import XML29from django.conf import settings30log = logging.getLogger(__name__)31class AmazonSES:32 def __init__(self):33 self._accessKeyID = getattr(settings, 'AWS_ACCESS_KEY_ID', None)34 self._secretAccessKey = getattr(settings, 'AWS_SECRET_ACCESS_KEY', None)35 self._responseParser = AmazonResponseParser()36 def _getSignature(self, dateValue):37 h = hmac.new(key=self._secretAccessKey, msg=dateValue, digestmod=hashlib.sha256)38 return base64.b64encode(h.digest()).decode()39 def _getHeaders(self):40 headers = { 'Content-type': 'application/x-www-form-urlencoded' }41 d = datetime.utcnow()42 dateValue = d.strftime('%a, %d %b %Y %H:%M:%S GMT')43 headers['Date'] = dateValue44 signature = self._getSignature(dateValue)45 headers['X-Amzn-Authorization'] = 'AWS3-HTTPS AWSAccessKeyId=%s, Algorithm=HMACSHA256, Signature=%s' % (self._accessKeyID, signature)46 return headers47 def _performAction(self, actionName, params=None):48 if not params:49 params = {}50 params['Action'] = actionName51 #https://email.us-east-1.amazonaws.com/52 conn = httplib.HTTPSConnection('email.us-east-1.amazonaws.com')53 params = urllib.urlencode(params)54 conn.request('POST', '/', params, self._getHeaders())55 response = conn.getresponse()56 responseResult = response.read()57 conn.close()58 return self._responseParser.parse(actionName, response.status, response.reason, responseResult)59 def verifyEmailAddress(self, emailAddress):60 params = { 'EmailAddress': emailAddress }61 return self._performAction('VerifyEmailAddress', params)62 def deleteVerifiedEmailAddress(self, emailAddress):63 params = { 'EmailAddress': emailAddress }64 return self._performAction('DeleteVerifiedEmailAddress', params)65 def getSendQuota(self):66 return self._performAction('GetSendQuota')67 def getSendStatistics(self):68 return self._performAction('GetSendStatistics')69 def listVerifiedEmailAddresses(self):70 return self._performAction('ListVerifiedEmailAddresses')71 def sendEmail(self, source, toAddresses, message, replyToAddresses=None, returnPath=None, ccAddresses=None, bccAddresses=None):72 params = { 'Source': source }73 for objName, addresses in zip(["ToAddresses", "CcAddresses", "BccAddresses"], [toAddresses, ccAddresses, bccAddresses]):74 if addresses:75 if not isinstance(addresses, basestring) and getattr(addresses, '__iter__', False):76 for i, address in enumerate(addresses, 1):77 params['Destination.%s.member.%d' % (objName, i)] = address78 else:79 params['Destination.%s.member.1' % objName] = addresses80 if not returnPath:81 returnPath = source82 params['ReturnPath'] = returnPath83 params['Message.Subject.Charset'] = message.charset84 params['Message.Subject.Data'] = message.subject85 if message.bodyText:86 params['Message.Body.Text.Charset'] = message.charset87 params['Message.Body.Text.Data'] = message.bodyText88 if message.bodyHtml:89 params['Message.Body.Html.Charset'] = message.charset90 params['Message.Body.Html.Data'] = message.bodyHtml91 return self._performAction('SendEmail', params)92class EmailMessage:93 def __init__(self):94 self.charset = 'UTF-8'95 self.subject = None96 self.bodyHtml = None97 self.bodyText = None98class AmazonError(Exception):99 def __init__(self, errorType, code, message):100 self.errorType = errorType101 self.code = code102 self.message = message103class AmazonAPIError(Exception):104 def __init__(self, message):105 self.message = message106class AmazonResult:107 def __init__(self, requestId):108 self.requestId = requestId109class AmazonSendEmailResult(AmazonResult):110 def __init__(self, requestId, messageId):111 self.requestId = requestId112 self.messageId = messageId113class AmazonSendQuota(AmazonResult):114 def __init__(self, requestId, max24HourSend, maxSendRate, sentLast24Hours):115 self.requestId = requestId116 self.max24HourSend = max24HourSend117 self.maxSendRate = maxSendRate118 self.sentLast24Hours = sentLast24Hours119class AmazonSendDataPoint:120 def __init__(self, bounces, complaints, deliveryAttempts, rejects, timestamp):121 self.bounces = bounces122 self.complaints = complaints123 self.deliveryAttempts = deliveryAttempts124 self.rejects = rejects125 self.timestamp = timestamp126class AmazonSendStatistics(AmazonResult):127 def __init__(self, requestId):128 self.requestId = requestId129 self.members = []130class AmazonVerifiedEmails(AmazonSendStatistics):131 pass132class AmazonResponseParser:133 class XmlResponse:134 def __init__(self, str):135 self._rootElement = XML(str)136 self._namespace = self._rootElement.tag[1:].split("}")[0]137 def checkResponseName(self, name):138 if self._rootElement.tag == self._fixTag(self._namespace, name):139 return True140 else:141 raise AmazonAPIError('ErrorResponse is invalid.')142 def checkActionName(self, actionName):143 if self._rootElement.tag == self._fixTag(self._namespace, ('%sResponse' % actionName)):144 return True145 else:146 raise AmazonAPIError('Response of action "%s" is invalid.' % actionName)147 def getChild(self, *itemPath):148 node = self._findNode(self._rootElement, self._namespace, *itemPath)149 if node is not None:150 return node151 else:152 raise AmazonAPIError('Node with the specified path was not found.')153 def getChildText(self, *itemPath):154 node = self.getChild(*itemPath)155 return node.text156 def _fixTag(self, namespace, tag):157 return '{%s}%s' % (namespace, tag)158 def _findNode(self, rootElement, namespace, *args):159 match = '.'160 for s in args:161 match += '/{%s}%s' % (namespace, s)162 return rootElement.find(match)163 def __init__(self):164 self._simpleResultActions = ['DeleteVerifiedEmailAddress', 'VerifyEmailAddress']165 def _parseSimpleResult(self, actionName, xmlResponse):166 if xmlResponse.checkActionName(actionName):167 requestId = xmlResponse.getChildText('ResponseMetadata', 'RequestId')168 return AmazonResult(requestId)169 def _parseSendQuota(self, actionName, xmlResponse):170 if xmlResponse.checkActionName(actionName):171 requestId = xmlResponse.getChildText('ResponseMetadata', 'RequestId')172 value = xmlResponse.getChildText('GetSendQuotaResult', 'Max24HourSend')173 max24HourSend = float(value)174 value = xmlResponse.getChildText('GetSendQuotaResult', 'MaxSendRate')175 maxSendRate = float(value)176 value = xmlResponse.getChildText('GetSendQuotaResult', 'SentLast24Hours')177 sentLast24Hours = float(value)178 return AmazonSendQuota(requestId, max24HourSend, maxSendRate, sentLast24Hours)179 #def _parseSendStatistics(self, actionName, xmlResponse):180 # if xmlResponse.checkActionName(actionName):181 # requestId = xmlResponse.getChildText('ResponseMetadata', 'RequestId')182 def _parseListVerifiedEmails(self, actionName, xmlResponse):183 if xmlResponse.checkActionName(actionName):184 requestId = xmlResponse.getChildText('ResponseMetadata', 'RequestId')185 node = xmlResponse.getChild('ListVerifiedEmailAddressesResult', 'VerifiedEmailAddresses')186 result = AmazonVerifiedEmails(requestId)187 for addr in node:188 result.members.append(addr.text)189 return result190 def _parseSendEmail(self, actionName, xmlResponse):191 if xmlResponse.checkActionName(actionName):192 requestId = xmlResponse.getChildText('ResponseMetadata', 'RequestId')193 messageId = xmlResponse.getChildText('SendEmailResult', 'MessageId')194 return AmazonSendEmailResult(requestId, messageId)195 def _raiseError(self, xmlResponse):196 if xmlResponse.checkResponseName('ErrorResponse'):197 errorType = xmlResponse.getChildText('Error', 'Type')198 code = xmlResponse.getChildText('Error', 'Code')199 message = xmlResponse.getChildText('Error', 'Message')200 raise AmazonError(errorType, code, message)201 def parse(self, actionName, statusCode, reason, responseResult):202 xmlResponse = self.XmlResponse(responseResult)203 log.info('Response status code: %s, reason: %s', statusCode, reason)204 log.debug(responseResult)205 result = None206 if statusCode != 200:207 self._raiseError(xmlResponse)208 else:209 if actionName in self._simpleResultActions:210 result = self._parseSimpleResult(actionName, xmlResponse)211 elif actionName in ['SendEmail']:212 result = self._parseSendEmail(actionName, xmlResponse)213 elif actionName == 'GetSendQuota':214 result = self._parseSendQuota(actionName, xmlResponse)215 #elif actionName == 'GetSendStatistics':216 # result = self._parseSendStatistics(actionName, xmlResponse)217 elif actionName == 'ListVerifiedEmailAddresses':218 result = self._parseListVerifiedEmails(actionName, xmlResponse)219 else:220 #raise AmazonAPIError('Action %s is not supported. Please contact: vladimir@tagmask.com' % (actionName,))221 raise AmazonAPIError('Action %s is not supported.' % (actionName,))...
actionManager.py
Source:actionManager.py
1############################################################2#3# BuildingRules Project 4# Politecnico di Milano5# Author: Alessandro A. Nacci6#7# This code is confidential8# Milan, March 20149#10############################################################11import sys12import json13import random14import string15import datetime16import re17from app.backend.commons.errors import *18from app.backend.commons.inputDataChecker import checkData19from app.backend.model.action import Action20from app.backend.model.actions import Actions21class ActionManager:22 def __init__(self):23 pass24 def getInfo(self, actionName):25 checkData(locals())26 27 action = Action(actionName = actionName)28 action.retrive()29 return action.getDict()30 def getActionAndTemplateAndParameterValues(self, ruleConsequent):31 checkData(locals())32 actions = Actions()33 actionList = actions.getAllActions()34 for action in actionList:35 36 # A action.ruleConsequent is represented as set of templates models:37 # Example "template1 | template2 | template2"38 models = action.ruleConsequent.split('|')39 for model in models:40 parameterNumber = model.count("@val")41 originalModel = model.strip()42 model = model.replace("@val","(.+)").strip()43 matchObj = re.match( model, ruleConsequent, re.M|re.I)44 if matchObj:45 parameterValues = {}46 for i in range(0,parameterNumber):47 parameterValues[str(i)] = matchObj.group(i + 1)48 return (action, originalModel, parameterValues)49 raise NotWellFormedRuleError("Impossible to find any action corresponding to the following rule consequent > " + ruleConsequent)50 def getActionAndTemplate(self, ruleConsequent):51 checkData(locals())52 action, template, parameterValues = self.getActionAndTemplateAndParameterValues(ruleConsequent)53 return (action, template)54 def getAction(self, ruleConsequent):55 checkData(locals())56 action, template = self.getActionAndTemplate(ruleConsequent)57 return action58 def __translateParameters(self, actionCategory, parameterValue):59 value = parameterValue60 if actionCategory == "HVAC_TEMP":61 return value.replace("C", "").replace("F", "")62 if actionCategory == "HVAC_HUM":63 return value.replace("%", "")64 if actionCategory == "BLIND":65 return value.replace("%", "")66 return value67 def translateAction(self, ruleConsequent, getDict = False):68 checkData(locals())69 actions = Actions()70 action, originalTemplate, parameterValues = self.getActionAndTemplateAndParameterValues(ruleConsequent)71 translationTemplate = actions.translateTemplate('Z3', originalTemplate)72 translatedParams = {}73 for key,value in parameterValues.iteritems():74 translatedParams[key] = self.__translateParameters(action.category, value)75 translation = translationTemplate76 for i in range(0,len(parameterValues.keys())):77 value = translatedParams[str(i)]78 translation = translation.replace("@val", value, 1)79 if not getDict:80 return translation, action, translatedParams81 else:82 result = {}83 result["translation"] = translation84 result["action"] = action.getDict()85 result["translatedParams"] = translatedParams86 return result87 def getActionCategories(self):88 checkData(locals())89 90 actions = Actions()91 actionList = actions.getAllActions()92 categories = []93 for action in actionList:94 if action.category not in categories:95 categories.append(action.category)96 return categories97 def getActionDriver(self, action, parameters = None):98 checkData(locals())99 from app.backend.drivers.roomHvacActionDriver import RoomHvacActionDriver100 from app.backend.drivers.roomLightActionDriver import RoomLightActionDriver101 from app.backend.drivers.roomApplianceActionDriver import RoomApplianceActionDriver102 from app.backend.drivers.roomSpecialActionDriver import RoomSpecialActionDriver 103 from app.backend.drivers.roomWindowActionDriver import RoomWindowActionDriver 104 from app.backend.drivers.roomFanHoodsActionDriver import RoomFanHoodsActionDriver 105 if not parameters:106 parameters = {}107 if action.actionName == "LIGHT_ON":108 parameters.update({'operation' : 'LIGHT_ON'})109 return RoomLightActionDriver(parameters = parameters)110 if action.actionName == "LIGHT_OFF":111 parameters.update({'operation' : 'LIGHT_OFF'})112 return RoomLightActionDriver(parameters = parameters)113 if action.actionName == "DESKLIGHT_ON":114 parameters.update({'operation' : 'DESKLIGHT_ON'})115 return RoomLightActionDriver(parameters = parameters)116 if action.actionName == "DESKLIGHT_OFF":117 parameters.update({'operation' : 'DESKLIGHT_OFF'})118 return RoomLightActionDriver(parameters = parameters)119 if action.actionName == "HVAC_ON":120 parameters.update({'operation' : 'HVAC_OFF'})121 return RoomHvacActionDriver(parameters = parameters)122 if action.actionName == "HVAC_OFF":123 parameters.update({'operation' : 'HVAC_OFF'})124 return RoomHvacActionDriver(parameters = parameters)125 if action.actionName == "SET_TEMPERATURE":126 parameters.update({'operation' : 'SET_TEMPERATURE'})127 return RoomHvacActionDriver(parameters = parameters)128 if action.actionName == "SET_HUMIDITY":129 parameters.update({'operation' : 'SET_HUMIDITY'})130 return RoomHvacActionDriver(parameters = parameters)131 if action.actionName == "HEATING_ON":132 parameters.update({'operation' : 'HEATING_ON'})133 return RoomHvacActionDriver(parameters = parameters)134 if action.actionName == "HEATING_OFF":135 parameters.update({'operation' : 'HEATING_OFF'})136 return RoomHvacActionDriver(parameters = parameters)137 if action.actionName == "AIR_CONDITIONING_ON":138 parameters.update({'operation' : 'AIR_CONDITIONING_ON'})139 return RoomHvacActionDriver(parameters = parameters)140 if action.actionName == "AIR_CONDITIONING_OFF":141 parameters.update({'operation' : 'AIR_CONDITIONING_OFF'})142 return RoomHvacActionDriver(parameters = parameters)143 if action.actionName == "APP_MICROWAVE_ON":144 parameters.update({'operation' : 'APP_MICROWAVE_ON'})145 return RoomApplianceActionDriver(parameters = parameters)146 if action.actionName == "APP_MICROWAVE_OFF":147 parameters.update({'operation' : 'APP_MICROWAVE_OFF'})148 return RoomApplianceActionDriver(parameters = parameters)149 if action.actionName == "COFFEE_ON":150 parameters.update({'operation' : 'COFFEE_ON'})151 return RoomApplianceActionDriver(parameters = parameters)152 if action.actionName == "COFFEE_OFF":153 parameters.update({'operation' : 'COFFEE_OFF'})154 return RoomApplianceActionDriver(parameters = parameters)155 if action.actionName == "PRINTER_ON":156 parameters.update({'operation' : 'PRINTER_ON'})157 return RoomApplianceActionDriver(parameters = parameters)158 if action.actionName == "PRINTER_OFF":159 parameters.update({'operation' : 'PRINTER_OFF'})160 return RoomApplianceActionDriver(parameters = parameters)161 if action.actionName == "COMPUTER_ON":162 parameters.update({'operation' : 'COMPUTER_ON'})163 return RoomApplianceActionDriver(parameters = parameters)164 if action.actionName == "COMPUTER_OFF":165 parameters.update({'operation' : 'COMPUTER_OFF'})166 return RoomApplianceActionDriver(parameters = parameters)167 if action.actionName == "DISPLAYMONITOR_ON":168 parameters.update({'operation' : 'DISPLAYMONITOR_ON'})169 return RoomApplianceActionDriver(parameters = parameters)170 if action.actionName == "DISPLAYMONITOR_OFF":171 parameters.update({'operation' : 'DISPLAYMONITOR_OFF'})172 return RoomApplianceActionDriver(parameters = parameters)173 if action.actionName == "PROJECTOR_ON":174 parameters.update({'operation' : 'PROJECTOR_ON'})175 return RoomApplianceActionDriver(parameters = parameters)176 if action.actionName == "PROJECTOR_OFF":177 parameters.update({'operation' : 'PROJECTOR_OFF'})178 return RoomApplianceActionDriver(parameters = parameters)179 if action.actionName == "AUDIO_ON":180 parameters.update({'operation' : 'AUDIO_ON'})181 return RoomApplianceActionDriver(parameters = parameters)182 if action.actionName == "AUDIO_OFF":183 parameters.update({'operation' : 'AUDIO_OFF'})184 return RoomApplianceActionDriver(parameters = parameters)185 if action.actionName == "SEND_COMPLAIN":186 parameters.update({'operation' : 'DISPLAYMONITOR_OFF'})187 return RoomSpecialActionDriver(parameters = parameters)188 if action.actionName == "WINDOWS_OPEN":189 parameters.update({'operation' : 'WINDOWS_OPEN'})190 return RoomWindowActionDriver(parameters = parameters)191 if action.actionName == "WINDOWS_CLOSE":192 parameters.update({'operation' : 'WINDOWS_CLOSE'})193 return RoomWindowActionDriver(parameters = parameters)194 if action.actionName == "CURTAINS_OPEN":195 parameters.update({'operation' : 'CURTAINS_OPEN'})196 return RoomWindowActionDriver(parameters = parameters)197 if action.actionName == "CURTAINS_CLOSE":198 parameters.update({'operation' : 'CURTAINS_CLOSE'})199 return RoomWindowActionDriver(parameters = parameters)200 if action.actionName == "SET_BLIND":201 parameters.update({'operation' : 'SET_BLIND'})202 return RoomWindowActionDriver(parameters = parameters)203 if action.actionName == "EXHAUST_FAN_ON":204 parameters.update({'operation' : 'EXHAUST_FAN_ON'})205 return RoomFanHoodsActionDriver(parameters = parameters)206 if action.actionName == "EXHAUST_FAN_OFF":207 parameters.update({'operation' : 'EXHAUST_FAN_OFF'})208 return RoomFanHoodsActionDriver(parameters = parameters)209 if action.actionName == "FUME_HOODS_ON":210 parameters.update({'operation' : 'FUME_HOODS_ON'})211 return RoomFanHoodsActionDriver(parameters = parameters)212 if action.actionName == "FUME_HOODS_OFF":213 parameters.update({'operation' : 'FUME_HOODS_OFF'})214 return RoomFanHoodsActionDriver(parameters = parameters)215 216 raise DriverNotFoundError("Impossibile to find any driver for the action " + str(action))217 def __str__(self):...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!