MCPcopy Index your code
hub / github.com/hunvreus/devpush / user_settings

Function user_settings

app/routers/user.py:42–426  ·  view source on GitHub ↗
(
    request: Request,
    fragment: str | None = Query(None),
    current_user: User = Depends(get_current_user),
    db: AsyncSession = Depends(get_db),
    settings: Settings = Depends(get_settings),
    queue: ArqRedis = Depends(get_queue),
    redis=Depends(get_redis_client),
)

Source from the content-addressed store, hash-verified

40
41@router.api_route("/settings", methods=["GET", "POST"], name="user_settings")
42async def user_settings(
43 request: Request,
44 fragment: str | None = Query(None),
45 current_user: User = Depends(get_current_user),
46 db: AsyncSession = Depends(get_db),
47 settings: Settings = Depends(get_settings),
48 queue: ArqRedis = Depends(get_queue),
49 redis=Depends(get_redis_client),
50):
51 # Delete
52 delete_form: Any = await UserDeleteForm.from_formdata(request, user=current_user)
53 if request.method == "POST" and fragment == "danger":
54 if await delete_form.validate_on_submit():
55 try:
56 # User is marked as deleted, actual cleanup is delegated to a job
57 current_user.status = "deleted"
58 await db.commit()
59
60 await queue.enqueue_job("delete_user", current_user.id)
61
62 flash(
63 request,
64 _(
65 'User "%(name)s" has been marked for deletion.',
66 name=current_user.name,
67 ),
68 "success",
69 )
70
71 return RedirectResponse("/auth/logout", status_code=303)
72 except Exception as e:
73 await db.rollback()
74 logger.error(
75 f'Error marking user "{current_user.username}" as deleted: {str(e)}'
76 )
77 flash(
78 request,
79 _("An error occurred while marking the user for deletion."),
80 "error",
81 )
82
83 return RedirectResponse(
84 url=str(request.url_for("user_settings")) + "#danger",
85 status_code=303,
86 )
87
88 # General
89 general_form: Any = await UserGeneralForm.from_formdata(
90 request,
91 data={"name": current_user.name, "username": current_user.username},
92 db=db,
93 user=current_user,
94 )
95
96 if fragment == "general":
97 if request.method == "POST" and await general_form.validate_on_submit():
98 # Name
99 current_user.name = general_form.name.data or ""

Callers

nothing calls this directly

Calls 6

flashFunction · 0.90
utc_nowFunction · 0.90
TemplateResponseFunction · 0.90
send_emailFunction · 0.90
rollbackMethod · 0.80
_Function · 0.50

Tested by

no test coverage detected