-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathfake.py
More file actions
128 lines (112 loc) · 3.95 KB
/
Copy pathfake.py
File metadata and controls
128 lines (112 loc) · 3.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import os
import pathlib
import random
import sys
from datetime import timedelta
import django
from django.apps import apps
from django.utils import timezone
import faker
# 将项目根目录添加到 Python 的模块搜索路径中
back = os.path.dirname
BASE_DIR = back(back(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
if __name__ == "__main__":
# 启动 django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blogproject.settings.local")
django.setup()
from blog.models import Category, Post, Tag
from comments.models import Comment
from django.contrib.auth.models import User
# 取消实时索引生成,因为本地运行 fake 脚本时可能并未启动 Elasticsearch 服务。
apps.get_app_config("haystack").signal_processor.teardown()
print("clean database")
Post.objects.all().delete()
Category.objects.all().delete()
Tag.objects.all().delete()
Comment.objects.all().delete()
User.objects.all().delete()
print("create a blog user")
user = User.objects.create_superuser("admin", "admin@hellogithub.com", "admin")
category_list = ["Python学习笔记", "开源项目", "工具资源", "程序员生活感悟", "test category"]
tag_list = [
"django",
"Python",
"Pipenv",
"Docker",
"Nginx",
"Elasticsearch",
"Gunicorn",
"Supervisor",
"test tag",
]
a_year_ago = timezone.now() - timedelta(days=365)
print("create categories and tags")
for cate in category_list:
Category.objects.create(name=cate)
for tag in tag_list:
Tag.objects.create(name=tag)
print("create a markdown sample post")
Post.objects.create(
title="Markdown 与代码高亮测试",
body=pathlib.Path(BASE_DIR)
.joinpath("scripts", "md.sample")
.read_text(encoding="utf-8"),
category=Category.objects.create(name="Markdown测试"),
author=user,
)
print("create some faked posts published within the past year")
fake = faker.Faker() # English
for _ in range(100):
tags = Tag.objects.order_by("?")
tag1 = tags.first()
tag2 = tags.last()
cate = Category.objects.order_by("?").first()
created_time = fake.date_time_between(
start_date="-1y", end_date="now", tzinfo=timezone.get_current_timezone()
)
post = Post.objects.create(
title=fake.sentence().rstrip("."),
body="\n\n".join(fake.paragraphs(10)),
created_time=created_time,
category=cate,
author=user,
)
post.tags.add(tag1, tag2)
post.save()
fake = faker.Faker("zh_CN")
for _ in range(100): # Chinese
tags = Tag.objects.order_by("?")
tag1 = tags.first()
tag2 = tags.last()
cate = Category.objects.order_by("?").first()
created_time = fake.date_time_between(
start_date="-1y", end_date="now", tzinfo=timezone.get_current_timezone()
)
post = Post.objects.create(
title=fake.sentence().rstrip("."),
body="\n\n".join(fake.paragraphs(10)),
created_time=created_time,
category=cate,
author=user,
)
post.tags.add(tag1, tag2)
post.save()
print("create some comments")
for post in Post.objects.all()[:20]:
post_created_time = post.created_time
delta_in_days = "-" + str((timezone.now() - post_created_time).days) + "d"
for _ in range(random.randrange(3, 15)):
Comment.objects.create(
name=fake.name(),
email=fake.email(),
url=fake.uri(),
text=fake.paragraph(),
created_time=fake.date_time_between(
start_date=delta_in_days,
end_date="now",
tzinfo=timezone.get_current_timezone(),
),
post=post,
)
print("done!")