def creator(**params): item = Scene().get_or_create(**params) scenes = scenario_svc.get_scenes(self.scenario) characters = scenario_svc.get_characters(scenes) item.characters = [str(c.id) for c in characters] scene_svc.save(item, self.user) return item
def delete_scene(self, args, guild, channel, scenario, sc, user): messages = [] search = '' if len(args) == 1: if not sc: raise Exception('No scene provided for deletion') else: search = ' '.join(args[1:]) sc = Scene().find(guild.name, str(channel.id), str(scenario.id), search) if not sc: return [f'{search} was not found. No changes made.'] else: search = str(sc.name) scenario_id = str(sc.scenario_id) if sc.scenario_id else '' channel_id = str(sc.channel_id) if sc.channel_id else '' sc.character.archive(user) sc.archived = True sc.updated_by = str(user.id) sc.updated = T.now() sc.save() messages.append(f'***{search}*** removed') if scenario_id: secenario = Scenario().get_by_id(scenario_id) messages.append(secenario.get_string(channel)) elif channel_id: channel = Channel().get_by_id(channel_id) messages.append(channel.get_string()) return messages
def __init__(self, mongo_name=None): self.mongo_wrapper = MongoWrapper(mongo_name) self.mono_db_names = self.mongo_wrapper.get_db_names() self.scenes_handler = Scene(self.mongo_wrapper) self.hypothesis_handler = Hypothesis(self.mongo_wrapper) self.objects_handler = Object(self.mongo_wrapper) self.active_data_type = self.scenes_handler
def __init__(self, parent, ctx, args, guild, user, channel): """ Command handler for SessionCommand 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 ------- SessionCommand - object for processing session 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.session = Session().get_by_id( self.channel.active_session ) if self.channel and self.channel.active_session else None self.can_edit = self.user.role == 'Game Master' if self.user and self.session else True self.char = Character().get_by_id( self.user.active_character ) if self.user and self.user.active_character else None
def delete_scene(self, args): """Delete (archive) the current active Scene Parameters ---------- args : list(str) List of strings with subcommands Returns ------- list(str) - the response messages string array """ if not self.scenario: raise Exception('No active scenario. Try this:```css\n.d scenario "SCENARIO NAME"```') return scene_svc.delete_item(args, self.user, self.sc, Scene().find, {'guild': self.guild.name, 'channel_id': str(self.channel.id), 'scenario_id': str(self.scenario.id)})
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 enter_new_order(email, order_source, scene_list, option_string, note=''): '''Places a new espa order in the database''' order = Order() order.orderid = generate_order_id(email) order.email = email order.note = note order.status = 'ordered' order.order_date = datetime.datetime.now() order.product_options = option_string order.order_source = order_source order.save() for s in set(scene_list): scene = Scene() scene.name = s scene.order = order scene.order_date = datetime.datetime.now() scene.status = 'submitted' scene.save() return order
def scene_list(self, args): """Display a dialog for viewing and selecting Scenes Parameters ---------- args : list(str) List of strings with subcommands Returns ------- list(str) - the response messages string array """ messages = [] if not self.scenario: raise Exception('No active scenario. Try this:```css\n.d scenario "SCENARIO NAME"```') def canceler(cancel_args): if cancel_args[0].lower() in ['scene']: return SceneCommand(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': scene_svc, 'user': self.user, 'title': 'Scene List', 'command': 'scene ' + (' '.join(args)), 'type': 'view', 'getter': { 'method': Scene().get_by_scenario, 'params': {'scenario': self.scenario, 'archived': False} }, 'formatter': lambda item, item_num, page_num, page_size: f'{item.get_short_string(self.channel)}', 'cancel': canceler }).open()) return messages
def add_music_scene_tag(self, name): scene = Scene(name=name) database.session.add(scene) database.session.commit()
def load_ee_orders(): ''' Loads all the available orders from lta into our database and updates their status ''' lta_service = lta.LtaServices() #This returns a dict that contains a list of dicts{} #key:(order_num,email) = list({sceneid:, unit_num:}) orders = lta_service.get_available_orders() #This sets (hard codes) the product options that comes in from EE when someone #is requesting processing via their interface ee_options = { 'include_sourcefile': False, 'include_source_metadata': False, 'include_sr_toa': False, 'include_sr_thermal': False, 'include_sr': True, 'include_sr_browse': False, 'include_sr_ndvi': False, 'include_sr_ndmi': False, 'include_sr_nbr': False, 'include_sr_nbr2': False, 'include_sr_savi': False, 'include_sr_evi': False, 'include_solr_index': False, 'include_cfmask': False, 'reproject': False, 'resize': False, 'image_extents': False } #Capture in our db for eeorder, email in orders: #create the orderid based on the info from the eeorder order_id = generate_ee_order_id(email, eeorder) order = None #go look to see if it already exists in the db try: order = Order.objects.get(orderid=order_id) except: #Didn't find it in the db... make the order now order = Order() order.orderid = generate_ee_order_id(email, eeorder) order.email = email order.chain = 'sr_ondemand' order.status = 'ordered' order.note = 'EarthExplorer order id: %s' % eeorder order.product_options = json.dumps(ee_options) order.ee_order_id = eeorder order.order_source = 'ee' order.order_date = datetime.datetime.now() order.save() for s in orders[eeorder, email]: #go look for the scene by ee_unit_id. This will stop #duplicate key update collisions scene = None try: scene = Scene.objects.get(order=order, ee_unit_id=s['unit_num']) if scene.status == 'complete': success, msg, status = lta_service.update_order( eeorder, s['unit_num'], "C") if not success: log_msg = "Error updating lta for [eeorder:%s ee_unit_num:%s scene name:%s order:%s" % ( eeorder, s['unit_num'], scene.name, order.orderid) helperlogger(log_msg) log_msg = "Error detail: lta return message:%s lta return status code:%s" % ( msg, status) helperlogger(log_msg) elif scene.status == 'unavailable': success, msg, status = lta_service.update_order( eeorder, s['unit_num'], "R") if not success: log_msg = "Error updating lta for [eeorder:%s ee_unit_num:%s scene name:%s order:%s" % ( eeorder, s['unit_num'], scene.name, order.orderid) helperlogger(log_msg) log_msg = "Error detail: lta return message:%s lta return status code:%s" % ( msg, status) helperlogger(log_msg) except: scene = Scene() scene.name = s['sceneid'] scene.ee_unit_id = s['unit_num'] scene.order = order scene.order_date = datetime.datetime.now() scene.status = 'submitted' scene.save() #Update LTA success, msg, status = lta_service.update_order( eeorder, s['unit_num'], "I") if not success: log_msg = "Error updating lta for [eeorder:%s ee_unit_num:%s scene name:%s order:%s" % ( eeorder, s['unit_num'], scene.name, order.orderid) helperlogger(log_msg) log_msg = "Error detail: lta return message:%s lta return status code:%s" % ( msg, status) helperlogger(log_msg)
def new_scene(self, args): """Create a new Scene by name Parameters ---------- args : list(str) List of strings with subcommands Returns ------- list(str) - the response messages string array """ messages = [] if not self.scenario: raise Exception('No active scenario. Try this:```css\n.d new scenario "SCENARIO NAME"```') if len(args) == 0: if not self.sc: return [ 'No active scene or name provided\n\n', self.dialog('all') ] messages.append(self.sc.get_string(self.channel, self.user)) else: if len(args) == 1 and args[0].lower() == 'short': return [self.dialog('active_scene_short')] scene_name = ' '.join(args) if len(args) > 1 and args[1] == 'rename': scene_name = ' '.join(args[2:]) if not self.sc: return [ 'No active scene or name provided\n\n', self.dialog('all') ] else: scene = Scene().find(self.guild.name, str(self.channel.id), str(self.scenario.id), scene_name) if scene: return [f'Cannot rename to _{scene_name}_. Scene already exists'] else: self.sc.name = scene_name scene_svc.save(self.sc, self.user) messages.append(self.dialog('')) else: def canceler(cancel_args): if cancel_args[0].lower() in ['scene','s']: return SceneCommand(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.sc = selection self.channel.set_active_scene(self.sc, self.user) return [self.dialog('')] def creator(**params): item = Scene().get_or_create(**params) scenes = scenario_svc.get_scenes(self.scenario) characters = scenario_svc.get_characters(scenes) item.characters = [str(c.id) for c in characters] scene_svc.save(item, self.user) return item messages.extend(Dialog({ 'svc': scene_svc, 'user': self.user, 'title': 'Scene List', 'command': 'new scene ' + ' '.join(args), 'type': 'select', 'type_name': 'SCENE', 'getter': { 'method': Scene.get_by_page, 'params': {'params': {'name__icontains': scene_name, 'scenario_id': str(self.scenario.id), 'guild': self.guild.name, 'archived': False}} }, 'formatter': lambda item, item_num, page_num, page_size: f'_SCENE #{item_num+1}_\n{item.get_short_string()}', 'cancel': canceler, 'select': selector, 'confirm': { 'method': creator, 'params': {'user': self.user, 'name': scene_name, 'scenario': self.scenario, 'channel': self.channel, 'guild': self.guild.name} } }).open()) return messages
from models import Scene import sys size = 550 if __name__ == "__main__": angle = None try: angle = int(sys.argv[1]) except IndexError as e: print(f"IndexError: {e.args} - No argument passed in command line") finally: if angle is None: angle = 1 scene = Scene(size, angle) scene.draw()
def get_scene_by_id(self, scene_id): response = requests.get(self._base_url + 'do=/scenes/' + str(scene_id), timeout=TIMEOUT) data = json.loads(response.content) scene = data['scene'] return Scene(scene)
def __map_response_to_scenes(self, scene_list): scene_objects = map(lambda x: Scene(x), scene_list) return scene_objects