Skip to content

Commit

Permalink
Merge pull request #76 from DjangoChinaOrg/feature/update-config
Browse files Browse the repository at this point in the history
Feature/update config
  • Loading branch information
yangxg committed Jul 20, 2018
2 parents a5c1d39 + e11dfeb commit 2717940
Show file tree
Hide file tree
Showing 10 changed files with 107 additions and 25 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,5 @@ venv.bak/
.idea/
media/

# vscode
.vscode/
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ install:
env:
- DJANGO_SETTINGS_MODULE=config.settings.local

services:
- mysql

script:
- python runtests.py
- coverage run --source=. manage.py test
Expand Down
34 changes: 30 additions & 4 deletions config/settings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
BASE_DIR = os.path.dirname(os.path.dirname(
os.path.dirname(os.path.abspath(__file__))))

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
Expand Down Expand Up @@ -104,13 +105,37 @@
# Database
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases

# sqlite3
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'dev.sqlite3'),
# }
# }

# mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'dev.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
'OPTIONS': {
'autocommit': True,
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4',
},
'TEST': {
'NAME': 'django_test',
'CHARSET': 'utf8',
'COLLATION': 'utf8_general_ci',
}
}
}


# Password validation
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators

Expand Down Expand Up @@ -217,7 +242,8 @@
EMAIL_USE_SSL = True
EMAIL_USE_LOCALTIME = True
EMAIL_HOST_USER = 'djangostudyteam@163.com'
EMAIL_HOST_PASSWORD = os.environ.get('DJANGO_EMAIL_HOST_PASSWORD', 'fallback_value')
EMAIL_HOST_PASSWORD = os.environ.get(
'DJANGO_EMAIL_HOST_PASSWORD', 'fallback_value')

# Default email address to use for various automated correspondence from the site manager(s).
DEFAULT_FROM_EMAIL = 'Django中文社区 <%s>' % EMAIL_HOST_USER
Expand Down
19 changes: 18 additions & 1 deletion config/settings/local.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,25 @@
import os

from .common import *

DEBUG = True
ALLOWED_HOSTS = ['*']

SECRET_KEY = 't3l=1)%^^ftao(2_@p^j_$ordrl4rg4-0z1w@^gvvi64balvbx'

# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'


# envs
MYSQL_HOST = os.getenv('MYSQL_HOST', '127.0.0.1')
MYSQL_DB_NAME = os.getenv('MYSQL_MYSQL_DB_NAME', 'django')
MYSQL_DB_USER = os.getenv('MYSQL_MYSQL_DB_USER', 'root')
MYSQL_PASSWORD = os.getenv('MYSQL_PASSWORD', '')

# database
DATABASES['default'].update(
{'HOST': MYSQL_HOST,
'NAME': MYSQL_DB_NAME,
'USER': MYSQL_DB_USER,
'PASSWORD': MYSQL_PASSWORD,
})
22 changes: 22 additions & 0 deletions config/settings/production.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import os

from .common import *

DEBUG = False
ALLOWED_HOSTS = ['*']

SECRET_KEY = ''

# envs
MYSQL_HOST = os.getenv('MYSQL_PASSWORD')
MYSQL_DB_NAME = os.getenv('MYSQL_MYSQL_DB_NAME')
MYSQL_DB_USER = os.getenv('MYSQL_MYSQL_DB_USER')
MYSQL_PASSWORD = os.getenv('MYSQL_PASSWORD')

# database
DATABASES['default'].update(
{'HOST': MYSQL_HOST,
'NAME': MYSQL_DB_NAME,
'USER': MYSQL_DB_USER,
'PASSWORD': MYSQL_PASSWORD,
})
2 changes: 1 addition & 1 deletion config/wsgi.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production")

application = get_wsgi_application()
4 changes: 3 additions & 1 deletion manage.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import sys

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
env = os.environ.get('DJANGO_ENV', 'local')
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
"config.settings.{}".format(env))
try:
from django.core.management import execute_from_command_line
except ImportError:
Expand Down
12 changes: 7 additions & 5 deletions posts/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ def test_popular_post_list(self):
self.client.login(username='admin', password='admin123')
data = {
"content_type": 19,
"object_pk": "1",
"object_pk": self.post.id,
"site": 1,
"comment": "回复测试",
"parent": None
Expand All @@ -263,11 +263,13 @@ def test_popular_post_list(self):
url = reverse('post-popular')
response = self.client.get(url, format='json')
request = response.wsgi_request
author = Post.objects.get(id=1).author
author = Post.objects.get(id=self.post.id).author
self.assertEqual(response.data['count'], 1)
self.assertEqual(response.data['data'][0]['author']['id'], author.id)
self.assertEqual(response.data['data'][0]['author']['mugshot'], request.build_absolute_uri(author.mugshot.url))
self.assertEqual(response.data['data'][0]['author']['nickname'], author.nickname)
self.assertEqual(response.data['data'][0]['author']['mugshot'],
request.build_absolute_uri(author.mugshot.url))
self.assertEqual(response.data['data'][0]
['author']['nickname'], author.nickname)

def test_post_detail(self):
"""
Expand All @@ -281,7 +283,7 @@ def test_post_detail(self):
url = reverse('post-detail', kwargs={'pk': self.post.pk})
response = self.client.get(url, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['id'], 1)
self.assertEqual(response.data['id'], self.post.id)
self.assertEqual(response.data['title'], 'this is a test')
self.assertEqual(response.data['body'], 'this is a test')
self.assertEqual(response.data['author']['nickname'], 'test')
Expand Down
1 change: 1 addition & 0 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ coreapi==2.3.3
factory-boy==2.10.0
django-model-utils==3.1.1
django-cors-headers==2.2.0
mysqlclient==1.3.12

git+https://github.com/zmrenwu/django-activity-stream.git@master#egg=django-activity-stream
33 changes: 20 additions & 13 deletions users/tests/unit_tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ def test_return_user_replies(self):
self.assertEqual(
response.data['data'],
FlatReplySerializer(
self.user.reply_comments.filter(is_public=True, is_removed=False),
self.user.reply_comments.filter(
is_public=True, is_removed=False),
many=True, context={'request': response.wsgi_request}
).data
)
Expand Down Expand Up @@ -220,11 +221,10 @@ def test_can_get_user_treasure(self):
url = reverse('user-balance', kwargs={'pk': self.user.id})
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertListEqual(list(response.data), [
{'coin_type': 0, 'amount__sum': 35},
{'coin_type': 1, 'amount__sum': 45},
{'coin_type': 2, 'amount__sum': 35},
])
balance_data = list(response.data)
self.assertTrue({'coin_type': 0, 'amount__sum': 35} in balance_data)
self.assertTrue({'coin_type': 1, 'amount__sum': 45} in balance_data)
self.assertTrue({'coin_type': 2, 'amount__sum': 35} in balance_data)


class EmailAddressViewSetTestCase(test.APITestCase):
Expand Down Expand Up @@ -267,7 +267,8 @@ def setUp(self):
def test_anonymous_user_cannot_operate_email(self):
list_url = reverse('email-list')
retrieve_url = reverse('email-detail', kwargs={'pk': self.email.id})
set_primary_url = reverse('email-set-primary', kwargs={'pk': self.email.id})
set_primary_url = reverse(
'email-set-primary', kwargs={'pk': self.email.id})
reverify_url = reverse('email-reverify', kwargs={'pk': self.email.id})

response = self.client.get(list_url)
Expand All @@ -284,7 +285,8 @@ def test_anonymous_user_cannot_operate_email(self):
})
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

response = self.client.delete(list_url, data={'email': self.user.email})
response = self.client.delete(
list_url, data={'email': self.user.email})
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)

response = self.client.post(set_primary_url)
Expand All @@ -305,7 +307,8 @@ def test_user_can_get_self_email(self):
)

def test_user_cannnot_get_others_email(self):
url = reverse('email-detail', kwargs={'pk': self.another_user_email.id})
url = reverse('email-detail',
kwargs={'pk': self.another_user_email.id})
self.client.login(username='test', password='test')
response = self.client.get(url)

Expand All @@ -324,7 +327,8 @@ def test_user_can_add_email(self):
self.assertEqual(self.user.emailaddress_set.count(), 3)

def test_user_cannot_set_unverified_email_to_primary(self):
url = reverse('email-set-primary', kwargs={'pk': self.unverified_email.id})
url = reverse('email-set-primary',
kwargs={'pk': self.unverified_email.id})
self.client.login(username='test', password='test')
response = self.client.post(url)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
Expand All @@ -336,13 +340,15 @@ def test_user_can_set_verified_email_to_primary(self):
verified=True,
primary=False
)
url = reverse('email-set-primary', kwargs={'pk': verified_unprimary_email.id})
url = reverse('email-set-primary',
kwargs={'pk': verified_unprimary_email.id})
self.client.login(username='test', password='test')
response = self.client.post(url)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)

# 新的 primary email 设置成功
new_primary_email = EmailAddress.objects.get(pk=verified_unprimary_email.id)
new_primary_email = EmailAddress.objects.get(
pk=verified_unprimary_email.id)
self.assertTrue(new_primary_email.primary)

# 旧的 primary email 被设置为非 primary email
Expand All @@ -364,7 +370,8 @@ def test_user_cannot_delete_primary_email(self):
self.assertEqual(self.user.emailaddress_set.count(), 2)

def test_user_cannot_delete_others_email(self):
url = reverse('email-detail', kwargs={'pk': self.another_user_email.id})
url = reverse('email-detail',
kwargs={'pk': self.another_user_email.id})
self.client.login(username='test', password='test')
response = self.client.delete(url)
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
Expand Down

0 comments on commit 2717940

Please sign in to comment.