Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Submission #6

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
Prev Previous commit
Next Next commit
Get classes route and small changes
abbudao committed Oct 31, 2019
commit cbd5a89f0a6163f457fc38a3735c89f3e2c314a9
2 changes: 1 addition & 1 deletion app.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
runtime: python37

env:flex
entrypoint: uwsgi --http-socket :8080 --wsgi-file sharpener-admin.py --callable app

liveness_check:
6 changes: 5 additions & 1 deletion models/classroom.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from datetime import datetime
from .base import Base
from sqlalchemy import Column, String, Integer, ForeignKey, UniqueConstraint
from sqlalchemy import (Column, String, Integer, ForeignKey, UniqueConstraint,
DateTime)
from sqlalchemy.orm import relationship


@@ -11,6 +13,8 @@ class Class(Base):
owner = Column(String, ForeignKey('users.email'))
name = Column(String, nullable=False)
invite_token = Column(String, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow,
nullable=False)
students = relationship("User", secondary='users_classes_association',
back_populates="classes")
tracks = relationship("Track", secondary='tracks_classes_association',
2 changes: 1 addition & 1 deletion models/user.py
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ class User(Base):
email = Column(String, primary_key=True)
name = Column(String, nullable=False)
nickname = Column(String, nullable=False)
is_teacher = Column(Boolean, default=False)
is_teacher = Column(Boolean, default=True)
token = Column(String, nullable=False)
github_token = Column(String, nullable=False)
avatar_url = Column(String, nullable=True)
2 changes: 0 additions & 2 deletions server/static/js/2.c9ea58f0.chunk.js

This file was deleted.

1 change: 0 additions & 1 deletion server/static/js/2.c9ea58f0.chunk.js.map

This file was deleted.

2 changes: 2 additions & 0 deletions server/static/js/2.ee937940.chunk.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions server/static/js/2.ee937940.chunk.js.map

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions server/static/js/main.5369998a.chunk.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions server/static/js/main.5369998a.chunk.js.map

Large diffs are not rendered by default.

2 changes: 0 additions & 2 deletions server/static/js/main.d13865bf.chunk.js

This file was deleted.

1 change: 0 additions & 1 deletion server/static/js/main.d13865bf.chunk.js.map

This file was deleted.

8 changes: 4 additions & 4 deletions server/templates/index.html
Original file line number Diff line number Diff line change
@@ -19,14 +19,14 @@
};
</script>
{% if debug %}

<script src="http://localhost:3000/static/js/bundle.js""></script>
<script src="http://localhost:3000/static/js/main.chunk.js"></script>
<script src="http://localhost:3000/static/js/0.chunk.js"></script>
{% else %}
<script type="text/javascript" src="static/js/runtime-main.dee1a991.js"></script>
<script type="text/javascript" src="/static/js/2.c9ea58f0.chunk.js"></script>
<script type="text/javascript" src="static/js/main.d13865bf.chunk.js"></script>
<script type="text/javascript" src="static/js/2.ee937940.chunk.js"></script>
<script type="text/javascript" src="static/js/main.5369998a.chunk.js"></script>
{% endif %}
</body>
</html>
</html>
31 changes: 30 additions & 1 deletion server/views/classes.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,41 @@
from flask import Blueprint, Response
from flask import Blueprint, Response, jsonify
from models import Class, Track
from server.utils import extract_token, extract_user, handle_validation_error
from uuid import uuid4


def extract_class_data(classroom):
return {
"name": classroom.name,
"created_at": classroom.created_at.isoformat(),
"members": len(classroom.students),
"tracks": len(classroom.tracks_classes),
}


def create_classes_blueprint(db_session, request):
classes = Blueprint('classes', __name__)

@classes.route('/', methods=['GET'])
@handle_validation_error
def get_all_classes():
token = extract_token(request)
user = extract_user(db_session, token)

if not user.is_teacher:
return Response(response="Only teachers can see classes.",
status=403)

existing_classes = db_session\
.query(Class)\
.filter_by(owner=user.email)\
.all()

classes_data = [extract_class_data(classroom)
for classroom in existing_classes]

return jsonify(classes_data)

@classes.route('/<name>', methods=['POST'])
@handle_validation_error
def create_class(name):