Merge pull request #62 from tmslav/develop

Develop
This commit is contained in:
tmslav 2016-05-07 23:07:22 +02:00
commit b54c6eb99c
7 changed files with 117 additions and 51 deletions

View file

@ -43,6 +43,25 @@ After You have complited the task create a pull request and ask someone to revie
`read more about getting code from upstream here <https://help.github.com/articles/syncing-a-fork/>`_ `read more about getting code from upstream here <https://help.github.com/articles/syncing-a-fork/>`_
*merging your branch*
(**IMPORTANT**)
Before You make a pull request from Your forked branch to the ungleich make sure You did merge and resolve any conflicts You may find and that the application is running bug free.
Also You can run
``./manage test``
To merge upstream branch run this git commands.
``git fetch upstream``
``git checkout your_feature_branch``
``git merge remotes/upstream/develop``

View file

@ -30,7 +30,7 @@ dotenv.read_dotenv("{0}/.env".format(PROJECT_DIR))
SITE_ID = 1 SITE_ID = 1
APP_ROOT_ENDPOINT = "/" APP_ROOT_ENDPOINT = "/"
APPEND_SLASH=True APPEND_SLASH = True
LOGIN_URL = None LOGIN_URL = None
LOGOUT_URL = None LOGOUT_URL = None
@ -43,7 +43,7 @@ SECRET_KEY = env('DJANGO_SECRET_KEY')
# Application definition # Application definition
INSTALLED_APPS = ( INSTALLED_APPS = (
#1st migrate # 1st migrate
'membership', 'membership',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
@ -79,26 +79,26 @@ INSTALLED_APPS = (
'menus', # helper for model independent hierarchical website navigation 'menus', # helper for model independent hierarchical website navigation
'cmsplugin_filer_image', 'cmsplugin_filer_image',
#2nd migrate # 2nd migrate
# django-cms plugins # django-cms plugins
'djangocms_file', 'djangocms_file',
'djangocms_picture', 'djangocms_picture',
'djangocms_video', 'djangocms_video',
# 'djangocms_flash', # 'djangocms_flash',
# 'djangocms_googlemap', # 'djangocms_googlemap',
# 'djangocms_inherit', # 'djangocms_inherit',
# 'djangocms_link', # 'djangocms_link',
# 'djangocms_teaser', # 'djangocms_teaser',
'djangocms_page_meta', 'djangocms_page_meta',
'djangocms_text_ckeditor', 'djangocms_text_ckeditor',
'djangocms_admin_style', 'djangocms_admin_style',
'cmsplugin_filer_file', 'cmsplugin_filer_file',
'cmsplugin_filer_folder', 'cmsplugin_filer_folder',
'cmsplugin_filer_link', 'cmsplugin_filer_link',
# 'cmsplugin_filer_teaser', # 'cmsplugin_filer_teaser',
'cmsplugin_filer_video', 'cmsplugin_filer_video',
# #
#blog # blog
# versioning # versioning
'reversion', 'reversion',
# ungleich # ungleich
@ -128,18 +128,17 @@ MIDDLEWARE_CLASSES = (
ROOT_URLCONF = 'dynamicweb.urls' ROOT_URLCONF = 'dynamicweb.urls'
TEMPLATES = [ TEMPLATES = [
{ {
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(PROJECT_DIR,'cms_templates/'), 'DIRS': [os.path.join(PROJECT_DIR, 'cms_templates/'),
os.path.join(PROJECT_DIR,'cms_templates/djangocms_blog/'), os.path.join(PROJECT_DIR, 'cms_templates/djangocms_blog/'),
os.path.join(PROJECT_DIR,'membership'), os.path.join(PROJECT_DIR, 'membership'),
os.path.join(PROJECT_DIR,'ungleich/templates/djangocms_blog/'), os.path.join(PROJECT_DIR, 'ungleich/templates/djangocms_blog/'),
os.path.join(PROJECT_DIR,'ungleich/templates/cms/ungleichch'), os.path.join(PROJECT_DIR, 'ungleich/templates/cms/ungleichch'),
os.path.join(PROJECT_DIR,'ungleich/templates/ungleich') os.path.join(PROJECT_DIR, 'ungleich/templates/ungleich')
], ],
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': { 'OPTIONS': {
'context_processors': [ 'context_processors': [
@ -170,7 +169,7 @@ CMS_TEMPLATES = (
('letscowork.html', gettext('DG.CoWork')), ('letscowork.html', gettext('DG.CoWork')),
# ('detail.html', gettext('DG.Detail')), # ('detail.html', gettext('DG.Detail')),
('one_column.html', gettext('DG.OneColumn')), ('one_column.html', gettext('DG.OneColumn')),
#ungleich # ungleich
('blog_ungleich.html', gettext('Blog')), ('blog_ungleich.html', gettext('Blog')),
('page.html', gettext('Page')), ('page.html', gettext('Page')),
) )
@ -204,8 +203,8 @@ LANGUAGES = (
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'en-us'
LOCALE_PATHS = [ LOCALE_PATHS = [
os.path.join(PROJECT_DIR,'digitalglarus/locale'), os.path.join(PROJECT_DIR, 'digitalglarus/locale'),
] ]
CMS_PLACEHOLDER_CONF = { CMS_PLACEHOLDER_CONF = {
@ -332,9 +331,9 @@ STATICFILES_FINDERS = (
'compressor.finders.CompressorFinder', 'compressor.finders.CompressorFinder',
) )
#COMPRESS_PRECOMPILERS = ( # COMPRESS_PRECOMPILERS = (
# ('text/less', 'lesscpy {infile}'), # ('text/less', 'lesscpy {infile}'),
#) # )
THUMBNAIL_PROCESSORS = ( THUMBNAIL_PROCESSORS = (
'easy_thumbnails.processors.colorspace', 'easy_thumbnails.processors.colorspace',
@ -446,14 +445,15 @@ AUTH_USER_MODEL = 'membership.CustomUser'
# PAYMENT # PAYMENT
STRIPE_API_PUBLIC_KEY = 'pk_test_QqBZ50Am8KOxaAlOxbcm9Psl' # used in frontend to call from user browser
STRIPE_API_PRIVATE_KEY = 'sk_test_dqAmbKAij12QCGfkYZ3poGt2' # used in backend payment
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services" STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
# EMAIL MESSAGES # EMAIL MESSAGES
REGISTRATION_MESSAGE = {'subject': "Validation mail", REGISTRATION_MESSAGE = {'subject': "Validation mail",
'message': 'Please validate Your account under this link http://localhost:8000/en-us/validate/{}', 'message': 'Thank You for registering for account on Digital Glarus.\nPlease verify Your account under following link http://{host}/en-us/digitalglarus/login/validate/{slug}',
'from': 'test@test.com'} }
STRIPE_API_PRIVATE_KEY = env('STRIPE_API_PRIVATE_KEY')
STRIPE_API_PUBLIC_KEY = env('STRIPE_API_PUBLIC_KEY')
DEBUG = True DEBUG = True
@ -461,5 +461,3 @@ if DEBUG:
from .local import * from .local import *
else: else:
from .prod import * from .prod import *
#dont migrate test
# SOUTH_TESTS_MIGRATE = False

View file

@ -1,15 +1,9 @@
from .base import * from .base import *
REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='dynamicweb-development.ungleich.ch',slug='{slug}')
ALLOWED_HOSTS = [ ALLOWED_HOSTS = [
"*" "*"
] ]
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': 'app.db',
# }
# }
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
CACHES = { CACHES = {

View file

@ -8,6 +8,8 @@ ADMINS = (
MANAGERS = ADMINS MANAGERS = ADMINS
REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='digitalglarus.ungleich.ch',slug='{slug}')
ALLOWED_HOSTS = [ ALLOWED_HOSTS = [
".ungleich.ch", ".ungleich.ch",
"digital.glarus.ungleich.ch" , "digital.glarus.ungleich.ch" ,

View file

@ -4,12 +4,12 @@ from django.db import models
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.models import User, AbstractBaseUser, BaseUserManager, AbstractUser from django.contrib.auth.models import User, AbstractBaseUser, BaseUserManager, AbstractUser
from django.contrib.auth.hashers import make_password from django.contrib.auth.hashers import make_password
from django.core.mail import send_mail
from django.core.validators import RegexValidator from django.core.validators import RegexValidator
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from utils.stripe_utils import StripeUtils from utils.stripe_utils import StripeUtils
from utils.mailer import DigitalGlarusRegistrationMailer
REGISTRATION_MESSAGE = {'subject': "Validation mail", REGISTRATION_MESSAGE = {'subject': "Validation mail",
'message': 'Please validate Your account under this link http://localhost:8000/en-us/digitalglarus/login/validate/{}', 'message': 'Please validate Your account under this link http://localhost:8000/en-us/digitalglarus/login/validate/{}',
@ -72,9 +72,8 @@ class CustomUser(AbstractBaseUser):
if not user: if not user:
user = cls.objects.create_user(name=name, email=email, password=password) user = cls.objects.create_user(name=name, email=email, password=password)
if user: if user:
send_mail(REGISTRATION_MESSAGE['subject'], dg = DigitalGlarusRegistrationMailer(user.validation_slug)
REGISTRATION_MESSAGE['message'].format(user.validation_slug), dg.send_mail(to=user.email)
REGISTRATION_MESSAGE['from'], [user.email], fail_silently=False)
return user return user
else: else:
return None return None

52
utils/mailer.py Normal file
View file

@ -0,0 +1,52 @@
import six
from django.core.mail import send_mail
from django.conf import settings
class BaseMailer(object):
def __init__(self):
self._slug = None
self.no_replay_mail = 'no-replay@ungleich.ch'
if not hasattr(self, '_to'):
self._to = None
@property
def slug(self):
return self._slug
@slug.setter
def slug(self, val):
assert isinstance(val, six.string_types), "slug is not string: %r" % val
self._slug = val
@property
def registration(self):
return self.message
@registration.setter
def registration(self, val):
msg = "registration is not dict with fields subject,message"
assert type(val) is dict, msg
assert val.get('subject') and val.get('message'), msg
self._message, self._subject, self._from = (
val.get('message'), val.get('subject'), val.get('from'))
assert isinstance(self.slug, six.string_types), 'slug not set'
def send_mail(self, to=None):
if not to:
to = self._to
if not self.message:
raise NotImplementedError
send_mail(self._subject, self._message, self.no_replay_mail, [to])
class DigitalGlarusRegistrationMailer(BaseMailer):
message = settings.REGISTRATION_MESSAGE
def __init__(self, slug):
self.slug = slug
self.registration = self.message
self._message = self._message.format(slug=self._slug)
super().__init__()

View file

@ -1,6 +1,5 @@
import stripe import stripe
from django.conf import settings from django.conf import settings
stripe.api_key = settings.STRIPE_API_PRIVATE_KEY stripe.api_key = settings.STRIPE_API_PRIVATE_KEY
@ -122,3 +121,6 @@ class StripeUtils(object):
name=name, name=name,
currency=self.CURRENCY, currency=self.CURRENCY,
id=id) id=id)