Exemplo n.º 1
0
    def test_get(self):
        person, created = Person.from_dict({"name": "Hans Müller"})
        self.assertTrue(created)
        self.assertIsNotNone(person.id)

        person2 = Person.get("Hans Müller")
        self.assertIsNotNone(person2)
        self.assertEquals(person, person2)

        person2 = Person.get("müller")
        self.assertIsNotNone(person2)
        self.assertEquals(person, person2)

        person2 = Person.get(str(person.id))
        self.assertIsNotNone(person2)
        self.assertEquals(person, person2)
Exemplo n.º 2
0
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,
            )