def event_received_cb(self, text):
     ''' Data is passed as tuples: cmd:text '''
     _logger.debug('<<< %s' % (text[0]))
     if text[0] == 's':  # shared journal objects
         e, data = text.split(':')
         self._load(data)
     elif text[0] == 'j':  # Someone new has joined
         e, buddy = text.split(':')
         _logger.debug('%s has joined' % (buddy))
         if buddy not in self._buddies:
             self._buddies.append(buddy)
         if self.initiating:
             self._send_event('J:%s' % (profile.get_nick_name()))
             self._share_slides()
             self._share_audio()
     elif text[0] == 'J':  # Everyone must share
         e, buddy = text.split(':')
         self.waiting = False
         if buddy not in self._buddies:
             self._buddies.append(buddy)
             _logger.debug('%s has joined' % (buddy))
         self._share_slides()
         self._share_audio()
     elif text[0] == 'a':  # audio recording
         e, data = text.split(':')
         nick, colors, base64 = self._data_loader(data)
         path = os.path.join(activity.get_activity_root(),
                             'instance', 'nick.ogg')
         base64_to_file(activity, base64, path)
         self._add_playback_button(nick, colors, path)
Example #2
0
 def get_fusion_as_file(*, head_id, body_id, color_id):
     try:
         chrome.get(
             PokeFusion.BASE_URL_FUSION.format(head_id=head_id,
                                               body_id=body_id,
                                               color_id=color_id))
         data = chrome.find_element_by_id("image1").get_attribute(
             "src").split(",", 1)[1]
         return utils.base64_to_file(data)
     except UnexpectedAlertPresentException:
         chrome.switch_to.alert.dismiss()
Example #3
0
    def event_received_cb(self, collab, buddy, msg):
        ''' Data is passed as tuples: cmd:text '''
        command = msg.get("command")
        payload = msg.get("payload")
        logging.debug(command)

        if command == JOIN_CMD:
            # Sharer needs to send reflections database to joiners.
            if self.initiating:
                # Send pictures first.
                for item in self.reflection_data:
                    if 'content' in item:
                        for content in item['content']:
                            if 'image' in content:
                                pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
                                    content['image'], 120, 90)
                                if pixbuf is not None:
                                    data = utils.pixbuf_to_base64(pixbuf)
                                self.send_event(
                                    PICTURE_CMD, {
                                        "image": os.path.basename(
                                            content['image']),
                                        "data": data
                                    })
                data = json.dumps(self.reflection_data)
                self.send_event(SHARE_CMD, {"data": data})
        elif command == NEW_REFLECTION_CMD:
            self._reflect_window.add_new_reflection(payload)
        elif command == TITLE_CMD:
            obj_id = payload.get("obj_id")
            title = payload.get("title")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.update_title(obj_id, title)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == TAG_CMD:
            obj_id = payload.get("obj_id")
            data = payload.get("data")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.update_tags(obj_id, data)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == ACTIVITY_CMD:
            obj_id = payload.get("obj_id")
            bundle_id = payload.get("bundle_id")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.insert_activity(obj_id, bundle_id)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == STAR_CMD:
            obj_id = payload.get("obj_id")
            stars = payload.get("stars")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.update_stars(obj_id, int(stars))
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == COMMENT_CMD:
            found_the_object = False
            # Receive a comment and associated reflection ID
            obj_id = payload.get("obj_id")
            nick = payload.get("nick")
            color = payload.get("color")
            comment = payload.get("comment")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    if 'comments' not in item:
                        item['comments'] = []
                    data = {'nick': nick, 'comment': comment, 'color': color}
                    item['comments'].append(data)
                    self._reflect_window.insert_comment(obj_id, data)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == REFLECTION_CMD:
            found_the_object = False
            # Receive a reflection and associated reflection ID
            obj_id = payload.get("obj_id")
            reflection = payload.get("reflection")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    if '' not in item:
                        item['content'] = []
                    item['content'].append({'text': reflection})
                    self._reflect_window.insert_reflection(obj_id, reflection)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == IMAGE_REFLECTION_CMD:
            found_the_object = False
            # Receive a picture reflection and associated reflection ID
            obj_id = payload.get("obj_id")
            basename = payload.get("basename")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    if '' not in item:
                        item['content'] = []
                    item['content'].append(
                        {'image': os.path.join(self.tmp_path, basename)})
                    self._reflect_window.insert_picture(
                        obj_id, os.path.join(self.tmp_path, basename))
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == PICTURE_CMD:
            # Receive a picture (MAYBE DISPLAY IT AS IT ARRIVES?)
            basename = payload.get("basename")
            data = payload.get("data")
            utils.base64_to_file(data, os.path.join(self.tmp_path, basename))
        elif command == SHARE_CMD:
            # Joiner needs to load reflection database.
            if not self.initiating:
                # Note that pictures should be received.
                self.reflection_data = payload
                self._reflect_window.load(self.reflection_data)
                self._waiting_for_reflections = False
                self.reset_cursor()
                if self._joined_alert is not None:
                    self.remove_alert(self._joined_alert)
                    self._joined_alert = None
Example #4
0
    def dao_add_info(self, loan_dir, subtransactions=False, nested=False):
        """
        信息入库
        :param nested:
        :param subtransactions:
        :param loan_dir: 资料目录
        :return:
        """
        with db.auto_commit_db(subtransactions,
                               nested,
                               error_call=FileUtil.del_dir,
                               dir_path=loan_dir) as s:
            s.add(self)

            # 写入磁盘
            file_models = []
            for file in self.file_data:
                file_path = base64_to_file(file.file_base64, loan_dir,
                                           file.file_name, file.file_format)

                # 文件入库
                file_model = FileModel()
                file_model.dao_init_file(file_path, nested=True)

                file_models.append(file_model)

            # 图片处理明细信息
            details = []
            for file_model in file_models:
                if file_model.file_format.strip().upper(
                ) == FileFormat.PDF.value:
                    # 文件为pdf, 分割 pdf, 更新资料信息
                    img_path = FileUtil.path_join(
                        loan_dir, current_app.config.get('DATA_DIR_IMG'),
                        file_model.id)
                    page_num, img_num, fail_num, detail_info = PDFUtil.pdf_to_pic(
                        file_model.file_path, img_path)

                    images = detail_info.get('images', None)
                    if img_num > 0 and is_not_empty(images):
                        for image in images:
                            if is_empty(image.get('error_msg', None)):
                                # 图片文件入库
                                img_model = FileModel()
                                img_model.dao_init_file(image.get(
                                    'img_path', ''),
                                                        nested=True)
                                # 图片明细入库
                                img_detail = ImgDetailModel()
                                img_detail.dao_add(self.id,
                                                   file_model.id,
                                                   img_model.id,
                                                   nested=True)

                    self.page_num += page_num
                    self.success_num += img_num
                    self.fail_num += fail_num
                    details.append(
                        dict(id=file_model.id,
                             md5=file_model.md5_id,
                             page_num=page_num,
                             success_num=img_num,
                             fail_num=fail_num))
                else:
                    # 文件备份, 迁移处理文件
                    new_img_path = FileUtil.copy_file(
                        file_model.file_path,
                        FileUtil.path_join(
                            loan_dir, current_app.config.get('DATA_DIR_IMG')))

                    # 图片文件入库
                    img_model = FileModel()
                    img_model.dao_init_file(new_img_path, nested=True)
                    # 文件为图片, 图片明细入库
                    img_detail = ImgDetailModel()
                    img_detail.dao_add(self.id,
                                       file_model.id,
                                       img_model.id,
                                       nested=True)

                    self.page_num += 1
                    self.success_num += 1
                    self.fail_num += 0
                    details.append(
                        dict(id=file_model.id,
                             md5=file_model.md5_id,
                             page_num=1,
                             success_num=1,
                             fail_num=0))
        return dict(id=self.id, details=details)
Example #5
0
    def event_received_cb(self, collab, buddy, msg):
        ''' Data is passed as tuples: cmd:text '''
        command = msg.get("command")
        payload = msg.get("payload")
        logging.debug(command)

        if command == JOIN_CMD:
            # Sharer needs to send reflections database to joiners.
            if self.initiating:
                # Send pictures first.
                for item in self.reflection_data:
                    if 'content' in item:
                        for content in item['content']:
                            if 'image' in content:
                                pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
                                    content['image'], 120, 90)
                                if pixbuf is not None:
                                    data = utils.pixbuf_to_base64(pixbuf)
                                self.send_event(PICTURE_CMD,
                                    {"image": os.path.basename(content['image']),
                                     "data": data})
                data = json.dumps(self.reflection_data)
                self.send_event(SHARE_CMD, {"data": data})
        elif command == NEW_REFLECTION_CMD:
            self._reflect_window.add_new_reflection(payload)
        elif command == TITLE_CMD:
            obj_id = payload.get("obj_id")
            title = payload.get("title")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.update_title(obj_id, title)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == TAG_CMD:
            obj_id = payload.get("obj_id")
            data = payload.get("data")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.update_tags(obj_id, data)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == ACTIVITY_CMD:
            obj_id = payload.get("obj_id")
            bundle_id = payload.get("bundle_id")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.insert_activity(obj_id, bundle_id)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == STAR_CMD:
            obj_id = payload.get("obj_id")
            stars = payload.get("stars")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    self._reflect_window.update_stars(obj_id, int(stars))
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == COMMENT_CMD:
            found_the_object = False
            # Receive a comment and associated reflection ID
            obj_id = payload.get("obj_id")
            nick = payload.get("nick")
            color = payload.get("color")
            comment = payload.get("comment")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    if not 'comments' in item:
                        item['comments'] = []
                    data = {'nick': nick, 'comment': comment, 'color': color}
                    item['comments'].append(data)
                    self._reflect_window.insert_comment(obj_id, data)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == REFLECTION_CMD:
            found_the_object = False
            # Receive a reflection and associated reflection ID
            obj_id = payload.get("obj_id")
            reflection = payload.get("reflection")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    if not '' in item:
                        item['content'] = []
                    item['content'].append({'text': reflection})
                    self._reflect_window.insert_reflection(obj_id, reflection)
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == IMAGE_REFLECTION_CMD:
            found_the_object = False
            # Receive a picture reflection and associated reflection ID
            obj_id = payload.get("obj_id")
            basename = payload.get("basename")
            for item in self.reflection_data:
                if item['obj_id'] == obj_id:
                    found_the_object = True
                    if not '' in item:
                        item['content'] = []
                    item['content'].append(
                        {'image': os.path.join(self.tmp_path, basename)})
                    self._reflect_window.insert_picture(
                        obj_id, os.path.join(self.tmp_path, basename))
                    break
            if not found_the_object:
                logging.error('Could not find obj_id %s' % obj_id)
        elif command == PICTURE_CMD:
            # Receive a picture (MAYBE DISPLAY IT AS IT ARRIVES?)
            basename = payload.get("basename")
            data = payload.get("data")
            utils.base64_to_file(data, os.path.join(self.tmp_path, basename))
        elif command == SHARE_CMD:
            # Joiner needs to load reflection database.
            if not self.initiating:
                # Note that pictures should be received.
                self.reflection_data = payload
                self._reflect_window.load(self.reflection_data)
                self._waiting_for_reflections = False
                self.reset_cursor()
                if self._joined_alert is not None:
                    self.remove_alert(self._joined_alert)
                    self._joined_alert = None
Example #6
0
 def event_received_cb(self, text):
     ''' Data is passed as tuples: cmd:text '''
     logging.debug(text[0])
     if text[0] == JOIN_CMD:
         # Sharer needs to send reflections database to joiners.
         if self.initiating:
             # Send pictures first.
             for item in self.reflection_data:
                 if 'content' in item:
                     for content in item['content']:
                         if 'image' in content:
                             pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_size(
                                 content['image'], 120, 90)
                             if pixbuf is not None:
                                 data = utils.pixbuf_to_base64(pixbuf)
                             self.send_event(
                                 '%s|%s|%s' %
                                 (PICTURE_CMD,
                                  os.path.basename(content['image']),
                                  data))
             data = json.dumps(self.reflection_data)
             self.send_event(SHARE_CMD + data)
     elif text[0] == NEW_REFLECTION_CMD:
         cmd, data = text.split('|', 2)
         self._reflect_window.add_new_reflection(data)
     elif text[0] == TITLE_CMD:
         cmd, obj_id, title = text.split('|', 3)
         for item in self.reflection_data:
             if item['obj_id'] == obj_id:
                 found_the_object = True
                 self._reflect_window.update_title(obj_id, title)
                 break
         if not found_the_object:
             logging.error('Could not find obj_id %s' % obj_id)
     elif text[0] == TAG_CMD:
         cmd, obj_id, data = text.split('|', 3)
         for item in self.reflection_data:
             if item['obj_id'] == obj_id:
                 found_the_object = True
                 self._reflect_window.update_tags(obj_id, data)
                 break
         if not found_the_object:
             logging.error('Could not find obj_id %s' % obj_id)
     elif text[0] == ACTIVITY_CMD:
         cmd, obj_id, bundle_id = text.split('|', 3)
         for item in self.reflection_data:
             if item['obj_id'] == obj_id:
                 found_the_object = True
                 self._reflect_window.insert_activity(obj_id, bundle_id)
                 break
         if not found_the_object:
             logging.error('Could not find obj_id %s' % obj_id)
     elif text[0] == STAR_CMD:
         cmd, obj_id, stars = text.split('|', 3)
         for item in self.reflection_data:
             if item['obj_id'] == obj_id:
                 found_the_object = True
                 self._reflect_window.update_stars(obj_id, int(stars))
                 break
         if not found_the_object:
             logging.error('Could not find obj_id %s' % obj_id)
     elif text[0] == COMMENT_CMD:
         found_the_object = False
         # Receive a comment and associated reflection ID
         cmd, obj_id, nick, color, comment = text.split('|', 5)
         for item in self.reflection_data:
             if item['obj_id'] == obj_id:
                 found_the_object = True
                 if not 'comments' in item:
                     item['comments'] = []
                 data = {'nick': nick, 'comment': comment, 'color': color}
                 item['comments'].append(data)
                 self._reflect_window.insert_comment(obj_id, data)
                 break
         if not found_the_object:
             logging.error('Could not find obj_id %s' % obj_id)
     elif text[0] == REFLECTION_CMD:
         found_the_object = False
         # Receive a reflection and associated reflection ID
         cmd, obj_id, reflection = text.split('|', 3)
         for item in self.reflection_data:
             if item['obj_id'] == obj_id:
                 found_the_object = True
                 if not '' in item:
                     item['content'] = []
                 item['content'].append({'text': reflection})
                 self._reflect_window.insert_reflection(obj_id, reflection)
                 break
         if not found_the_object:
             logging.error('Could not find obj_id %s' % obj_id)
     elif text[0] == IMAGE_REFLECTION_CMD:
         found_the_object = False
         # Receive a picture reflection and associated reflection ID
         cmd, obj_id, basename = text.split('|', 3)
         for item in self.reflection_data:
             if item['obj_id'] == obj_id:
                 found_the_object = True
                 if not '' in item:
                     item['content'] = []
                 item['content'].append(
                     {'image': os.path.join(self.tmp_path, basename)})
                 self._reflect_window.insert_picture(
                     obj_id, os.path.join(self.tmp_path, basename))
                 break
         if not found_the_object:
             logging.error('Could not find obj_id %s' % obj_id)
     elif text[0] == PICTURE_CMD:
         # Receive a picture (MAYBE DISPLAY IT AS IT ARRIVES?)
         cmd, basename, data = text.split('|', 3)
         utils.base64_to_file(data, os.path.join(self.tmp_path, basename))
     elif text[0] == SHARE_CMD:
         # Joiner needs to load reflection database.
         if not self.initiating:
             # Note that pictures should be received.
             self.reflection_data = json.loads(text[1:])
             self._reflect_window.load(self.reflection_data)
             self._waiting_for_reflections = False
             self.reset_cursor()
             if self._joined_alert is not None:
                 self.remove_alert(self._joined_alert)
                 self._joined_alert = None