resolve base.py conflict
This commit is contained in:
		
					parent
					
						
							
								073c9bf192
							
						
					
				
			
			
				commit
				
					
						e137e8a26e
					
				
			
		
					 5 changed files with 97 additions and 44 deletions
				
			
		|  | @ -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 |  | ||||||
|  |  | ||||||
|  | @ -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" , | ||||||
|  |  | ||||||
|  | @ -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
									
								
							
							
						
						
									
										52
									
								
								utils/mailer.py
									
										
									
									
									
										Normal 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__() | ||||||
|  | @ -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) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue