def test_search(self): person, created = Person.from_dict({"name": "Hans Müller"}) self.assertTrue(created) self.assertIsNotNone(person.id) person, created = Person.from_dict({"name": "Maria Müller"}) self.assertTrue(created) self.assertIsNotNone(person.id) person, created = Person.from_dict({"name": "Maria Vogel"}) self.assertTrue(created) self.assertIsNotNone(person.id) self.assertEquals(3, Person.objects.all().count()) self.assertEquals(2, Person.search("Maria").count()) self.assertEquals(2, Person.search("müller").count())
def _person(args: Namespace, file: TextIO = sys.stdout): person: Optional[Person] = None if args.subparser == "add": person, created = Person.from_dict( { "name": args.name, "links": [Link.get_or_create(link).to_dict() for link in args.link], } ) if created: stdout.write( _('Successfully added person "%(name)s" with id "%(pk)d".') % {"name": person.name, "pk": person.pk}, "=", file=file, ) person.print(file) else: stdout.write( _('The person "%(name)s" already exists with id "%(pk)d", aborting...') % {"name": person.name, "pk": person.pk}, "", file=file, ) elif args.subparser == "delete": person = Person.get(args.person) if person: person.delete() stdout.write( _('Successfully deleted person with id "%(name)s".') % {"name": person.name}, "", file=file, ) else: stdout.write(_("No person found."), "", file=file) elif args.subparser == "edit": person = Person.get(args.person) if person: person.edit(args.field, args.value) stdout.write( _('Successfully edited person "%(name)s" with id "%(pk)d".') % {"name": person.name, "pk": person.pk}, "", file=file, ) person.print(file) else: stdout.write(_("No person found."), "", file=file) elif args.subparser == "info": person = Person.get(args.person) if person: person.print(file) else: stdout.write(_("No person found."), "", file=file) elif args.subparser == "list": if args.search: persons = Person.search(args.search) else: persons = Person.objects.all() stdout.write( [ _("Id"), _("Name"), _("Number of books"), _("Number of editions"), _("Number of papers"), ], "=", [0.05, 0.4, 0.6, 0.8], file=file, ) for i, has_next in lookahead(persons): stdout.write( [i.id, i.name, i.books.count(), i.editions.count(), i.papers.count()], "_" if has_next else "=", [0.05, 0.4, 0.6, 0.8], file=file, )