Coder Social home page Coder Social logo

server-side-python-curriculum's Introduction

Python and Django Course

Welcome to the Python and Django course for Nashville Software School.

Installations

Run the appropriate script in one of your terminal windows. Location is irrelevant.

Mac Users

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/nashville-software-school/course-bash-scripts/main/python/mac-installs.sh)"

Windows and Linux Users

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/nashville-software-school/course-bash-scripts/main/python/wsl-ubuntu-installs.sh)"

After running this script, if you do not see a message that says "Success! You are ready to start coding with Python", reach out to an instructor. To make sure the script was actually successful run python3 --version if you do not get a number that starts with 3, close the terminal, reopen and try that command again. If the version still does not start with 3, let an instructor know.

Python Formatting

  1. If you don't have VS Code open, open it now. It doesn't matter for which project.
  2. Open the Command Palette and search for "settings"
  3. Choose Preferences: Open User Settings
  4. Type "python format" in the settings search
  5. In the Editor: Default Formatter section, choose Black Formatter as the default formatter.
  6. You can close the settings window now.

server-side-python-curriculum's People

Contributors

bryannilsen avatar cashewrose avatar cheor avatar christinaashworth avatar deanomatic avatar dmart331 avatar gregkorte avatar hannahhall avatar heymonicakay avatar jisie avatar joeshep avatar joshdbarton avatar kimberly-bird avatar krnorris65 avatar leahhoefling avatar leigharobinson avatar maxwellcoriell avatar megducharme avatar mgjeffries avatar misspeperr avatar mitchellblom avatar mrerin avatar rdbishop19 avatar samphillips1879 avatar scott47 avatar stevebrownlee avatar subtleco avatar taylorperkins avatar trobinson1097 avatar tylerghilliard94 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

server-side-python-curriculum's Issues

User can complete an order

Feature Description

  • Customer Manager Class
    • Should be able to complete the customer's order if customer is ready to buy.
    • Should be able to choose payment type to pay for the order.
Your order total is $149.54. Ready to purchase
(Y/N) >

# If user entered Y
Choose a payment option
1. Create New Payment Type
2. Amex
3. Visa
>

Your order is complete! Press any key to return to main menu.

# If user entered N, display the main menu again

Guidance

  • When user selects option to complete an order, query the database and calculate the total price of all products on the actice customer's order.
  • Show the order total and prompt user to enter 'Y' or 'N'
  • If the user enters 'N', present the user with the main menu
  • If the user enter 'Y', query the database and retrieve all payment type records for the active customer
  • If there are no payment types in the system for the active customer, display a prompt to the user with that information and wait for a key press. When the user presses a key, present the main menu so that they can enter a payment type.
  • If there are payment types, display a numbered list of all possible payment types
  • Wait for user to enter in a number
  • Then take the id of the selected payment type and update the appropriate row in the Order table with that value.
  • Present the user with the main menu

Requirement to Fulfill

Refer to the project requirements before filling out this section.

Notes

Create a Book 2 self-assessment

Create a self-assessment that itemizes the learning objectives for the book and provides instructions for a task that allows the students to implement each objective. Instructors will review vocabulary with the student when completed.

Create guidance documentation for starting first sprint

Starting your first sprint

Setup

Create Project Board

  1. Go to the team's Github repository page.
  2. Click on the Projects tab at the top.
  3. At the top of this view, you will see a green Link a project button, click on the down arrow on the right of it.
  4. Choose New project then click on the green button.
  5. Choose Board from the types on the window that appears.
  6. Enter in the name of your product in the Project Name input field at the top.
  7. Click green Create project at the bottom.
  8. Add a Backlog column and move it to be the first column on the left.

Adding Tickets to Backlog

Tell your instructors in your team Slack channel that you are ready for the tickets to be migrated and they will begin that process. Once you are notified that the tickets have been added to your client side repository, you will add them to the Backlog column.

  1. Go to your project board.
  2. At the bottom of the Backlog column click on the plus sign.
  3. Click on the plus sign again.
  4. Choose Add item from repository
  5. In the window that appears, make sure your team repository is chosen in the dropdown.
  6. All tickets that you have created will appear in a list.
  7. Choose them all
  8. Click the green Add selected items button at the bottom.

Adding Story Points

  1. Watch the Planning Poker video to learn about the process of weighing your tickets for Sprint Planning
  2. You will be adding story points to the first 15 tickets only.
  3. Use the planningpokeronline.com site to start weighing your tickets.
  4. When you are done with the first 15 tickets, discuss how many you feel you can complete in the Sprint.
  5. Move those to the To Do column

Strategies for Completing Tickets

  1. Refer to the Rules of Engagement document to make sure you understand what the Definition of Done is.
  2. You should not have more than 2 tickets in the In Progress column at any time that are assigned to a single teammate.
  3. When you move a ticket into the In Progress column, you are taking ownership of the entire feature. Start with building the API portion of the feature, then build the client components needed.
  4. Once all work on both the API and client is approved, you can consider the coding of the feature done and you can move the ticket to the Done column.

Pull Requests

Creating

Everyone on the team should read the Writing A Great Pull Request Description article before creating any pull requests. When you are ready to create a pull request for your branch follow the guidance in that article.

If any changes any required on a pull request, you do not close the PR. Make the change on the branch, and simply git push the branch again to update the existing PR.

Reviewing

Reviewing code is just as important as writing code.

  1. The team should discuss the strategy you want to follow as a team for balancing writing code and reviewing code. Each teammate should have a goal of reviewing as may PRs as they have created.
  2. When you are reviewing a teammate's code are are performing two important tasks:
    1. Follow the teammate's testing steps and verify it works as intended.
    2. Review teammate’s code for clarity, following conventions, advice on improvements.
  3. Watch the How to Review a Pull Request in GitHub the RIGHT Way video for how professionals review a teammate's PR on Github.

Create guidance document for completing a sprint

Ending Your Sprint

  1. Conduct a retrospective ceremony on the last day of the sprint. Read the three sections of the Introduction to the Sprint Retrospective article for an overview.
  2. On the Thursday of the Sprint, the team should commit on a specific start and stop time for the retro on Friday.
  3. Your retro board will be another Github project that you can attach to your repository. Add the following columns.
    1. Start Doing
    2. Stop Doing
    3. Keep Doing
    4. Kudos
  4. Tickets should be team focused and not “I” focused
  5. Stop and Start columns should highlight specific, actionable items that your team can work on during the next sprint.

Expected Outcome of Question?

Hey! In the chinook challenge..... So, Pete Brumm had sent me a SQL challenge after mock interviews and in his challenge he included the expected output for each question which was very helpful. Would you ever consider adding that to this challenge?

C52 Ch6 Repo Link missing

Ch6 C52 Repo

Link to ch6 repo for C52 branch is missing.

To reproduce:

While on master branch for Book 2 - Level Up.

Open

Book2 - Ch6: Exposing Game Types/Viewsets and Serializers

Select

Switch from master branch to cohort-52 branch.

Chapter 13 typo

In the code block that's provided, within the UPDATE, 'breed' is used in the SET statement, and 'species' is used in the tuple at the end.

Create a Book 1 self-assessment

Create a self-assessment that itemizes the learning objectives for the book and provides instructions for a task that allows the students to implement each objective. Instructors will review vocabulary with the student when completed.

Add Packages Chapter

Before the multiple inheritance chapter, add in a chapter showing Packages/ file structure / modularizing

Book 2, C-54, Interlude: Django Rest Views and Serializer, missing image for workflow

At the bottom of the page, there is the following:

============================================
Workflow Visualization
Any time that you want to allow a client to access data in your database, there's a series of steps you have to follow in order to accomplish it with Django REST Framework. So far we’ve only written the models. The next step is writing the views and serializers so the client can access and manipulate the data in the database.

(./images/django-rest-process.png)

I expected to be presented with an image depicting the workflow of steps. Alas, there wasn't one.

Book 1 - Chapter 13 - CC_Methods

Issues:

  1. Llama __init__ call accepts a shift argument but it is never assigned.
from datetime import date

class Llama:

    def __init__(self, name, species, shift, food):
        self.name = name
        self.species = species
        self.date_added = date.today()
        self.walking = True
        self.food = food

    def feed(self):
      print(f'{self.name} was fed {self.food} on {date.today().strftime("%m/%d/%Y")}')
  1. The feed method prints output itself, but in the usage example, you have used print(miss_fuzz.feed()) which outputs an extraneous None to the terminal.
miss_fuzz = Llama("Miss Fuzz", "domestic llama", "morning", "Llama Chow" )

print(miss_fuzz.feed())

Current Output:

Miss Fuzz was fed Llama Chow on 10/19/2020
None

Expected Output:

Miss Fuzz was fed Llama Chow on 10/19/2020

Suggested Changes:

Issue 1

Add a self.shift = shift property to the Llama class in the example.

Issue 2 - Solution A

Return the string itself and let the user do what they want with it (including printing the string):

In llama.py

def feed(self):
    return f'{self.name} was fed {self.food} on {date.today().strftime("%m/%d/%Y")}'

In animals.py

miss_fuzz = Llama("Miss Fuzz", "domestic llama", "morning", "Llama Chow")

print(miss_fuzz.feed())

Issue 2 - Solution B

Force the printing of the string (i.e. we simply call the method from animals.py and don't try to print anything there):

In llama.py

def feed(self):
    print(f'{self.name} was fed {self.food} on {date.today().strftime("%m/%d/%Y")}')

In animals.py

miss_fuzz = Llama("Miss Fuzz", "domestic llama", "morning", "Llama Chow")

miss_fuzz.feed()

Create guidance document for continuing sprints

Continuing Your Sprints

After your first Sprint, follow the guidance in this document for all future sprints for a project.

Sprint Planning

  1. Move all remaining items in the To Do column to the Backlog and ensure the tickets remain in priority order.
  2. Take what you learned in your first sprint and adjust the weight of any tickets that are still in progress, and any ones that you want to commit to for the current sprint. Limit yourself to the next 15 tickets that haven’t been weighed.
  3. With each sprint, you will likely increase your capacity by a small amount. Use your completed tickets as your base, and make a commitment for the next sprint that is a few points higher. Over time, development teams realize what their true level of efficiency is and will try to hit that number every time.
  4. Move your newly re-pointed tickets into the To Do column until you have reached the number of points you feel you can achieve. Do them in priority order.

Action Items

  1. Review the Start/Stop columns from your retro board and discuss strategies to ensure your team’s success in implementing them this sprint.

Book 2, C-54, LevelUp Ch. 14, Server Side, incorrect path

Server Side > Model Properties > path given for adding custom property to Event model class is incorrectly written as:
levelup/levelupclient/models/event.py making it look like one would do this in the client. The correct path should direct the student to the server side.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.