From 3c68168f40a0c878bf97771b95582d6599dd1fe6 Mon Sep 17 00:00:00 2001
From: tmeissner
Date: Sat, 17 Nov 2018 22:16:09 +0100
Subject: [PATCH] Chapter 11: Generate fake users and posts (11c)
---
app/fake.py | 37 +++++++++++++++++++++
app/templates/user.html | 2 +-
requirements.txt => requirements/common.txt | 0
requirements/dev.txt | 3 ++
requirements/prod.txt | 1 +
5 files changed, 42 insertions(+), 1 deletion(-)
create mode 100644 app/fake.py
rename requirements.txt => requirements/common.txt (100%)
create mode 100644 requirements/dev.txt
create mode 100644 requirements/prod.txt
diff --git a/app/fake.py b/app/fake.py
new file mode 100644
index 0000000..bdf52fc
--- /dev/null
+++ b/app/fake.py
@@ -0,0 +1,37 @@
+from random import randint
+from sqlalchemy.exc import IntegrityError
+from faker import Faker
+from . import db
+from .models import User, Post
+
+
+def users(count=100):
+ fake = Faker()
+ i = 0
+ while i < count:
+ u = User(email=fake.email(),
+ username=fake.user_name(),
+ password='password',
+ confirmed=True,
+ name=fake.name(),
+ location=fake.city(),
+ about_me=fake.text(),
+ member_since=fake.past_date())
+ db.session.add(u)
+ try:
+ db.session.commit()
+ i += 1
+ except IntegrityError:
+ db.session.rollback()
+
+
+def posts(count=100):
+ fake = Faker()
+ user_count = User.query.count()
+ for i in range(count):
+ u = User.query.offset(randint(0, user_count - 1)).first()
+ p = Post(body=fake.text(),
+ timestamp=fake.past_date(),
+ author=u)
+ db.session.add(p)
+ db.session.commit()
diff --git a/app/templates/user.html b/app/templates/user.html
index c3b301f..472fdf6 100644
--- a/app/templates/user.html
+++ b/app/templates/user.html
@@ -26,7 +26,7 @@
Member since {{ moment(user.member_since).format('L') }}.
Last seen {{ moment(user.last_seen).fromNow() }}.
-
{{ user.posts.count() }} blog posts.
+ {{ user.posts.count() }} blog post{% if user.posts.count() > 1 %}s{% endif %}.
{% if user == current_user %}
diff --git a/requirements.txt b/requirements/common.txt
similarity index 100%
rename from requirements.txt
rename to requirements/common.txt
diff --git a/requirements/dev.txt b/requirements/dev.txt
new file mode 100644
index 0000000..24bc97e
--- /dev/null
+++ b/requirements/dev.txt
@@ -0,0 +1,3 @@
+-r common.txt
+Faker==1.0.0
+text-unidecode==1.2
diff --git a/requirements/prod.txt b/requirements/prod.txt
new file mode 100644
index 0000000..6624a30
--- /dev/null
+++ b/requirements/prod.txt
@@ -0,0 +1 @@
+-r common.txt