def env_test_01(): admin_user = User(name="Administrator", role=ROLE_ADMIN, access_code="1234") admin_user.add_registration_code("1234") session.add_all([ admin_user, User(name="Chuck Norris", role=ROLE_USER, access_code="1111") ]) print(" - Created users") z1 = Zone(name="No delay", description="Alert with no delay") z2 = Zone(name="Tamper", disarmed_delay=0, away_alert_delay=None, stay_alert_delay=None, description="Sabotage alert") z3 = Zone(name="Away/stay delayed", away_alert_delay=5, stay_alert_delay=5, description="Alert delayed when armed AWAY or STAY") z4 = Zone(name="Stay delayed", stay_alert_delay=5, description="Alert delayed when armed STAY") z5 = Zone(name="Stay", stay_alert_delay=None, description="No alert when armed STAY") session.add_all([z1, z2, z3, z4, z5]) print(" - Created zones") session.add_all(SENSOR_TYPES) print(" - Created sensor types") s1 = Sensor(channel=0, sensor_type=SENSOR_TYPES[0], zone=z3, description="Garage") s2 = Sensor(channel=1, sensor_type=SENSOR_TYPES[2], zone=z5, description="Test room") s3 = Sensor(channel=2, sensor_type=SENSOR_TYPES[1], zone=z2, description="Tamper") session.add_all([s1, s2, s3]) print(" - Created sensors") kt1 = KeypadType(1, "DSC", "DSC keybus (DSC PC-1555RKZ)") kt2 = KeypadType(2, "WIEGAND", "Wiegand keypad") session.add_all([kt1, kt2]) print(" - Created keypad types") k1 = Keypad(keypad_type=kt1) session.add_all([k1]) print(" - Created keypads") session.commit()
def update_zones(): # Request data about zones url = 'https://datos.cdmx.gob.mx/api/records/1.0/download/?dataset=alcaldias' r = requests.get(url, allow_redirects=True) decoded_content = r.content.decode('utf-8') cr = csv.reader(decoded_content.splitlines(), delimiter=';') # Skips headers next(cr) # Remove old data Zone.query.delete() # Insert all records for row in cr: shape = geojson.loads(row[5]) geom = from_shape(asShape(shape), srid=4326) newZone = Zone( name=row[0], shape=geom, ) db.session.add(newZone) db.session.commit()
def list_zones(self, limit): frontier = PaginationFrontier([self.tenant]) found_zones = [] while not frontier.is_empty(): link, tenant = frontier.pop_next_zone_link() if not link: return found_zones path, params = frontier.parse_url(link) params['sort_key'] = 'id' print "%s: GET %s" % (self.tenant.id, link) resp = self.client.get(path, params=params) check_resp(resp) zones = resp.json()['zones'] links = resp.json()['links'] if 'next' in links: next_link = links['next'] frontier.add_zone_link(next_link, tenant) for z in zones: zone = Zone(z['id'], z['name']) found_zones.append(zone) if len(found_zones) >= limit: return found_zones return found_zones
def handle_zhejiang_zone(self): from data import zhejiang_zone for k, v in zhejiang_zone.items(): if v: for v_k, v_v in v.items(): zone = Zone(k, v_k, v_v) self.db.add(zone) self.db.commit() print('insert zhejiang zone is ok!')
def create_zone(): zone = Zone() zone.update(request.json) if not zone.description: zone.description = zone.name db.session.add(zone) db.session.commit() IPCClient().update_configuration() return jsonify(zone.serialize)
def create_zone(self): zone_name, email = random_zone_email() payload = { "name": zone_name, "email": email, "ttl": 7200 } resp = self.client.post_zone(data=json.dumps(payload)) check_resp(resp) zone = Zone(resp.json()['id'], resp.json()['name']) print '%s: Created zone %s' % (self.tenant.id, zone.name) return zone
def __init__(self, parent, ctx, args, guild, user, channel): """ Command handler for UndoCommand Parameters ---------- parent : DreamcraftHandler The handler for Dreamcraft Bot commands and subcommands ctx : object(Context) The Discord.Context object used to retrieve and send information to Discord users args : array(str) The arguments sent to the bot to parse and evaluate guild : Guild The guild object containing information about the server issuing commands user : User The user database object containing information about the user's current setttings, and dialogs channel : Channel The channel from which commands were issued Returns ------- UndoCommand - object for processing undo/redo commands and subcommands """ self.parent = parent self.new = parent.new self.delete = parent.delete self.ctx = ctx self.args = args[1:] self.guild = guild self.user = user self.channel = channel self.command = self.args[0].lower() if len(self.args) > 0 else 'undo' self.scenario = Scenario().get_by_id( self.channel.active_scenario ) if self.channel and self.channel.active_scenario else None self.sc = Scene().get_by_id( self.channel.active_scene ) if self.channel and self.channel.active_scene else None self.zone = Zone().get_by_id( self.channel.active_zone ) if self.channel and self.channel.active_zone else None self.char = Character().get_by_id( self.user.active_character ) if self.user and self.user.active_character else None
def addZones(db, zonesList): res = [] for zone in zonesList: z = Zone(name=zone[0]) map_ = Map.query.filter_by(id=zone[1]).first() if map_ != None: print ('Added to {0} zone {1}'.format(map_.name, z.name)) map_.zones.append(z) db.session.add(map_) db.session.add(z) db.session.flush() res.append(z.id) print ('Added zone {0}'.format(zone[0])) db.session.commit() return res
def _gen_zone(zone_name, latency, pricing, datacenters_map): supported_cloud_providers = set({"aws", "gcp"}) zone_parts = zone_name.split("-") if len(zone_parts) < 2: print("Zone must be complete - ", zone_parts) return None cp_name = zone_parts[0] if cp_name not in supported_cloud_providers: print("Unsupported cloud provider - ", cp_name) return None cp = CloudProvider(cp_name) region_name = "-".join(zone_parts[1:len(zone_parts)]) region_location = datacenters_map[cp_name + "-" + region_name]["location"] region = Region(region_name, region_location) zone = Zone("1", region, cp, latency, pricing[cp_name]) return zone
def gather_zones(self): if self.done(): LOG.debug("we're done!") self.done_gathering.fire() return # grab a list zones link from our 'frontier' of links link, tenant = self.frontier.pop_next_zone_link() if not link: return # we want to be careful to retain the 'marker=<uuid>' that's used to # grab different pages of a paginated list path, params = self.frontier.parse_url(link) params['sort_key'] = 'id' client = self.designate_client.as_user(tenant) resp = client.get(path, name='/v2/zones', params=params) if not resp.ok: LOG.error("failed to list zones while gathering zones") return zones = resp.json()['zones'] links = resp.json()['links'] LOG.info("%s -- fetched %s zones for tenant %s", resp.request.url, len(zones), tenant) if 'next' in links: self.frontier.add_zone_link(links['next'], tenant) else: LOG.debug("no more zone 'next' links to pursue") for z in zones: zone = Zone(z['id'], z['name']) # be sure to avoid storing recordsets on zones we're going to delete if len(tenant.data.zones_for_get) <= len(tenant.data.zones_for_delete): tenant.data.zones_for_get.append(zone) path, _ = self.frontier.parse_url(z['links']['self']) recordset_link = "{0}/recordsets".format(path) self.frontier.add_recordset_link(zone, recordset_link, tenant) else: tenant.data.zones_for_delete.append(zone)
def parse_data(self): try: for i in range(len(self.zone_provice_code)): print("provice code: %s" % self.zone_provice_code[i]) for k , v in self.zone_data[i][0].items(): city_code = hashlib.md5(os.urandom(16)).hexdigest() city = City(self.zone_provice_code[i], city_code, v) self.db.add(city) print("add city: %s" % v) city_zones = self.zone_data[i][1].get(k) if city_zones: for zk, zv in city_zones.items(): if zv: zone = Zone(city_code, zk, zv) self.db.add(zone) print("city: %s - zone: %s" % (v, zv)) self.db.commit() except Exception as e: self.db.rollback() finally: self.db.close()
def __init__(self, parent, ctx, args, guild, user, channel): """ Command handler for EngagementCommand Parameters ---------- parent : DreamcraftHandler The handler for Dreamcraft Bot commands and subcommands ctx : object(Context) The Discord.Context object used to retrieve and send information to Discord users args : array(str) The arguments sent to the bot to parse and evaluate guild : Guild The guild object containing information about the server issuing commands user : User The user database object containing information about the user's current setttings, and dialogs channel : Channel The channel from which commands were issued Returns ------- EngagementCommand - object for processing engagement commands and subcommands """ self.parent = parent self.new = parent.new self.delete = parent.delete self.ctx = ctx self.args = args[1:] self.guild = guild self.user = user self.command = self.args[0].lower() if len(self.args) > 0 else 'n' channel = 'private' if ctx.channel.type.name == 'private' else ctx.channel.name self.channel = Channel().get_or_create(channel, self.guild.name, self.user) self.scenario = Scenario().get_by_id(self.channel.active_scenario) if self.channel and self.channel.active_scenario else None self.sc = Scene().get_by_id(self.channel.active_scene) if self.channel and self.channel.active_scene else None self.zone = Zone().get_by_id(self.channel.active_zone) if self.channel and self.channel.active_zone else None self.engagement = Engagement().get_by_id(self.channel.active_engagement) if self.channel and self.channel.active_engagement else None self.can_edit = self.user.role == 'Game Master' if self.user and self.engagement else True self.char = Character().get_by_id(self.user.active_character) if self.user and self.user.active_character else None
def zone_list(self, args): """Display a dialog for viewing and selecting Zones Parameters ---------- args : list(str) List of strings with subcommands Returns ------- list(str) - the response messages string array """ messages = [] if not self.sc: raise Exception('No active scene. Try this:```css\n.d scene "SCENE NAME"```') def canceler(cancel_args): if cancel_args[0].lower() in ['zone']: return ZoneCommand(parent=self.parent, ctx=self.ctx, args=cancel_args, guild=self.guild, user=self.user, channel=self.channel).run() else: self.parent.args = cancel_args self.parent.command = self.parent.args[0] return self.parent.get_messages() messages.extend(Dialog({ 'svc': zone_svc, 'user': self.user, 'title': 'Zone List', 'command': 'zone ' + (' '.join(args)), 'type': 'view', 'type_name': 'ZONE', 'getter': { 'method': Zone().get_by_scene, 'params': {'scene': self.sc, 'archived': False} }, 'formatter': lambda item, item_num, page_num, page_size: f'{item.get_short_string(self.channel)}', 'cancel': canceler }).open()) return messages
def delete_zone(self, args, guild, channel, scene, zone, user): messages = [] search = '' if len(args) == 1: if not zone: raise Exception('No zone provided for deletion') else: search = ' '.join(args[1:]) zone = Zone().find(guild.name, str(channel.id), str(scene.id), search) if not zone: return [f'{search} was not found. No changes made.'] else: search = str(zone.name) channel_id = str(zone.channel_id) if zone.channel_id else '' zone.character.archive(user) zone.archived = True self.save(zone, user) messages.append(f'***{search}*** removed') if channel_id: channel = Channel().get_by_id(channel_id) messages.append(channel.get_string()) return messages
def SaveZone(lst): try: logok = '' logero = '' first_sheet = lst.sheet_by_index(0) for r in range(1, first_sheet.nrows): m = first_sheet.cell(r, 0).value m2 = first_sheet.cell(r, 2).value chk = Zone.objects.filter(ZoneName=m, Network=m2).exists() if chk == False: sv = Zone( ZoneName=m, Description=first_sheet.cell(r, 1).value, Network=m2, ) sv.save() logok += m.encode("utf-8") + '/' elif chk == True: logero += m.encode("utf-8") + '/' return {'y0': logok, 'y1': logero} except: return False
def _do_create_domain(self): tenant = self.select_random_tenant() if not tenant: return client = self.designate_client.as_user(tenant) zone_name, email = random_zone_email() payload = {"name": zone_name, "email": email, "ttl": 7200} # the with block lets us specify when the request has succeeded. # this lets us time how long until an active or error status. start_time = time.time() post_resp = client.post_zone(data=json.dumps(payload), name='/v2/zones') if not post_resp.ok: return if CONFIG.use_digaas: self.digaas_behaviors.observe_zone_create(post_resp, start_time) api_call = lambda: client.get_zone(zone_id=post_resp.json()['id'], name='/v2/zones/ID - status check') self._poll_until_active_or_error( api_call=api_call, status_function=lambda r: r.json()['status'], success_function=lambda: self.async_success( post_resp, start_time, '/v2/zones - async'), failure_function=lambda msg: self.async_failure( post_resp, start_time, '/v2/zones - async', msg), ) # if we successfully created the zone, add it to our list # todo: add some domains to the delete list resp = api_call() if resp.ok and resp.json()['status'] == 'ACTIVE': zone = Zone(resp.json()['id'], resp.json()['name']) # LOG.info("%s -- Added zone %s", tenant, zone) tenant.data.zones_for_delete.append(zone)
def adjoin(self, args, guild, channel, sc, user): messages = [] incorrect_sytax = f'Incorrect syntax:```css\n.d scene {args[0]} "ZONE NAME 1" to "Zone Name 2"```' if len(args) < 4 or ' to ' not in ' '.join(args): raise Exception('\n'.join(['No zones adjoined', incorrect_sytax])) if not sc: raise Exception( 'You don\'t have an active scene. Try this:```css\n.d new scene SCENE_NAME```' ) zones = ' '.join(args).replace(f'{args[0]} ', '').split(' to ') zone_list = [] for z in zones: zone = Zone().find(name=z, guild=guild, channel_id=str(channel.id), scene_id=str(sc.id)) if zone: zone_list.append(zone) if len(zone_list) < 2: raise Exception(f'***{zones[0]}*** or ***{zones[1]}*** not found') adjoined = [] if sc.adjoined_zones: adjoined = copy.deepcopy(sc.adjoined_zones) for adjoin in adjoined: if str(zone_list[0].id) in adjoin and str( zone_list[1].id) in adjoin: raise Exception( f'***{zone_list[0].name}*** and ***{zone_list[1].name}*** are already adjoined in ***{sc.name}***' ) adjoined.append([str(z.id) for z in zone_list]) sc.adjoined_zones = adjoined self.save(sc, user) messages.append( f'***{zone_list[0].name}*** and ***{zone_list[1].name}*** are now adjoined in ***{sc.name}***' ) return messages
#!/usr/bin/env python3 import sys from pathlib import Path # add parent folder sys.path.append(str(Path(__file__).parent.parent.absolute())) from app import db, app # noqa: E402 from models import Zone # noqa: E402 zone = Zone(zone=input("Enter zone name: ")) with app.app_context(): db.session.add(zone) db.session.commit()
def new_zone(self, args): """Create a new Zone by name Parameters ---------- args : list(str) List of strings with subcommands Returns ------- list(str) - the response messages string array """ if not self.sc: raise Exception('No active scene or name provided. Try this:```css\n.d scene "SCENE NAME"```') messages = [] if len(args) == 0: if not self.zone: return [ 'No active zone or name provided\n\n', self.dialog('all') ] messages.append(self.zone.get_string(self.channel)) else: if len(args) == 1 and args[0].lower() == 'short': return [self.dialog('active_zone_short')] zone_name = ' '.join(args) if len(args) > 1 and args[1] == 'rename': zone_name = ' '.join(args[2:]) if not self.zone: return [ 'No active zone or name provided\n\n', self.dialog('all') ] else: zone = Zone().find(self.guild.name, str(self.channel.id), str(self.sc.id), zone_name) if zone: return [f'Cannot rename to _{zone_name}_. Zone already exists'] else: self.zone.name = zone_name zone_svc.save(self.zone, self.user) messages.append(self.dialog('')) else: def canceler(cancel_args): if cancel_args[0].lower() in ['zone','z']: return ZoneCommand(parent=self.parent, ctx=self.ctx, args=cancel_args, guild=self.guild, user=self.user, channel=self.channel).run() else: self.parent.args = cancel_args self.parent.command = self.parent.args[0] return self.parent.get_messages() def selector(selection): self.zone = selection self.channel.set_active_zone(self.zone, self.user) self.user.set_active_character(self.zone.character) zone_svc.save_user(self.user) return [self.dialog('')] messages.extend(Dialog({ 'svc': zone_svc, 'user': self.user, 'title': 'Zone List', 'command': 'new zone ' + ' '.join(args), 'type': 'select', 'type_name': 'ZONE', 'getter': { 'method': Zone.get_by_page, 'params': {'params': {'name__icontains': zone_name, 'channel_id': str(self.channel.id), 'guild': self.guild.name, 'archived': False}} }, 'formatter': lambda item, item_num, page_num, page_size: f'_ZONE #{item_num+1}_\n{item.get_short_string()}', 'cancel': canceler, 'select': selector, 'confirm': { 'method': Zone().get_or_create, 'params': {'user': self.user, 'name': zone_name, 'scene': self.sc, 'channel': self.channel, 'guild': self.guild.name} } }).open()) return messages
def env_live_01(): session.add_all([ User(name="Administrator", role=ROLE_ADMIN, access_code="1234"), User(name="Chuck.Norris", role=ROLE_USER, access_code="1111"), ]) print(" - Created users") z1 = Zone(name="No delay", description="Alert with no delay") z2 = Zone(name="Away delayed", away_alert_delay=20, description="Alert delayed when armed AWAY") z3 = Zone(name="Stay delayed", stay_alert_delay=20, description="Alert delayed when armed STAY") z4 = Zone(name="Stay", stay_alert_delay=None, description="No alert when armed STAY") z5 = Zone(name="Away/Stay delayed", away_alert_delay=40, stay_alert_delay=20, description="Alert delayed when armed AWAY/STAY") z6 = Zone(name="Tamper", disarmed_delay=0, away_alert_delay=None, stay_alert_delay=None, description="Sabotage alert") session.add_all([z1, z2, z3, z4, z5, z6]) print(" - Created zones") session.add_all(SENSOR_TYPES) print(" - Created sensor types") s1 = Sensor(channel=0, sensor_type=SENSOR_TYPES[0], zone=z5, description="Garage") s2 = Sensor(channel=1, sensor_type=SENSOR_TYPES[0], zone=z5, description="Hall") s3 = Sensor(channel=2, sensor_type=SENSOR_TYPES[2], zone=z5, description="Front door") s4 = Sensor(channel=3, sensor_type=SENSOR_TYPES[0], zone=z3, description="Kitchen") s5 = Sensor(channel=4, sensor_type=SENSOR_TYPES[0], zone=z1, description="Living room") s6 = Sensor(channel=5, sensor_type=SENSOR_TYPES[0], zone=z4, description="Children's room") s7 = Sensor(channel=6, sensor_type=SENSOR_TYPES[0], zone=z4, description="Bedroom") s8 = Sensor(channel=7, sensor_type=SENSOR_TYPES[1], zone=z6, description="Tamper") session.add_all([s1, s2, s3, s4, s5, s6, s7, s8]) print(" - Created sensors") kt1 = KeypadType(1, "DSC", "DSC keybus (DSC PC-1555RKZ)") session.add_all([kt1]) print(" - Created keypad types") k1 = Keypad(keypad_type=kt1) session.add_all([k1]) print(" - Created keypads") session.commit()