def generate_metadata_file(self, metadata_dict, bookid):
     try:
         tmp_file = tempfile.mkstemp()
         f = open(tmp_file[1], "aw")
         
         f.write("Título: " + metadata_dict["title"] + "\n")
         f.write("Subtítulo: " + metadata_dict["subtitle"] + "\n")
         f.write("Assunto: " + subject_table_map.get_subject(metadata_dict["subject"]) + "\n")
         f.write("Fontes: " + metadata_dict["source"] + "\n")
         f.write("Título do Livro: " + metadata_dict["book_title"] + "\n")
         f.write("Página do Livro: " + str(metadata_dict["page_number"]) + "\n")
         f.write("Número da Tabela: " + str(metadata_dict["table_number"]) + "\n")
         
         f.close()
 
         f = open(tmp_file[1], "rb")
         data_mngr2.record_metadata_file(dict(
                                          book_id=bookid,
                                          page_number=metadata_dict["page_number"],
                                          table_number=metadata_dict["table_number"],
                                          mt_file=f.read()
                                          ))
         
         f.close()
         os.unlink(f.name)
         
         msg = "Metadata file generated with success. Content: " + str(metadata_dict)
         logger.info(msg)
     
     except Exception as e:
         logger.error(e)
         raise e
 def __record_page_table_and_metadata(self, answers):
     # retrieve page (testar none)
     book_id = self.get_book_id()
     page_num = self.task.info["page"]
     page = data_manager.get_page(book_id, page_num)
     
     if (page == None):
         logger.warn("The page from the book " + book_id + " and page number " +  str(page_num) + " doesn't exist.")
         return
     
     for i in range(0, len(answers)):
         answer = answers[i]
         page_table_dict = dict(bookid=book_id, pageid=page.id, local_url="/books/" + book_id + "/metadados/tabelasBaixa/image" + str(page_num) + "_" + str(i) + ".png", top_pos=answer['top'], left_pos=answer['left'], right_pos=(answer['left'] + answer['width']), bottom_pos=(answer['top'] + answer['height']))
         data_manager.record_page_table(page_table_dict)
         
         # retrieve page table
         page_table = data_manager.get_page_table_by_position(page.id, page_table_dict['top_pos'], page_table_dict['left_pos'], page_table_dict['right_pos'], page_table_dict['bottom_pos'])
         
         if (page_table == None):
             logger.warn("The page table from the book " + book_id + " and page " +  str(page.id) + " doesn't exist.")
             return
         
         metadata = answer['text']
         subject_name = priority_task_manager.get_subject(metadata['assunto'])
         
         data_manager.record_metadata(dict(bookid=book_id, pageid=page.id, pagetableid=page_table.id, source=metadata['fontes'], title=metadata['titulo'], subtitle=metadata['subtitulo'], subject=(metadata['outros'] if subject_name == "Outros" else subject_name), initial_date=metadata['dataInicial'], final_date=metadata['dataFinal']))