Momentum logo
Team 14 Classroom

🐻 Full-text Search & File Upload 🐻

Posted on Sep 26th, 2022

Today’s Topics

  • Implementing search, including Postgres full-text search

🎯 Project due on Thursday afternoon

Please include a README in your project repo. The README should:

  • be written in Markdown
  • include your production application’s URL
  • have instructions for getting your application running locally, so that any developer could pull it down and run it. If your setup makes any assumptions about the environment (e.g., you have Python 3.10.2 installed locally), you should state them in the README.

Your README should include clear documentation for your API’s available endpoints.

👉 If your project meets minimum requirements today, HUZZAH! 🎉 That is awesome. You should be working on at least one additional or spicy feature.

👉 If your project does not yet meet minimum requirements, you should aim for meeting them by the end of the day Wednesday.

Requirements for QuestionBox, Back End

Note: Depending on how you’ve constructed your API, you might have separate endpoints for all of the below, or some of the functionality might be combined in a single endpoint (for instance, if you nested answers in the question detail endpoint, like questions/4/answers). What matters is that you have endpoints that your front-end team can use to perform all the necessary actions they need and that are documented in your README.

⚠️ Be sure to test that you have implemented permissions-checking correctly for these endpoints. For example, your API should not allow a user who is not the question-asker to mark an answer as accepted.

  • token login, logout, and register (i.e., create a new user)
  • list all questions
  • list answers to a specific question
  • show details about a specific question
  • create a question (if authenticated)
  • create an answer to a question (if authenticated and if you are not the question asker)
  • mark an answer as “accepted” (if you are the question asker)
  • list of own questions for an authenticated user
  • list of own answers for an authenticated user
  • star/favorite questions or answers
  • unstar/unfavorite questions or answers
  • search questions (possibly both questions and answers)
  • A README with endpoints documented

Requirements for Social Cards, Back End

⚠️ Be sure to test that you have implemented permissions-checking correctly for these endpoints. For example, your API should not allow a user who is not the creator of a card to update a card.

  • token login, logout, and register (i.e., create a new user)
  • list all cards
  • list all cards you’ve created (you, the authenticated user)
  • list all cards created by a user that you follow
  • show details of one card
  • create a new card (if authenticated)
  • update a card (if authenticated and it’s your card)
  • delete a card (if authenticated and it’s your card)
  • follow another user (if authenticated)
  • unfollow another user (if authenticated)
  • list all the users you follow
  • A README with endpoints documented

Handling requests that include attached files

Using Insomnia

  • Select the right HTTP method for your endpoint.
  • Choose binary file attachment from the body menu (where you normally put the body of a request)
  • Set headers on the Headers tab (this example assumes an image file in jpeg format, named profile-photo.jpg):

    Content-Type: image/jpeg
    Content-Disposition: attachment; filename=profile-photo.jpg
    

For more information on the values for Content-Type:

CORS for file upload

Assuming you are using django-cors-headers, you’ll need to add the following to settings.py to allow the request headers necessary for file attachments:

# in settings.py

from corsheaders.defaults import default_headers

CORS_ALLOW_HEADERS = list(default_headers) + [
    'content-disposition',
]

📖 Read | 📺 Watch | 🎧 Listen

File Upload

🔖 Resources

📁 Creating a README

@action decorator in ViewSets

File uploads

👾 Code & Notes

Back to home