/cat_charity_fund

πŸˆπŸ’Έ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π€ΠΎΠ½Π΄ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΈΠΊΠ°ΠΌ QRKot

Primary LanguagePython

repo size py version

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ QRKot

alt text

ОглавлСниС

ОписаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π‘Π»Π°Π³ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΠ½Π΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΠΎΡ‚ΠΈΠΊΠΎΠ² QRKot

Π€ΠΎΠ½Π΄ собираСт поТСртвования Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹:

  • Π½Π° мСдицинскоС обслуТиваниС Π½ΡƒΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ хвостатых
  • Π½Π° обустройство ΠΊΠΎΡˆΠ°Ρ‡ΡŒΠ΅ΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΈΠΈ Π² ΠΏΠΎΠ΄Π²Π°Π»Π΅
  • Π½Π° ΠΊΠΎΡ€ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΌΡΡ Π±Π΅Π· попСчСния кошкам
  • Π½Π° Π»ΡŽΠ±Ρ‹Π΅ Ρ†Π΅Π»ΠΈ, связанныС с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠΎΡˆΠ°Ρ‡ΡŒΠ΅ΠΉ популяции

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹

Π’ Π€ΠΎΠ½Π΄Π΅ QRKot ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ нСсколько Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, описаниС ΠΈ сумма, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ планируСтся ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ нуТная сумма собрана β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ закрываСтся.

ΠŸΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ First In, First Out: всС поТСртвования ΠΈΠ΄ΡƒΡ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Ρ€Π°Π½ΡŒΡˆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ…; ΠΊΠΎΠ³Π΄Π° этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ сумму ΠΈ закрываСтся β€” поТСртвования Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠŸΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΡ

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ. ΠŸΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅: ΠΎΠ½ΠΈ вносятся Π² Ρ„ΠΎΠ½Π΄, Π° Π½Π΅ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. КаТдоС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ автоматичСски добавляСтся Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Ρ‘ Π½Π΅ Π½Π°Π±Ρ€Π°Π» Π½ΡƒΠΆΠ½ΡƒΡŽ сумму. Если ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ большС Π½ΡƒΠΆΠ½ΠΎΠΉ суммы ΠΈΠ»ΠΈ ΠΆΠ΅ Π² Π€ΠΎΠ½Π΄Π΅ Π½Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² β€” ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ дСньги ΠΆΠ΄ΡƒΡ‚ открытия ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° всС нСинвСстированныС поТСртвования автоматичСски Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ

Π¦Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ администраторами сайта.

Π›ΡŽΠ±ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ список всСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ ΡƒΠΆΠ΅ внСсСнныС суммы. Π­Ρ‚ΠΎ касаСтся всСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² β€” ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ…, ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ….

ЗарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ поТСртвования ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ список своих ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ.

ВСхничСскиС подробности ΠΈ трСбования

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° openapi.json:

Для просмотра Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π½Π° сайт https://redocly.github.io/redoc/. Π’Π²Π΅Ρ€Ρ…Ρƒ страницы Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠ° Upload a file, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π΅Ρ‘ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ скачанный Ρ„Π°ΠΉΠ». БпСцификация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° отобразится Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ReDoc. Π’Π°Ρˆ API Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ всСм трСбованиям Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ:

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ
  • ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹
  • ΠŸΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΡ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ

ВсС настройки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ Π±Ρ€ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π³ΠΎΠ²ΠΎΡ€ΠΎΠΊ.

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ FastAPI Users.
  • Π’ настройках ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ транспорт Bearer ΠΈ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ JWT.
  • ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Ρ€ΠΎΡƒΡ‚Π΅Ρ€Ρ‹ Auth Router, Register Router, Users Router.
  • НС измСняйтС Π±Π°Π·ΠΎΠ²ΡƒΡŽ модСль ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • УстановитС Π·Π°ΠΏΡ€Π΅Ρ‚ Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ: эндпоинт удалСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° deprecated.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ модСль CharityProject, свяТитС Π΅Ρ‘ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ charityproject Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ charityproject:

  • id β€” ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡
  • name β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ строковоС ΠΏΠΎΠ»Π΅; допустимая Π΄Π»ΠΈΠ½Π° строки β€” ΠΎΡ‚ 1 Π΄ΠΎ 100 символов Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ
  • description β€” описаниС, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, тСкст; Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа
  • full_amount β€” трСбуСмая сумма, цСлочислСнноС ΠΏΠΎΠ»Π΅; большС 0
  • invested_amount β€” внСсённая сумма, цСлочислСнноС ΠΏΠΎΠ»Π΅; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” 0
  • fully_invested β€” Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π° Ρ‚ΠΎ, собрана Π»ΠΈ нуТная сумма для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π·Π°ΠΊΡ€Ρ‹Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚); Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” False
  • create_date β€” Π΄Π°Ρ‚Π° создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΈΠΏ DateTime, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ автоматичСски Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
  • close_date β€” Π΄Π°Ρ‚Π° закрытия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, DateTime, проставляСтся автоматичСски Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Π±ΠΎΡ€Π° Π½ΡƒΠΆΠ½ΠΎΠΉ суммы

ΠŸΡ€Π°Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Π›ΡŽΠ±ΠΎΠΉ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ сайта (Π² Ρ‚ΠΎΠΌ числС Π½Π΅Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список всСх ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²

Π‘ΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚:

  • ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹
  • ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ внСсСно срСдств
  • ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ описаниС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ для Π½Π΅Π³ΠΎ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ сумму (Π½ΠΎ Π½Π΅ мСньшС ΡƒΠΆΠ΅ внСсённой)

Никто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· API Ρ€Π°Π·ΠΌΠ΅Ρ€ внСсённых срСдств, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄Π°Ρ‚Ρ‹ создания ΠΈ закрытия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²

Π›ΡŽΠ±ΠΎΠΉ зарСгистрированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅

ЗарСгистрированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свои поТСртвования, ΠΏΡ€ΠΈ этом Π΅ΠΌΡƒ выводится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ поля:

  • id
  • comment
  • full_amount
  • create_date

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, инвСстировано ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ нСдоступна

Π‘ΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ список всСх ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΏΡ€ΠΈ этом Π΅ΠΌΡƒ выводятся всС поля ΠΌΠΎΠ΄Π΅Π»ΠΈ

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ поТСртвования Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈΠΊΡ‚ΠΎ

ΠŸΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΡ

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ модСль Donation, свяТитС Π΅Ρ‘ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ donation Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ donation:

  • id β€” ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡
  • user_id β€” id ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, сдСлавшСго ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅. Foreign Key Π½Π° ΠΏΠΎΠ»Π΅ user.id ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
  • comment β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ тСкстовоС ΠΏΠΎΠ»Π΅
  • full_amount β€” сумма поТСртвования, цСлочислСнноС ΠΏΠΎΠ»Π΅; большС 0
  • invested_amount β€” сумма ΠΈΠ· поТСртвования, которая распрСдСлСна ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ; Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎ 0
  • fully_invested β€” Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ Π½Π° Ρ‚ΠΎ, всС Π»ΠΈ дСньги ΠΈΠ· поТСртвования Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚ΠΎΡ‚ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚; ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π²Π½ΠΎ False
  • create_date β€” Π΄Π°Ρ‚Π° поТСртвования; Ρ‚ΠΈΠΏ DateTime; добавляСтся автоматичСски Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ поступлСния поТСртвования
  • close_date β€” Π΄Π°Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° вся сумма поТСртвования Π±Ρ‹Π»Π° распрСдСлСна ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ; Ρ‚ΠΈΠΏ DateTime; добавляСтся автоматичСски Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния условия

ΠŸΡ€ΠΎΡ†Π΅ΡΡ «инвСстирования»

Π‘Ρ€Π°Π·Ρƒ послС создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ поТСртвования Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ процСсс «инвСстирования» (ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ invested_amount ΠΊΠ°ΠΊ Π² поТСртвованиях, Ρ‚Π°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, установка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ fully_invested ΠΈ close_date, ΠΏΡ€ΠΈ нСобходимости).

Если создан Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° Π² Π±Π°Π·Π΅ Π±Ρ‹Π»ΠΈ «свободныС» (Π½Π΅ распрСдСлённыС ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ) суммы ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ β€” ΠΎΠ½ΠΈ автоматичСски Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½Π²Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΈ Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ API эти суммы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹. Π’ΠΎ ΠΆΠ΅ касаСтся ΠΈ создания ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ: Ссли Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ поТСртвования Π΅ΡΡ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, эти поТСртвования Π΄ΠΎΠ»ΠΆΠ½Ρ‹ автоматичСски Π·Π°Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΈΡ… счСта.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π·Π° инвСстированиС, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ нСпосрСдствСнно ΠΈΠ· API-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° созданиС ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π‘Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ инвСстирования (ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρƒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ) ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ app/services/ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ с подходящим ΠΈΠΌΠ΅Π½Π΅ΠΌ.

Π’Π°ΠΆΠ½ΠΎ! Π’ процСссС инвСстиций Π²Ρ‹Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ commit() Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² самом ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° всС расчёты ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹. Π­Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Ρ‹ Π·Π° Π΅Π΄ΠΈΠ½ΡƒΡŽ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, ΠΈ Π½ΠΈΠΊΡ‚ΠΎ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ состояниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ΡΡ подсчёты для инвСстиции.

ПослС ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ refresh() Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈΠ· эндпоинта, ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π° ошибка sqlalchemy.exc.MissingGreenlet: greenlet_spawn has not been called; can't call await_only() here

β¬†οΈΠžΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎ Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

  • ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ git clone https://github.com/foxygen-d/cat_charity_fund.git
  • созданиС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ окруТСния python3 -m venv venv
  • запуск Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ окруТСния . venv/bin/activate
  • ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости ΠΈΠ· Ρ„Π°ΠΉΠ»Π° requirements.txt pip install -r requirements.txt
  • запуск сСрвСра uvicorn main:app
  • запуск сСрвСра с автоматичСским рСстартом uvicorn main:app --reload
  • ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Alembic Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ alembic init --template async alembic
  • созданиС Ρ„Π°ΠΉΠ»Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ alembic revision --autogenerate -m "migration name"
  • ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ alembic upgrade head
  • ΠΎΡ‚ΠΌΠ΅Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΉ alembic downgrade
  • запуск тСстов pytest

БистСмныС трСбования

  • Python 3.7
  • FastAPI 0.7.0
  • Works on Linux, Windows, macOS