Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community!
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial

augustine makachemu
2,058 PointsI have errors from my completed social media app in python with flask
These are the errors I'm getting with my code.
If you need me to attach my code just tell me which files I need to attach. Thanks
Traceback (most recent call last):
File "app.py", line 7, in <module>
import forms
File "/home/treehouse/workspace/forms.py", line 6, in <module>
from models import User
File "/home/treehouse/workspace/models.py", line 86
def initialize():
^
SyntaxError: invalid syntax

Chris Freeman
Treehouse Moderator 68,389 PointsProtip: when the syntax error points to a seemingly correct line, the error is usually cause by the previous statement likely a missing closing paren or missing closing quote.

augustine makachemu
2,058 PointsHere's my models.py
import datetime
from flask.ext.bcrypt import generate_password_hash
from flask.ext.login import UserMixin
from peewee import *
DATABASE = SqliteDatabase('social.db')
class User(UserMixin, Model):
username = CharField(unique=True)
email = CharField(unique=True)
password = CharField(max_length=100)
joined_at = DateTimeField(default=datetime.datetime.now)
is_admin = BooleanField(default=False)
class Meta:
database = DATABASE
order_by = ('-joined_at',)
def get_posts(self):
return Post.select().where(Post.user == self)
def get_stream(self):
return Post.select().where(
(Post.user << self.following()) |
(Post.user == self)
)
def following(self):
"""The users that we are following."""
return (
User.select().join(
Relationship, on=Relationship.to_user
).where(
Relationship.from_user == self
)
)
def followers(self):
"""Get users following the current user"""
return (
User.select().join(
Relationship, on=Relationship.from_user
).where(
Relationship.to_user == self
)
)
@classmethod
def create_user(cls, username, email, password, admin=False):
try:
with DATABASE.transaction():
cls.create(
username=username,
email=email,
password=generate_password_hash(password),
is_admin=admin)
except IntegrityError:
raise ValueError("User already exists")
class Post(Model):
timestamp = DateTimeField(default=datetime.datetime.now)
user = ForeignKeyField(
rel_model=User,
related_name='posts'
)
content = TextField()
class Meta:
database = DATABASE
order_by = ('-timestamp',)
class Relationship(Model):
from_user = ForeignKeyField(User, related_name='relationships')
to_user = ForeignKeyField(User, related_name='related_to')
class Meta:
database = DATABASE
indexes = (
(('from_user', 'to_user'), True,
)
def initialize():
DATABASE.connect()
DATABASE.create_tables([User, Post, Relationship], safe=True)
DATABASE.close()
2 Answers

James J. McCombie
Python Web Development Techdegree Graduate 21,137 Pointsyou are missing a closing parentheses from index, just above the initialise function.

Chris Freeman
Treehouse Moderator 68,389 PointsThere is a closing paren missing:
class Meta:
database = DATABASE
indexes = (
(('from_user', 'to_user'), True,
)
James J. McCombie
Python Web Development Techdegree Graduate 21,137 PointsJames J. McCombie
Python Web Development Techdegree Graduate 21,137 Pointshello, going to need to see the models.py code to help more but...
check your indentation in and around the def initialize function, and look carefully at the code block above it, are you missing a closing parentheses for example? or is there a block that expects a statement?