Skip to content

Commit 181b7c7

Browse files
committed
more tutorial doc work
1 parent dffb7ca commit 181b7c7

File tree

13 files changed

+269
-14
lines changed

13 files changed

+269
-14
lines changed

django_typer/examples/tutorial/step1/closepoll.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ def handle(
1818
try:
1919
poll = Poll.objects.get(pk=poll_id)
2020
except Poll.DoesNotExist:
21-
raise CommandError('Poll "%s" does not exist' % poll_id)
21+
raise CommandError(f'Poll "{poll_id}" does not exist')
2222

2323
poll.opened = False
2424
poll.save()
2525

2626
self.stdout.write(
27-
self.style.SUCCESS('Successfully closed poll "%s"' % poll_id)
27+
self.style.SUCCESS(f'Successfully closed poll "{poll.id}"')
2828
)
2929

3030
if delete:

django_typer/examples/tutorial/step2/closepoll.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ def handle(
3030
try:
3131
poll = Poll.objects.get(pk=poll_id)
3232
except Poll.DoesNotExist:
33-
raise CommandError('Poll "%s" does not exist' % poll_id)
33+
raise CommandError(f'Poll "{poll_id}" does not exist')
3434

3535
poll.opened = False
3636
poll.save()
3737

3838
self.stdout.write(
39-
self.style.SUCCESS('Successfully closed poll "%s"' % poll_id)
39+
self.style.SUCCESS(f'Successfully closed poll "{poll.id}"')
4040
)
4141

4242
if delete:

django_typer/examples/tutorial/step3/closepoll.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def get_poll_from_id(poll: t.Union[str, Poll]) -> Poll:
2020
try:
2121
return Poll.objects.get(pk=int(poll))
2222
except Poll.DoesNotExist:
23-
raise CommandError('Poll "%s" does not exist' % poll)
23+
raise CommandError(f'Poll "{poll}" does not exist')
2424

2525

2626
class Command(TyperCommand):
@@ -53,7 +53,7 @@ def handle(
5353
poll.opened = False
5454
poll.save()
5555
self.stdout.write(
56-
self.style.SUCCESS('Successfully closed poll "%s"' % poll.question_text)
56+
self.style.SUCCESS(f'Successfully closed poll "{poll.id}"')
5757
)
5858
if delete:
5959
poll.delete()
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import sys
2+
import typing as t
3+
4+
if sys.version_info < (3, 9):
5+
from typing_extensions import Annotated
6+
else:
7+
from typing import Annotated
8+
9+
from django.utils.translation import gettext_lazy as _
10+
from typer import Argument, Option
11+
12+
from django_typer import TyperCommand
13+
from django_typer.parsers import ModelObjectParser
14+
from django_typer.tests.polls.models import Question as Poll
15+
16+
17+
class Command(TyperCommand):
18+
19+
def handle(
20+
self,
21+
polls: Annotated[
22+
t.List[Poll],
23+
Argument(
24+
parser=ModelObjectParser(Poll),
25+
help=_("The database IDs of the poll(s) to close."),
26+
),
27+
],
28+
delete: Annotated[
29+
bool,
30+
Option(
31+
"--delete", # we can also get rid of that unnecessary --no-delete flag
32+
help=_("Delete poll instead of closing it."),
33+
),
34+
] = False,
35+
):
36+
"""
37+
Closes the specified poll for voting.
38+
39+
40+
As mentioned in the last section, helps can also
41+
be set in the docstring
42+
"""
43+
for poll in polls:
44+
poll.opened = False
45+
poll.save()
46+
self.stdout.write(
47+
self.style.SUCCESS(f'Successfully closed poll "{poll.id}"')
48+
)
49+
if delete:
50+
poll.delete()
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import sys
2+
import typing as t
3+
4+
if sys.version_info < (3, 9):
5+
from typing_extensions import Annotated
6+
else:
7+
from typing import Annotated
8+
9+
from django.utils.translation import gettext_lazy as _
10+
from typer import Argument, Option
11+
12+
from django_typer import TyperCommand
13+
from django_typer.completers import ModelObjectCompleter
14+
from django_typer.parsers import ModelObjectParser
15+
from django_typer.tests.polls.models import Question as Poll
16+
17+
18+
class Command(TyperCommand):
19+
20+
def handle(
21+
self,
22+
polls: Annotated[
23+
t.List[Poll],
24+
Argument(
25+
parser=ModelObjectParser(Poll),
26+
shell_complete=ModelObjectCompleter(Poll, help_field="question_text"),
27+
help=_("The database IDs of the poll(s) to close."),
28+
),
29+
],
30+
delete: Annotated[
31+
bool,
32+
Option(
33+
"--delete", # we can also get rid of that unnecessary --no-delete flag
34+
help=_("Delete poll instead of closing it."),
35+
),
36+
] = False,
37+
):
38+
"""
39+
Closes the specified poll for voting.
40+
41+
42+
As mentioned in the last section, helps can also
43+
be set in the docstring
44+
"""
45+
for poll in polls:
46+
poll.opened = False
47+
poll.save()
48+
self.stdout.write(
49+
self.style.SUCCESS(f'Successfully closed poll "{poll.id}"')
50+
)
51+
if delete:
52+
poll.delete()
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import sys
2+
import typing as t
3+
4+
if sys.version_info < (3, 9):
5+
from typing_extensions import Annotated
6+
else:
7+
from typing import Annotated
8+
9+
from django.utils.translation import gettext_lazy as _
10+
from typer import Argument, Option
11+
12+
from django_typer import TyperCommand, model_parser_completer
13+
from django_typer.tests.polls.models import Question as Poll
14+
15+
16+
class Command(TyperCommand):
17+
help = _("Closes the specified poll for voting.")
18+
19+
def handle(
20+
self,
21+
polls: Annotated[
22+
t.List[Poll],
23+
Argument(
24+
**model_parser_completer(Poll, help_field="question_text"),
25+
help=_("The database IDs of the poll(s) to close."),
26+
),
27+
],
28+
delete: Annotated[
29+
bool,
30+
Option(help=_("Delete poll instead of closing it.")),
31+
] = False,
32+
):
33+
for poll in polls:
34+
poll.opened = False
35+
poll.save()
36+
self.stdout.write(
37+
self.style.SUCCESS(f'Successfully closed poll "{poll.id}"')
38+
)
39+
if delete:
40+
poll.delete()

django_typer/tests/polls/management/commands/closepoll.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def handle(
2929
poll.opened = False
3030
poll.save()
3131
self.stdout.write(
32-
self.style.SUCCESS(f'Successfully closed poll "{{ poll.id }}"')
32+
self.style.SUCCESS(f'Successfully closed poll "{poll.id}"')
3333
)
3434
if delete:
3535
poll.delete()
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../examples/tutorial/step4/closepoll.py
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../examples/tutorial/step5/closepoll.py
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../examples/tutorial/step6/closepoll.py

0 commit comments

Comments
 (0)