def test_addsave(self): self.factory.user = LucteriosUser.objects.get(username='******') self.assertFalse(exists(get_user_path('documents', 'document_1'))) file_path = join(dirname(__file__), 'static', 'lucterios.documents', 'images', 'documentFind.png') docs = Document.objects.all() self.assertEqual(len(docs), 0) self.factory.xfer = DocumentAddModify() with open(file_path, 'rb') as file_to_load: self.calljson('/lucterios.documents/documentAddModify', {"current_folder": "2", 'SAVE': 'YES', 'description': 'new doc', 'filename_FILENAME': 'doc.png', 'filename': file_to_load}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentAddModify') self.assertEqual(len(self.json_context), 3) docs = Document.objects.all() self.assertEqual(len(docs), 1) self.assertEqual(docs[0].folder.id, 2) self.assertEqual(docs[0].name, 'doc.png') self.assertEqual(docs[0].description, "new doc") self.assertEqual(docs[0].creator.username, "empty") self.assertEqual(docs[0].modifier.username, "empty") self.assertEqual(docs[0].date_creation, docs[0].date_modification) self.assertTrue(exists(get_user_path('documents', 'document_1')))
def test_logo(self): self.assertFalse(exists(get_user_path('contacts', 'Image_1.jpg'))) logo_path = join(dirname(__file__), "static", 'lucterios.contacts', 'images', 'ourDetails.png') logo_stream = "image.jpg;" + \ readimage_to_base64(logo_path, False).decode("utf-8") self.factory.xfer = CurrentStructureAddModify() self.calljson('/lucterios.contacts/currentStructureAddModify', { "SAVE": 'YES', "uploadlogo": logo_stream }, False) self.assert_observer('core.acknowledge', 'lucterios.contacts', 'currentStructureAddModify') self.assertTrue(exists(get_user_path('contacts', 'Image_1.jpg'))) self.factory.xfer = CurrentStructure() self.calljson('/lucterios.contacts/currentStructure', {}, False) self.assert_observer('core.custom', 'lucterios.contacts', 'currentStructure') self.assert_json_equal('IMAGE', 'logoimg', "data:image/*;base64,/9j/4AAQSkZJRg", True) self.factory.xfer = CurrentStructurePrint() self.calljson('/lucterios.contacts/currentStructurePrint', {}, False) self.assert_observer('core.print', 'lucterios.contacts', 'currentStructurePrint') pdf_value = b64decode( six.text_type(self.response_json['print']['content'])) self.assertEqual(pdf_value[:4], "%PDF".encode('ascii', 'ignore'))
def test_addsave(self): self.factory.user = LucteriosUser.objects.get(username='******') self.assertFalse(exists(get_user_path('documents', 'document_1'))) file_path = join(dirname(__file__), 'static', 'lucterios.documents', 'images', 'documentFind.png') docs = Document.objects.all() self.assertEqual(len(docs), 0) self.factory.xfer = DocumentAddModify() with open(file_path, 'rb') as file_to_load: self.call( '/lucterios.documents/documentAddModify', { "current_folder": "2", 'SAVE': 'YES', 'description': 'new doc', 'filename_FILENAME': 'doc.png', 'filename': file_to_load }, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentAddModify') self.assert_count_equal('CONTEXT/PARAM', 3) docs = Document.objects.all() self.assertEqual(len(docs), 1) self.assertEqual(docs[0].folder.id, 2) self.assertEqual(docs[0].name, 'doc.png') self.assertEqual(docs[0].description, "new doc") self.assertEqual(docs[0].creator.username, "empty") self.assertEqual(docs[0].modifier.username, "empty") self.assertEqual(docs[0].date_creation, docs[0].date_modification) self.assertTrue(exists(get_user_path('documents', 'document_1')))
def create_doc(user, with_folder=True): root_path = join(dirname(__file__), 'static', 'lucterios.documents', 'images') with ZipFile(get_user_path('documents', 'document_1'), 'w') as zip_ref: zip_ref.write(join(root_path, 'documentFind.png'), arcname='doc1.png') with ZipFile(get_user_path('documents', 'document_2'), 'w') as zip_ref: zip_ref.write(join(root_path, 'documentConf.png'), arcname='doc2.png') with ZipFile(get_user_path('documents', 'document_3'), 'w') as zip_ref: zip_ref.write(join(root_path, 'document.png'), arcname='doc3.png') current_date = timezone.now() new_doc1 = Document.objects.create(name='doc1.png', description="doc 1", creator=user, date_creation=current_date, date_modification=current_date) if with_folder: new_doc1.folder = Folder.objects.get(id=2) new_doc1.save() new_doc2 = Document.objects.create(name='doc2.png', description="doc 2", creator=user, date_creation=current_date, date_modification=current_date) if with_folder: new_doc2.folder = Folder.objects.get(id=1) new_doc2.save() new_doc3 = Document.objects.create(name='doc3.png', description="doc 3", creator=user, date_creation=current_date, date_modification=current_date) if with_folder: new_doc3.folder = Folder.objects.get(id=4) new_doc3.save() return current_date
def test_delete(self): current_date = create_doc(self.factory.user) self.factory.xfer = ContainerList() self.calljson('/lucterios.documents/containerList', {"current_folder": "2"}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerList') self.assert_count_equal('container', 2) self.assert_json_equal('', "container/@0/id", "3") self.assert_json_equal('', "container/@0/name", "truc3") self.assert_json_equal('', "container/@0/description", "----") self.assert_json_equal('', "container/@0/date_modif", None) self.assert_json_equal('', "container/@0/modif", None) self.assert_json_equal('', "container/@1/id", "5") self.assert_json_equal('', "container/@1/name", "doc1.png") self.assert_json_equal('', "container/@1/description", "doc 1") self.assert_json_equal('', "container/@1/date_modif", current_date.isoformat()[:23], True) self.assert_json_equal('', "container/@1/modif", None) self.assertTrue(exists(get_user_path('documents', 'container_5'))) self.factory.xfer = ContainerDel() self.calljson('/lucterios.documents/containerDel', {"container": "5", "CONFIRME": 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'containerDel') self.factory.xfer = ContainerList() self.calljson('/lucterios.documents/containerList', {"current_folder": "2"}, False) self.assert_count_equal('container', 1) self.assert_json_equal('', "container/@0/id", "3") self.assertFalse(exists(get_user_path('documents', 'container_5')))
def create_doc(self): file_path = join(dirname(__file__), 'static', 'lucterios.documents', 'images', 'documentFind.png') copyfile(file_path, get_user_path('documents', 'document_1')) copyfile(file_path, get_user_path('documents', 'document_2')) copyfile(file_path, get_user_path('documents', 'document_3')) current_date = timezone.now() new_doc1 = Document.objects.create(name='doc1.png', description="doc 1", creator=self.factory.user, date_creation=current_date, date_modification=current_date) new_doc1.folder = Folder.objects.get(id=2) new_doc1.save() new_doc2 = Document.objects.create(name='doc2.png', description="doc 2", creator=self.factory.user, date_creation=current_date, date_modification=current_date) new_doc2.folder = Folder.objects.get(id=1) new_doc2.save() new_doc3 = Document.objects.create(name='doc3.png', description="doc 3", creator=self.factory.user, date_creation=current_date, date_modification=current_date) new_doc3.folder = Folder.objects.get(id=4) new_doc3.save() return current_date
def test_export(self): self.assertFalse( exists(get_user_path('accounting', 'fiscalyear_export_1.xml'))) self.factory.xfer = FiscalYearExport() self.call('/diacamma.accounting/fiscalYearExport', {}, False) self.assert_observer('core.custom', 'diacamma.accounting', 'fiscalYearExport') self.assertTrue(exists(get_user_path('accounting', 'fiscalyear_export_1.xml')))
def show(self, xfer): LucteriosEditor.show(self, xfer) obj_addr = xfer.get_components('address') xfer.tab = obj_addr.tab new_col = obj_addr.col xfer.move(obj_addr.tab, 1, 0) img_path = get_user_path( "contacts", "Image_%s.jpg" % self.item.abstractcontact_ptr_id) img = XferCompImage('logoimg') if exists(img_path): img.type = 'jpg' img.set_value(readimage_to_base64(img_path)) else: img.set_value( get_icon_path("lucterios.contacts/images/NoImage.png")) img.set_location(new_col, obj_addr.row, 1, 6) xfer.add_component(img) if WrapAction.is_permission(xfer.request, 'contacts.add_abstractcontact'): if (len(self.item.__class__.get_select_contact_type(False)) > 0): btn = XferCompButton('btn_promote') btn.set_location(new_col + 1, xfer.get_max_row() + 1, 4) btn.set_action(xfer.request, ObjectPromote.get_action( _('Promote'), "images/config.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES, params={ 'modelname': xfer.model.get_long_name(), 'field_id': xfer.field_id }) xfer.add_component(btn) signal_and_lock.Signal.call_signal("show_contact", self.item, xfer)
def add_legalentity(self, legal_entity): self.new_tab(_("Legal entity")) self.item = legal_entity fields = LegalEntity.get_show_fields() self.fill_from_model(1, 1, True, fields[_('001@Identity')]) self.get_components('name').colspan = 2 self.get_components('structure_type').colspan = 2 img_path = get_user_path( "contacts", "Image_%s.jpg" % legal_entity.abstractcontact_ptr_id) img = XferCompImage('logoimg') if exists(img_path): img.type = 'jpg' img.set_value(readimage_to_base64(img_path)) else: img.set_value( get_icon_path("lucterios.contacts/images/NoImage.png")) img.set_location(0, 2, 1, 6) self.add_component(img) btn = XferCompButton('btn_edit') btn.set_is_mini(True) btn.set_location(4, 1, 1, 2) btn.set_action(self.request, CurrentLegalEntityModify.get_action( _('Edit'), "images/edit.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, params={'legal_entity': legal_entity.id}) self.add_component(btn)
def add_legalentity(self, legal_entity): self.new_tab(_("Legal entity")) self.item = legal_entity fields = LegalEntity.get_show_fields() self.fill_from_model(1, 1, True, fields[_('001@Identity')]) self.get_components('name').colspan = 2 self.get_components('structure_type').colspan = 2 img_path = get_user_path( "contacts", "Image_%s.jpg" % legal_entity.abstractcontact_ptr_id) img = XferCompImage('logoimg') if exists(img_path): img.type = 'jpg' img.set_value(readimage_to_base64(img_path)) else: img.set_value( get_icon_path("lucterios.contacts/images/NoImage.png")) img.set_location(0, 2, 1, 6) self.add_component(img) btn = XferCompButton('btn_edit') btn.set_is_mini(True) btn.set_location(4, 1, 1, 2) btn.set_action(self.request, CurrentLegalEntityModify.get_action( _('Edit'), "images/edit.png"), modal=FORMTYPE_MODAL, close=CLOSE_NO, params={'legal_entity': legal_entity.id}) self.add_component(btn)
def image(self): img_path = get_user_path("contacts", "Image_%s.jpg" % self.abstractcontact_ptr_id) if exists(img_path): img = readimage_to_base64(img_path) else: img = readimage_to_base64(join(dirname(__file__), "static", 'lucterios.contacts', "images", "NoImage.png")) return img.decode('ascii')
def saving(self, xfer): if 'filename' in xfer.request.FILES.keys(): tmp_file = xfer.request.FILES['filename'] file_path = get_user_path("documents", "document_%s" % six.text_type( self.item.id)) with open(file_path, "wb") as file_tmp: file_tmp.write(tmp_file.read()) # write the tmp file
def _docs(self): doc_mdl = apps.get_model("documents", "Document") doc_mdl.objects.all().delete() self.doc_list = {} cur = self.old_db.open() cur.execute( "SELECT id, nom, description, categorie, modificateur, createur, dateModification, dateCreation FROM org_lucterios_documents_document" ) for docid, doc_name, doc_description, doc_folder, doc_modifier, doc_creator, doc_datemod, doc_datecreat in cur.fetchall( ): self.print_debug("=> Document %s", (doc_name, )) self.doc_list[docid] = doc_mdl.objects.create( name=doc_name, description=doc_description, date_modification=doc_datemod, date_creation=doc_datecreat) if doc_folder is not None: self.doc_list[docid].folder = self.folder_list[doc_folder] self.doc_list[docid].modifier = self.user_list[doc_modifier] self.doc_list[docid].creator = self.user_list[doc_creator] self.doc_list[docid].save() new_filename = get_user_path( "documents", "document_%s" % six.text_type(self.doc_list[docid].id)) old_filename = join(self.old_db.tmp_path, "usr", "org_lucterios_documents", "document%d" % docid) if isfile(old_filename): copyfile(old_filename, new_filename) else: self.print_info("*** Document '%s' not found ***", doc_name) mknod(new_filename)
def saving(self, xfer): if 'filename' in xfer.request.FILES.keys(): tmp_file = xfer.request.FILES['filename'] file_path = get_user_path( "documents", "document_%s" % six.text_type(self.item.id)) with open(file_path, "wb") as file_tmp: file_tmp.write(tmp_file.read()) # write the tmp file
def import_files(self, dir_to_import, viewers, modifiers, user): for filename in listdir(dir_to_import): complet_path = join(dir_to_import, filename) if isfile(complet_path): new_doc = Document(name=filename, description=filename, folder_id=self.id) if user.is_authenticated(): new_doc.creator = LucteriosUser.objects.get(pk=user.id) new_doc.modifier = new_doc.creator new_doc.date_modification = timezone.now() new_doc.date_creation = new_doc.date_modification new_doc.save() file_path = get_user_path( "documents", "document_%s" % six.text_type(new_doc.id)) with ZipFile(file_path, 'w') as zip_ref: zip_ref.write(complet_path, arcname=filename) elif isdir(complet_path): new_folder = Folder.objects.create(name=filename, description=filename, parent_id=self.id) new_folder.viewer = viewers new_folder.modifier = modifiers new_folder.save() new_folder.import_files(complet_path, viewers, modifiers, user)
def delete(self): file_paths = [] docs = self.document_set.all() for doc in docs: file_paths.append( get_user_path("documents", "document_%s" % six.text_type(doc.id))) LucteriosModel.delete(self) for file_path in file_paths: if isfile(file_path): unlink(file_path)
def content(self): from _io import BytesIO file_path = get_user_path("documents", "document_%s" % six.text_type(self.id)) if isfile(file_path): with ZipFile(file_path, 'r') as zip_ref: file_list = zip_ref.namelist() if len(file_list) > 0: doc_file = zip_ref.open(file_list[0]) return BytesIO(doc_file.read()) return BytesIO(b'')
def create_doc(user, with_folder=True): root_path = join(dirname(__file__), 'static', 'lucterios.documents', 'images') current_date = timezone.now() new_doc1 = DocumentContainer.objects.create(name='doc1.png', description="doc 1", creator=user, date_creation=current_date, date_modification=current_date) if with_folder: new_doc1.parent = FolderContainer.objects.get(id=2) new_doc1.save() with ZipFile(get_user_path('documents', 'container_%d' % new_doc1.id), 'w') as zip_ref: zip_ref.write(join(root_path, 'documentFind.png'), arcname='doc1.png') new_doc2 = DocumentContainer.objects.create(name='doc2.png', description="doc 2", creator=user, date_creation=current_date, date_modification=current_date) if with_folder: new_doc2.parent = FolderContainer.objects.get(id=1) new_doc2.save() with ZipFile(get_user_path('documents', 'container_%d' % new_doc2.id), 'w') as zip_ref: zip_ref.write(join(root_path, 'documentConf.png'), arcname='doc2.png') new_doc3 = DocumentContainer.objects.create(name='doc3.png', description="doc 3", creator=user, date_creation=current_date, date_modification=current_date) if with_folder: new_doc3.parent = FolderContainer.objects.get(id=4) new_doc3.save() with ZipFile(get_user_path('documents', 'container_%d' % new_doc3.id), 'w') as zip_ref: zip_ref.write(join(root_path, 'document.png'), arcname='doc3.png') return current_date
def saving(self, xfer): uploadlogo = xfer.getparam('uploadlogo') if uploadlogo is not None: tmp_file = save_from_base64(uploadlogo) with open(tmp_file, "rb") as image_tmp: image = open_image_resize(image_tmp, 100, 100) image = image.convert("RGB") img_path = get_user_path("contacts", "Image_%s.jpg" % self.item.abstractcontact_ptr_id) with open(img_path, "wb") as image_file: image.save(image_file, 'JPEG', quality=90) unlink(tmp_file) LucteriosEditor.saving(self, xfer) self.item.set_custom_values(xfer.params)
def test_delete(self): current_date = create_doc(self.factory.user) self.factory.xfer = DocumentList() self.calljson('/lucterios.documents/documentList', {"current_folder": "2"}, False) self.assert_observer('core.custom', 'lucterios.documents', 'documentList') self.assert_count_equal('document', 1) self.assert_json_equal('', "document/@0/id", "1") self.assert_json_equal('', "document/@0/name", "doc1.png") self.assert_json_equal('', "document/@0/description", "doc 1") self.assert_json_equal('', "document/@0/date_modification", six.text_type(current_date)) self.assert_json_equal('', "document/@0/modifier", "---") self.assertTrue(exists(get_user_path('documents', 'document_1'))) self.factory.xfer = DocumentDel() self.calljson('/lucterios.documents/documentDel', {"document": "1", "CONFIRME": 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentDel') self.factory.xfer = DocumentList() self.calljson('/lucterios.documents/documentList', {"current_folder": "2"}, False) self.assert_count_equal('document', 0) self.assertFalse(exists(get_user_path('documents', 'document_1')))
def test_logo(self): self.assertFalse(exists(get_user_path('contacts', 'Image_1.jpg'))) logo_path = join(dirname(__file__), "static", 'lucterios.contacts', 'images', 'ourDetails.png') logo_stream = "image.jpg;" + \ readimage_to_base64(logo_path, False).decode("utf-8") self.factory.xfer = CurrentStructureAddModify() self.calljson('/lucterios.contacts/currentStructureAddModify', {"SAVE": 'YES', "uploadlogo": logo_stream}, False) self.assert_observer('core.acknowledge', 'lucterios.contacts', 'currentStructureAddModify') self.assertTrue(exists(get_user_path('contacts', 'Image_1.jpg'))) self.factory.xfer = CurrentStructure() self.calljson('/lucterios.contacts/currentStructure', {}, False) self.assert_observer('core.custom', 'lucterios.contacts', 'currentStructure') self.assert_json_equal('IMAGE', 'logoimg', "data:image/*;base64,/9j/4AAQSkZJRg", True) self.factory.xfer = CurrentStructurePrint() self.calljson('/lucterios.contacts/currentStructurePrint', {}, False) self.assert_observer('core.print', 'lucterios.contacts', 'currentStructurePrint') pdf_value = b64decode(six.text_type(self.response_json['print']['content'])) self.assertEqual(pdf_value[:4], "%PDF".encode('ascii', 'ignore'))
def saving(self, xfer): uploadlogo = xfer.getparam('uploadlogo') if uploadlogo is not None: tmp_file = save_from_base64(uploadlogo) with open(tmp_file, "rb") as image_tmp: image = open_image_resize(image_tmp, 100, 100) image = image.convert("RGB") img_path = get_user_path("contacts", "Image_%s.jpg" % self.item.abstractcontact_ptr_id) with open(img_path, "wb") as image_file: image.save(image_file, 'JPEG', quality=90) unlink(tmp_file) LucteriosEditor.saving(self, xfer) self.item.set_custom_values(xfer.params)
def test_delete(self): current_date = self.create_doc() self.factory.xfer = DocumentList() self.call('/lucterios.documents/documentList', {"current_folder": "2"}, False) self.assert_observer('core.custom', 'lucterios.documents', 'documentList', 1) self.assert_count_equal('COMPONENTS/GRID[@name="document"]/RECORD', 1) self.assert_xml_equal( 'COMPONENTS/GRID[@name="document"]/RECORD[@id="1"]/VALUE[@name="name"]', "doc1.png") self.assert_xml_equal( 'COMPONENTS/GRID[@name="document"]/RECORD[@id="1"]/VALUE[@name="description"]', "doc 1") self.assert_xml_equal( 'COMPONENTS/GRID[@name="document"]/RECORD[@id="1"]/VALUE[@name="date_modification"]', formats.date_format(current_date, "DATETIME_FORMAT")) self.assert_xml_equal( 'COMPONENTS/GRID[@name="document"]/RECORD[@id="1"]/VALUE[@name="modifier"]', "---") self.assertTrue(exists(get_user_path('documents', 'document_1'))) self.factory.xfer = DocumentDel() self.call('/lucterios.documents/documentDel', { "document": "1", "CONFIRME": 'YES' }, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentDel') self.factory.xfer = DocumentList() self.call('/lucterios.documents/documentList', {"current_folder": "2"}, False) self.assert_count_equal('COMPONENTS/GRID[@name="document"]/RECORD', 0) self.assertFalse(exists(get_user_path('documents', 'document_1')))
def extract_files(self, dir_to_extract): for doc in Document.objects.filter(folder_id=self.id): file_path = get_user_path("documents", "document_%s" % six.text_type(doc.id)) if isfile(file_path): try: with ZipFile(file_path, 'r') as zip_ref: zip_ref.extractall(dir_to_extract) except BadZipFile: pass for folder in Folder.objects.filter(parent_id=self.id): new_dir_to_extract = join(dir_to_extract, folder.name) if not isdir(new_dir_to_extract): makedirs(new_dir_to_extract) folder.extract_files(new_dir_to_extract)
def assign_abstact_values(new_legalentity, abstract_id): from lucterios.framework.filetools import get_user_path super_cur = self.old_db.open(True) super_cur.execute( "SELECT * FROM org_lucterios_contacts_personneAbstraite WHERE id=%d" % abstract_id) abst_val = super_cur.fetchone() for old_field, new_field in [['adresse', 'address'], ['codePostal', 'postal_code'], ['ville', 'city'], [ 'pays', 'country'], ['fixe', 'tel1'], ['portable', 'tel2'], ['mail', 'email'], ['commentaire', 'comment']]: if abst_val[old_field] is not None: setattr(new_legalentity, new_field, abst_val[old_field]) old_image_filename = join( self.old_db.tmp_path, "usr", "org_lucterios_contacts", "Image_%d.jpg" % abstract_id) if isfile(old_image_filename): new_image_filename = get_user_path( "contacts", "Image_%s.jpg" % new_legalentity.abstractcontact_ptr_id) copyfile(old_image_filename, new_image_filename)
def show(self, xfer): LucteriosEditor.show(self, xfer) obj_addr = xfer.get_components('address') xfer.tab = obj_addr.tab new_col = obj_addr.col xfer.move(obj_addr.tab, 1, 0) img_path = get_user_path("contacts", "Image_%s.jpg" % self.item.abstractcontact_ptr_id) img = XferCompImage('logoimg') if exists(img_path): img.type = 'jpg' img.set_value(readimage_to_base64(img_path)) else: img.set_value(get_icon_path("lucterios.contacts/images/NoImage.png")) img.set_location(new_col, obj_addr.row, 1, 6) xfer.add_component(img) if WrapAction.is_permission(xfer.request, 'contacts.add_abstractcontact'): if (len(self.item.__class__.get_select_contact_type(False)) > 0): btn = XferCompButton('btn_promote') btn.set_location(new_col + 1, xfer.get_max_row() + 1, 4) btn.set_action(xfer.request, ObjectPromote.get_action(_('Promote'), "images/config.png"), modal=FORMTYPE_MODAL, close=CLOSE_YES, params={'modelname': xfer.model.get_long_name(), 'field_id': xfer.field_id}) xfer.add_component(btn) signal_and_lock.Signal.call_signal("show_contact", self.item, xfer)
def current_image(self, icon_path=None): img_path = get_user_path("contacts", "Image_1.jpg") if exists(img_path): return readimage_to_base64(img_path) else: return self.icon_path(icon_path)
def test_create_pad(self): port = find_free_port() settings.ETHERPAD = {'url': 'http://localhost:%d' % port, 'apikey': 'abc123'} self.factory.xfer = ContainerList() self.calljson('/lucterios.documents/containerList', {}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerList') self.assert_count_equal('', 10) self.assert_count_equal('container', 2) self.assert_count_equal("#container/actions", 3) TestMoke.content_type = "application/json" httpd = TestHTTPServer(('localhost', port)) httpd.start() try: TestMoke.initial(['{"code": 0, "message":"ok", "data": null}']) self.factory.xfer = ContainerList() self.calljson('/lucterios.documents/containerList', {}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerList') self.assert_count_equal('container', 2) self.assert_count_equal("#container/actions", 4) self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 1) self.assertEqual(TestMoke.requests[0], ('/api/1.2.13/checkToken', {'apikey': ['abc123']})) TestMoke.initial(['{"code": 0, "message":"ok", "data": null}']) self.factory.xfer = ContainerAddFile() self.calljson('/lucterios.documents/containerAddFile', {}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerAddFile') self.assert_count_equal('', 5) self.assert_select_equal('docext', {'txt': 'txt', 'html': 'html'}) # nb=2 self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 1) self.assertEqual(TestMoke.requests[0], ('/api/1.2.13/checkToken', {'apikey': ['abc123']})) self.factory.xfer = ContainerAddFile() self.calljson('/lucterios.documents/containerAddFile', {'name': 'aa.bb.cc', 'docext': 'txt', 'description': 'blablabla', 'CONFIRME': 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'containerAddFile') self.assertEqual(self.response_json['action']['id'], "lucterios.documents/documentEditor") self.assertEqual(len(self.response_json['action']['params']), 1) self.assertEqual(self.response_json['action']['params']['document'], 5) TestMoke.initial(['{"code":4,"message":"no or wrong API Key","data":null}']) self.factory.xfer = ContainerList() self.calljson('/lucterios.documents/containerList', {}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerList') self.assert_count_equal('container', 3) self.assert_count_equal("#container/actions", 3) self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 1) self.assertEqual(TestMoke.requests[0], ('/api/1.2.13/checkToken', {'apikey': ['abc123']})) new_doc = DocumentContainer.objects.get(id=5) self.assertEqual(new_doc.parent_id, None) self.assertEqual(new_doc.name, 'aa.bb.txt') self.assertEqual(new_doc.description, "blablabla") self.assertTrue(exists(get_user_path('documents', 'container_5'))) TestMoke.initial(['{"code": 0, "message":"ok", "data": null}', '{"code": 0, "message":"ok", "data": null}']) editor = new_doc.get_doc_editors() editor.root_url = 'http://testserver' self.assertEqual(editor.docid, 'edb6edba72798a8d49e95bf2f107ea10-5') json_test = editor.load_export('txt').decode('utf-8') self.assertEqual(json_test, '{"code": 0, "message":"ok", "data": null}') self.assertEqual(json.loads(json_test), {'code': 0, 'message': "ok", 'data': None}) self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 2) self.assertEqual(TestMoke.requests[0], ('/api/1.2.13/checkToken', {'apikey': ['abc123']})) self.assertEqual(TestMoke.requests[1], '/p/edb6edba72798a8d49e95bf2f107ea10-5/export/txt') TestMoke.initial(['{"code": 0, "message":"ok", "data": null}', '{"code": 0, "message":"ok", "data": {"padIDs":[]}}', '{"code": 0, "message":"ok", "data": null}']) self.factory.xfer = DocumentEditor() self.calljson('/lucterios.documents/documentEditor', {'document': 5}, False) self.assert_observer('core.custom', 'lucterios.documents', 'documentEditor') self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 3) self.assertEqual(TestMoke.requests[0], ('/api/1.2.13/checkToken', {'apikey': ['abc123']})) self.assertEqual(TestMoke.requests[1], ('/api/1.2.13/listAllPads', {'apikey': ['abc123']})) self.assertEqual(TestMoke.requests[2], ('/api/1.2.13/createPad', {'apikey': ['abc123'], 'padName': ['aa.bb.txt'], 'padID': ['edb6edba72798a8d49e95bf2f107ea10-5']})) TestMoke.initial(['{"code": 0, "message":"ok", "data": null}', '{"code": 0, "message":"ok", "data": {"text":"blablabla"}}']) self.factory.xfer = DocumentEditor() self.calljson('/lucterios.documents/documentEditor', {'document': 5, 'SAVE': 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentEditor') self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 2) self.assertEqual(TestMoke.requests[0], ('/api/1.2.13/checkToken', {'apikey': ['abc123']})) self.assertEqual(TestMoke.requests[1], ('/api/1.2.13/getText', {'apikey': ['abc123'], 'padID': ['edb6edba72798a8d49e95bf2f107ea10-5']})) TestMoke.initial(['{"code": 0, "message":"ok", "data": null}', '{"code": 0, "message":"ok", "data": {"padIDs":["edb6edba72798a8d49e95bf2f107ea10-5"]}}', '{"code": 0, "message":"ok", "data": null}']) self.factory.xfer = DocumentEditor() self.calljson('/lucterios.documents/documentEditor', {'document': 5, 'CLOSE': 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentEditor') self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 3) self.assertEqual(TestMoke.requests[0], ('/api/1.2.13/checkToken', {'apikey': ['abc123']})) self.assertEqual(TestMoke.requests[1], ('/api/1.2.13/listAllPads', {'apikey': ['abc123']})) self.assertEqual(TestMoke.requests[2], ('/api/1.2.13/deletePad', {'apikey': ['abc123'], 'padID': ['edb6edba72798a8d49e95bf2f107ea10-5']})) finally: httpd.shutdown()
def delete(self): file_path = get_user_path("documents", "document_%s" % six.text_type(self.id)) LucteriosModel.delete(self) if isfile(file_path): unlink(file_path)
def test_create_calc(self): port = find_free_port() settings.ETHERCALC = {'url': 'http://localhost:%d' % port} self.factory.xfer = ContainerList() self.calljson('/lucterios.documents/containerList', {}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerList') self.assert_count_equal('', 10) self.assert_count_equal('container', 2) self.assert_count_equal("#container/actions", 3) TestMoke.content_type = "application/json" httpd = TestHTTPServer(('localhost', port)) httpd.start() try: TestMoke.initial(['']) self.factory.xfer = ContainerList() self.calljson('/lucterios.documents/containerList', {}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerList') self.assert_count_equal('container', 2) self.assert_count_equal("#container/actions", 4) self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 1) self.assertEqual(TestMoke.requests[0], '/') TestMoke.initial(['']) self.factory.xfer = ContainerAddFile() self.calljson('/lucterios.documents/containerAddFile', {}, False) self.assert_observer('core.custom', 'lucterios.documents', 'containerAddFile') self.assert_count_equal('', 5) self.assert_select_equal('docext', {'csv': 'csv', 'xlsx': 'xlsx', 'ods': 'ods'}) # nb=3 self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 1) self.assertEqual(TestMoke.requests[0], '/') self.factory.xfer = ContainerAddFile() self.calljson('/lucterios.documents/containerAddFile', {'name': 'aa.bb.cc', 'docext': 'csv', 'description': 'blablabla', 'CONFIRME': 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'containerAddFile') self.assertEqual(self.response_json['action']['id'], "lucterios.documents/documentEditor") self.assertEqual(len(self.response_json['action']['params']), 1) self.assertEqual(self.response_json['action']['params']['document'], 5) new_doc = DocumentContainer.objects.get(id=5) self.assertEqual(new_doc.parent_id, None) self.assertEqual(new_doc.name, 'aa.bb.csv') self.assertEqual(new_doc.description, "blablabla") self.assertTrue(exists(get_user_path('documents', 'container_5'))) TestMoke.initial(['', 'false', '']) self.factory.xfer = DocumentEditor() self.calljson('/lucterios.documents/documentEditor', {'document': 5}, False) self.assert_observer('core.custom', 'lucterios.documents', 'documentEditor') self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 3) self.assertEqual(TestMoke.requests[0], '/') self.assertEqual(TestMoke.requests[1], '/_exists/edb6edba72798a8d49e95bf2f107ea10-5') self.assertEqual(TestMoke.requests[2], ('PUT', '/_/edb6edba72798a8d49e95bf2f107ea10-5', {})) TestMoke.initial(['', 'true', '']) self.factory.xfer = DocumentEditor() self.calljson('/lucterios.documents/documentEditor', {'document': 5, 'SAVE': 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentEditor') self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 3) self.assertEqual(TestMoke.requests[0], '/') self.assertEqual(TestMoke.requests[1], '/_exists/edb6edba72798a8d49e95bf2f107ea10-5') self.assertEqual(TestMoke.requests[2], '/edb6edba72798a8d49e95bf2f107ea10-5.csv') TestMoke.initial(['', 'true', '']) self.factory.xfer = DocumentEditor() self.calljson('/lucterios.documents/documentEditor', {'document': 5, 'CLOSE': 'YES'}, False) self.assert_observer('core.acknowledge', 'lucterios.documents', 'documentEditor') self.assertEqual(TestMoke.results, []) self.assertEqual(len(TestMoke.requests), 3) self.assertEqual(TestMoke.requests[0], '/') self.assertEqual(TestMoke.requests[1], '/_exists/edb6edba72798a8d49e95bf2f107ea10-5') self.assertEqual(TestMoke.requests[2], ('DELETE', '/_/edb6edba72798a8d49e95bf2f107ea10-5')) finally: httpd.shutdown()
def file_path(self): return get_user_path("documents", "container_%s" % six.text_type(self.id))