Merge pull request #123 from levivm/feature/new_digitalglarus
Reduced pixels needed to navbar transition color, Added membership de…
This commit is contained in:
		
				commit
				
					
						7afef7578f
					
				
			
		
					 12 changed files with 446 additions and 9 deletions
				
			
		
							
								
								
									
										20
									
								
								digitalglarus/migrations/0017_membership_active.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								digitalglarus/migrations/0017_membership_active.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8 -*-
 | 
				
			||||||
 | 
					# Generated by Django 1.9.4 on 2016-09-13 01:51
 | 
				
			||||||
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from django.db import migrations, models
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Migration(migrations.Migration):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    dependencies = [
 | 
				
			||||||
 | 
					        ('digitalglarus', '0016_auto_20160909_0110'),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    operations = [
 | 
				
			||||||
 | 
					        migrations.AddField(
 | 
				
			||||||
 | 
					            model_name='membership',
 | 
				
			||||||
 | 
					            name='active',
 | 
				
			||||||
 | 
					            field=models.BooleanField(default=True),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ class IsNotMemberMixin(object):
 | 
				
			||||||
        if Membership.is_digitalglarus_member(request.user):
 | 
					        if Membership.is_digitalglarus_member(request.user):
 | 
				
			||||||
            return HttpResponseRedirect(self.already_member_redirect_url)
 | 
					            return HttpResponseRedirect(self.already_member_redirect_url)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return super(MembershipRequiredMixin, self).dispatch(request, *args, **kwargs)
 | 
					        return super(IsNotMemberMixin, self).dispatch(request, *args, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Ordereable(models.Model):
 | 
					class Ordereable(models.Model):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,6 +60,7 @@ class MembershipType(models.Model):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Membership(models.Model):
 | 
					class Membership(models.Model):
 | 
				
			||||||
    type = models.ForeignKey(MembershipType)
 | 
					    type = models.ForeignKey(MembershipType)
 | 
				
			||||||
 | 
					    active = models.BooleanField(default=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def is_digitalglarus_member(cls, user):
 | 
					    def is_digitalglarus_member(cls, user):
 | 
				
			||||||
| 
						 | 
					@ -68,17 +69,32 @@ class Membership(models.Model):
 | 
				
			||||||
                                      membershiporder__created_at__month=datetime.today().month)
 | 
					                                      membershiporder__created_at__month=datetime.today().month)
 | 
				
			||||||
        has_booking_past_month = Q(membershiporder__customer__user=user,
 | 
					        has_booking_past_month = Q(membershiporder__customer__user=user,
 | 
				
			||||||
                                   membershiporder__created_at__month=past_month)
 | 
					                                   membershiporder__created_at__month=past_month)
 | 
				
			||||||
        return cls.objects.filter(has_booking_past_month | has_booking_current_month).exists()
 | 
					        active_membership = Q(active=True)
 | 
				
			||||||
 | 
					        return cls.objects.filter(has_booking_past_month | has_booking_current_month).\
 | 
				
			||||||
 | 
					            filter(active_membership).exists()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def create(cls, data):
 | 
					    def create(cls, data):
 | 
				
			||||||
        instance = cls.objects.create(**data)
 | 
					        instance = cls.objects.create(**data)
 | 
				
			||||||
        return instance
 | 
					        return instance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def deactivate(self):
 | 
				
			||||||
 | 
					        self.active = False
 | 
				
			||||||
 | 
					        self.save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MembershipOrder(Ordereable, models.Model):
 | 
					class MembershipOrder(Ordereable, models.Model):
 | 
				
			||||||
    membership = models.ForeignKey(Membership)
 | 
					    membership = models.ForeignKey(Membership)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def first_membership_range_date(self):
 | 
				
			||||||
 | 
					        start_date = self.created_at
 | 
				
			||||||
 | 
					        _, days_in_month = calendar.monthrange(start_date.year,
 | 
				
			||||||
 | 
					                                               start_date.month)
 | 
				
			||||||
 | 
					        pass_days = start_date.day
 | 
				
			||||||
 | 
					        days_left = days_in_month - pass_days
 | 
				
			||||||
 | 
					        end_date = start_date + timedelta(days=days_left)
 | 
				
			||||||
 | 
					        return start_date, end_date
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
    def current_membership(cls, user):
 | 
					    def current_membership(cls, user):
 | 
				
			||||||
        last_payment = cls.objects.\
 | 
					        last_payment = cls.objects.\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,7 +13,7 @@ var cbpAnimatedHeader = (function() {
 | 
				
			||||||
	var docElem = document.documentElement,
 | 
						var docElem = document.documentElement,
 | 
				
			||||||
		header = document.querySelector( '.navbar-default' ),
 | 
							header = document.querySelector( '.navbar-default' ),
 | 
				
			||||||
		didScroll = false,
 | 
							didScroll = false,
 | 
				
			||||||
		changeHeaderOn = 300;
 | 
							changeHeaderOn = 20;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	function init() {
 | 
						function init() {
 | 
				
			||||||
		window.addEventListener( 'scroll', function( event ) {
 | 
							window.addEventListener( 'scroll', function( event ) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -64,5 +64,6 @@
 | 
				
			||||||
              
 | 
					              
 | 
				
			||||||
            </div> 
 | 
					            </div> 
 | 
				
			||||||
       </div>
 | 
					       </div>
 | 
				
			||||||
 | 
					  </section>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,136 @@
 | 
				
			||||||
 | 
					{% load static from staticfiles %}
 | 
				
			||||||
 | 
					<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
				
			||||||
 | 
					<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
				
			||||||
 | 
					<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
				
			||||||
 | 
					<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
 | 
					<title>Oxygen Invoice</title>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body bgcolor="#f7f7f7" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
				
			||||||
 | 
					<style type="text/css">
 | 
				
			||||||
 | 
					@media only screen and (max-width: 480px) {
 | 
				
			||||||
 | 
					  table[class*="container-for-gmail-android"] {
 | 
				
			||||||
 | 
					    min-width: 290px !important; width: 100% !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  img[class="force-width-gmail"] {
 | 
				
			||||||
 | 
					    display: none !important; width: 0 !important; height: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  table[class="w320"] {
 | 
				
			||||||
 | 
					    width: 320px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class*="mobile-header-padding-left"] {
 | 
				
			||||||
 | 
					    width: 160px !important; padding-left: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class*="mobile-header-padding-right"] {
 | 
				
			||||||
 | 
					    width: 160px !important; padding-right: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="header-lg"] {
 | 
				
			||||||
 | 
					    font-size: 24px !important; padding-bottom: 5px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="content-padding"] {
 | 
				
			||||||
 | 
					    padding: 5px 0 5px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="button"] {
 | 
				
			||||||
 | 
					    padding: 5px 5px 30px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class*="free-text"] {
 | 
				
			||||||
 | 
					    padding: 10px 18px 30px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="mobile-hide-img"] {
 | 
				
			||||||
 | 
					    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="item"] {
 | 
				
			||||||
 | 
					    width: 140px !important; vertical-align: top !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="quantity"] {
 | 
				
			||||||
 | 
					    width: 50px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="price"] {
 | 
				
			||||||
 | 
					    width: 90px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="item-table"] {
 | 
				
			||||||
 | 
					    padding: 30px 20px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="mini-container-left"] {
 | 
				
			||||||
 | 
					    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="mini-container-right"] {
 | 
				
			||||||
 | 
					    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
				
			||||||
 | 
					      <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px;" align="center">
 | 
				
			||||||
 | 
					            <!--[if gte mso 9]>
 | 
				
			||||||
 | 
					            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
				
			||||||
 | 
					              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
				
			||||||
 | 
					              <v:textbox inset="0,0,0,0">
 | 
				
			||||||
 | 
					            <![endif]-->
 | 
				
			||||||
 | 
					              <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
				
			||||||
 | 
					                      <a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
				
			||||||
 | 
					                    </td>
 | 
				
			||||||
 | 
					                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
				
			||||||
 | 
					                    </td>
 | 
				
			||||||
 | 
					                  </tr></table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					              <!--[if gte mso 9]>
 | 
				
			||||||
 | 
					              </v:textbox>
 | 
				
			||||||
 | 
					            </v:rect>
 | 
				
			||||||
 | 
					            <![endif]-->
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr></table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					    </td>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
				
			||||||
 | 
					      <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="header-lg" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: center; line-height: normal; font-weight: 700; padding: 35px 0 0;" align="center">
 | 
				
			||||||
 | 
					              Thank you for your subscription. 
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="free-text" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; width: 100% !important; padding: 10px 60px 0px;" align="center">
 | 
				
			||||||
 | 
					             Your monthly membership for period {{membership_start_date|date}} - {{membership_start_date|date}} has been charged. <br/> You can view your invoice clicking on the button below. 
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="button" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
 | 
				
			||||||
 | 
					              <div style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<!--[if mso]>
 | 
				
			||||||
 | 
					                <v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://" style="height:45px;v-text-anchor:middle;width:155px;" arcsize="15%" strokecolor="#ffffff" fillcolor="#ff6f6f">
 | 
				
			||||||
 | 
					                  <w:anchorlock/>
 | 
				
			||||||
 | 
					                  <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
 | 
				
			||||||
 | 
					                </v:roundrect>
 | 
				
			||||||
 | 
					              <![endif]--><a href="{{ base_url }}{% url 'digitalglarus:membership_orders_detail' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					    </td>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7;" bgcolor="#f7f7f7">
 | 
				
			||||||
 | 
					      <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 25px 0;" align="center">
 | 
				
			||||||
 | 
					              <strong style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">ungleich</strong><br style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					</td>
 | 
				
			||||||
 | 
					          </tr></table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					    </td>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,136 @@
 | 
				
			||||||
 | 
					{% load static from staticfiles %}
 | 
				
			||||||
 | 
					<!-- Inliner Build Version 4380b7741bb759d6cb997545f3add21ad48f010b -->
 | 
				
			||||||
 | 
					<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
 | 
				
			||||||
 | 
					<html xmlns="http://www.w3.org/1999/xhtml" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 | 
				
			||||||
 | 
					<meta name="viewport" content="width=device-width, initial-scale=1">
 | 
				
			||||||
 | 
					<title>Oxygen Invoice</title>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body bgcolor="#f7f7f7" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none; width: 100% !important; height: 100%; color: white; margin: 0;">
 | 
				
			||||||
 | 
					<style type="text/css">
 | 
				
			||||||
 | 
					@media only screen and (max-width: 480px) {
 | 
				
			||||||
 | 
					  table[class*="container-for-gmail-android"] {
 | 
				
			||||||
 | 
					    min-width: 290px !important; width: 100% !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  img[class="force-width-gmail"] {
 | 
				
			||||||
 | 
					    display: none !important; width: 0 !important; height: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  table[class="w320"] {
 | 
				
			||||||
 | 
					    width: 320px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class*="mobile-header-padding-left"] {
 | 
				
			||||||
 | 
					    width: 160px !important; padding-left: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class*="mobile-header-padding-right"] {
 | 
				
			||||||
 | 
					    width: 160px !important; padding-right: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="header-lg"] {
 | 
				
			||||||
 | 
					    font-size: 24px !important; padding-bottom: 5px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="content-padding"] {
 | 
				
			||||||
 | 
					    padding: 5px 0 5px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="button"] {
 | 
				
			||||||
 | 
					    padding: 5px 5px 30px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class*="free-text"] {
 | 
				
			||||||
 | 
					    padding: 10px 18px 30px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="mobile-hide-img"] {
 | 
				
			||||||
 | 
					    display: none !important; height: 0 !important; width: 0 !important; line-height: 0 !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="item"] {
 | 
				
			||||||
 | 
					    width: 140px !important; vertical-align: top !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="quantity"] {
 | 
				
			||||||
 | 
					    width: 50px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class~="price"] {
 | 
				
			||||||
 | 
					    width: 90px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="item-table"] {
 | 
				
			||||||
 | 
					    padding: 30px 20px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="mini-container-left"] {
 | 
				
			||||||
 | 
					    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  td[class="mini-container-right"] {
 | 
				
			||||||
 | 
					    padding: 0 15px 15px !important; display: block !important; width: 290px !important;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					<table align="center" cellpadding="0" cellspacing="0" class="container-for-gmail-android" width="100%" style="border-collapse: collapse !important; min-width: 600px; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td align="left" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #ffffff url(http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg) repeat-x;" bgcolor="#ffffff">
 | 
				
			||||||
 | 
					      <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					      <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#ffffff" background="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; background: transparent;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td width="100%" height="80" valign="top" style="text-align: center; vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; line-height: 21px;" align="center">
 | 
				
			||||||
 | 
					            <!--[if gte mso 9]>
 | 
				
			||||||
 | 
					            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:80px; v-text-anchor:middle;">
 | 
				
			||||||
 | 
					              <v:fill type="tile" src="http://s3.amazonaws.com/swu-filepicker/4E687TRe69Ld95IDWyEg_bg_top_02.jpg" color="#ffffff" />
 | 
				
			||||||
 | 
					              <v:textbox inset="0,0,0,0">
 | 
				
			||||||
 | 
					            <![endif]-->
 | 
				
			||||||
 | 
					              <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					                <table cellpadding="0" cellspacing="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="pull-left mobile-header-padding-left" style="vertical-align: middle; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: left; line-height: 21px; width: 290px; padding-left: 10px;" align="left" valign="middle">
 | 
				
			||||||
 | 
					                      <a href="{{base_url}}" style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; color: #676767; text-decoration: none !important;"><img width="137" src="{{base_url}}{% static "hosting/img/logo_black.png" %}" alt="logo" style="max-width: 600px; outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; border: none;"></a>
 | 
				
			||||||
 | 
					                    </td>
 | 
				
			||||||
 | 
					                    <td class="pull-right mobile-header-padding-right" style="color: #4d4d4d; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; text-align: right; line-height: 21px; width: 290px; padding-left: 10px;" align="right">
 | 
				
			||||||
 | 
					                    </td>
 | 
				
			||||||
 | 
					                  </tr></table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					              <!--[if gte mso 9]>
 | 
				
			||||||
 | 
					              </v:textbox>
 | 
				
			||||||
 | 
					            </v:rect>
 | 
				
			||||||
 | 
					            <![endif]-->
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr></table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					    </td>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td align="center" valign="top" width="100%" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7; padding: 20px 0 5px;" class="content-padding" bgcolor="#f7f7f7">
 | 
				
			||||||
 | 
					      <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="header-lg" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 32px; color: #4d4d4d; text-align: center; line-height: normal; font-weight: 700; padding: 35px 0 0;" align="center">
 | 
				
			||||||
 | 
					              Thank you for your subscription. 
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="free-text" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; width: 100% !important; padding: 10px 60px 0px;" align="center">
 | 
				
			||||||
 | 
					             Your monthly membership for period {{membership_start_date|date}} - {{membership_start_date|date}} has been charged. <br/> You can view your invoice clicking on the button below. 
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td class="button" style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 30px 0;" align="center">
 | 
				
			||||||
 | 
					              <div style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<!--[if mso]>
 | 
				
			||||||
 | 
					                <v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w="urn:schemas-microsoft-com:office:word" href="http://" style="height:45px;v-text-anchor:middle;width:155px;" arcsize="15%" strokecolor="#ffffff" fillcolor="#ff6f6f">
 | 
				
			||||||
 | 
					                  <w:anchorlock/>
 | 
				
			||||||
 | 
					                  <center style="color:#ffffff;font-family:Helvetica, Arial, sans-serif;font-size:14px;font-weight:regular;">My Account</center>
 | 
				
			||||||
 | 
					                </v:roundrect>
 | 
				
			||||||
 | 
					              <![endif]--><a href="{{ base_url }}{% url 'digitalglarus:membership_orders_detail' order.id %}" style="border-radius: 5px; color: #ffffff; display: inline-block; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; font-weight: regular; line-height: 45px; text-align: center; text-decoration: none !important; width: 155px; -webkit-text-size-adjust: none; mso-hide: all; background: #ff6f6f;">View Invoice</a>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					            </td>
 | 
				
			||||||
 | 
					          </tr>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					    </td>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					<tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td align="center" valign="top" width="100%" style="height: 100px; border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; background: #f7f7f7;" bgcolor="#f7f7f7">
 | 
				
			||||||
 | 
					      <center style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					        <table cellspacing="0" cellpadding="0" width="600" class="w320" style="border-collapse: collapse !important; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;"><tr style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					<td style="border-collapse: collapse; font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important; font-size: 14px; color: #777777; text-align: center; line-height: 21px; padding: 25px 0;" align="center">
 | 
				
			||||||
 | 
					              <strong style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">ungleich</strong><br style="font-family: 'Oxygen', 'Helvetica Neue', 'Arial', 'sans-serif' !important;">
 | 
				
			||||||
 | 
					</td>
 | 
				
			||||||
 | 
					          </tr></table>
 | 
				
			||||||
 | 
					</center>
 | 
				
			||||||
 | 
					    </td>
 | 
				
			||||||
 | 
					  </tr>
 | 
				
			||||||
 | 
					</table>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					{% extends "new_base_glarus.html" %}
 | 
				
			||||||
 | 
					{% load staticfiles cms_tags bootstrap3%}
 | 
				
			||||||
 | 
					{% block title %}crowdfunding{% endblock %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{% block content %}
 | 
				
			||||||
 | 
					  <section id="price">
 | 
				
			||||||
 | 
					    <div class="signup-container">
 | 
				
			||||||
 | 
						  <div class="col-xs-12 col-sm-3 col-lg-4 text-center wow fadeInDown"> </div>
 | 
				
			||||||
 | 
					      <div class="col-xs-12 col-sm-6 col-lg-4 text-center wow fadeInDown"> 
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					         <!-- <span class="glyphicon glyphicon-user"></span> -->
 | 
				
			||||||
 | 
					          <div class="payment-box">
 | 
				
			||||||
 | 
					             <h2 class="billing-head">Membership Deactivation</h2> 
 | 
				
			||||||
 | 
					             <hr class="greyline-long">
 | 
				
			||||||
 | 
					               <h2 class="membership-lead">Are you sure do you want to cancel your membership with us ?</h2>
 | 
				
			||||||
 | 
					               <div class="date-box">
 | 
				
			||||||
 | 
					                 </div>
 | 
				
			||||||
 | 
					                 <!--<hr class="primary">-->
 | 
				
			||||||
 | 
					                      <div class="signup-form form-group row">
 | 
				
			||||||
 | 
					                      
 | 
				
			||||||
 | 
					                        <div class="button-booking-box form-inline row">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                          <form method="POST" action="">
 | 
				
			||||||
 | 
					                            {% csrf_token %} 
 | 
				
			||||||
 | 
					                            <button type="submit" class="btn btn-primary btn-blue">Cancel my Membership</button>
 | 
				
			||||||
 | 
					                          </form>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                          <div class="notice-box text-left">
 | 
				
			||||||
 | 
					                            <p class="order-bottom-text">
 | 
				
			||||||
 | 
					                              Your membership wouldn't be automatically renewed each month.
 | 
				
			||||||
 | 
					                            </p>
 | 
				
			||||||
 | 
					                         </div>
 | 
				
			||||||
 | 
					                      </div>
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					      </div>       
 | 
				
			||||||
 | 
					     <div class="col-xs-12 col-sm-3 col-lg-4 text-center wow fadeInDown"> </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div> 
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>   
 | 
				
			||||||
 | 
					  </section>
 | 
				
			||||||
 | 
					  <section id="contact">
 | 
				
			||||||
 | 
					    <div class="fill">
 | 
				
			||||||
 | 
					     <div class="row" class="wow fadeInDown">
 | 
				
			||||||
 | 
					      <div class="col-lg-12 text-center wow fadeInDown">
 | 
				
			||||||
 | 
					          <div class="col-md-4 map-title">
 | 
				
			||||||
 | 
					            Digital Glarus<br>
 | 
				
			||||||
 | 
					            <span class="map-caption">In der Au 7 Schwanden 8762 Switzerland
 | 
				
			||||||
 | 
					            <br>info@digitalglarus.ch
 | 
				
			||||||
 | 
					            <br>
 | 
				
			||||||
 | 
					            (044) 534-66-22
 | 
				
			||||||
 | 
					            <p> </p>
 | 
				
			||||||
 | 
					            </span>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					           <p> </p>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </section>
 | 
				
			||||||
 | 
					{% endblock %} 
 | 
				
			||||||
| 
						 | 
					@ -67,7 +67,7 @@
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
        </div> 
 | 
					        </div> 
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </section>
 | 
					</section>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<!-- stripe key data -->
 | 
					<!-- stripe key data -->
 | 
				
			||||||
{% if stripe_key %}
 | 
					{% if stripe_key %}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@
 | 
				
			||||||
    <div class="signup-container">
 | 
					    <div class="signup-container">
 | 
				
			||||||
      <div class="col-xs-12 col-sm-6 col-lg-8 text-center wow fadeInDown"> 
 | 
					      <div class="col-xs-12 col-sm-6 col-lg-8 text-center wow fadeInDown"> 
 | 
				
			||||||
        <div class="payment-box">
 | 
					        <div class="payment-box">
 | 
				
			||||||
            <h2 class="section-heading payment-head">Your Order History</h2>
 | 
					            <h2 class="section-heading payment-head">Your Membership History</h2>
 | 
				
			||||||
            <hr class="greyline-long">
 | 
					            <hr class="greyline-long">
 | 
				
			||||||
            <h2 class="order-head">Member Name</h2>
 | 
					            <h2 class="order-head">Member Name</h2>
 | 
				
			||||||
            <h2 class="member-name">{{request.user.name}}</h2>
 | 
					            <h2 class="member-name">{{request.user.name}}</h2>
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@
 | 
				
			||||||
            <h2 class="order-head">Active Membership</h2>
 | 
					            <h2 class="order-head">Active Membership</h2>
 | 
				
			||||||
            <h2 class="member-name">{{membership_start_date|date}}-{{membership_end_date|date}}</h2>
 | 
					            <h2 class="member-name">{{membership_start_date|date}}-{{membership_end_date|date}}</h2>
 | 
				
			||||||
            <hr class="greyline-long">
 | 
					            <hr class="greyline-long">
 | 
				
			||||||
            <h2 class="order-head">Booking history</h2>
 | 
					            <h2 class="order-head">Orders history</h2>
 | 
				
			||||||
            <table class="table">
 | 
					            <table class="table">
 | 
				
			||||||
              <thead>
 | 
					              <thead>
 | 
				
			||||||
                <tr>
 | 
					                <tr>
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,22 @@
 | 
				
			||||||
                                    Switzerland
 | 
					                                    Switzerland
 | 
				
			||||||
            </h2>
 | 
					            </h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <hr class="greyline-long">
 | 
				
			||||||
 | 
					            <h2 class="order-head">Your Next Membership</h2>
 | 
				
			||||||
 | 
					            <h2 class="history-name">
 | 
				
			||||||
 | 
					              Dates: {{membership_start_date|date}} - {{membership_end_date|date}}<br>
 | 
				
			||||||
 | 
					            </h2>
 | 
				
			||||||
 | 
					            <h2 class="history-name">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              <a class="btn btn-primary btn-grey btn-edit print" href="{% url 'digitalglarus:membership_deactivate' %}">Deactivate</a>
 | 
				
			||||||
 | 
					            </h2>
 | 
				
			||||||
 | 
					            <div class="row">
 | 
				
			||||||
 | 
					              <div class="col-md-10">
 | 
				
			||||||
 | 
					                <span>You will be charged on the first of the month until you 
 | 
				
			||||||
 | 
					                cancel your subscription. Previous charges won't be refunded.</span>
 | 
				
			||||||
 | 
					              </div>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					                                        
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
          </div>                
 | 
					          </div>                
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
| 
						 | 
					@ -64,5 +80,6 @@
 | 
				
			||||||
              
 | 
					              
 | 
				
			||||||
            </div> 
 | 
					            </div> 
 | 
				
			||||||
       </div>
 | 
					       </div>
 | 
				
			||||||
 | 
					</section>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{% endblock %}
 | 
					{% endblock %}
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ from . import views
 | 
				
			||||||
from .views import ContactView, IndexView, AboutView, HistoryView, LoginView, SignupView,\
 | 
					from .views import ContactView, IndexView, AboutView, HistoryView, LoginView, SignupView,\
 | 
				
			||||||
    PasswordResetView, PasswordResetConfirmView, MembershipPaymentView, MembershipActivatedView,\
 | 
					    PasswordResetView, PasswordResetConfirmView, MembershipPaymentView, MembershipActivatedView,\
 | 
				
			||||||
    MembershipPricingView, BookingSelectDatesView, BookingPaymentView, OrdersBookingDetailView,\
 | 
					    MembershipPricingView, BookingSelectDatesView, BookingPaymentView, OrdersBookingDetailView,\
 | 
				
			||||||
    BookingOrdersListView, MembershipOrdersListView, OrdersMembershipDetailView
 | 
					    BookingOrdersListView, MembershipOrdersListView, OrdersMembershipDetailView, MembershipDeactivateView
 | 
				
			||||||
# from membership.views import LoginRegistrationView
 | 
					# from membership.views import LoginRegistrationView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
urlpatterns = [
 | 
					urlpatterns = [
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,8 @@ urlpatterns = [
 | 
				
			||||||
    url(_(r'membership/payment/?$'), MembershipPaymentView.as_view(), name='membership_payment'),
 | 
					    url(_(r'membership/payment/?$'), MembershipPaymentView.as_view(), name='membership_payment'),
 | 
				
			||||||
    url(_(r'membership/activated/?$'), MembershipActivatedView.as_view(),
 | 
					    url(_(r'membership/activated/?$'), MembershipActivatedView.as_view(),
 | 
				
			||||||
        name='membership_activated'),
 | 
					        name='membership_activated'),
 | 
				
			||||||
 | 
					    url(_(r'membership/deactivate/?$'), MembershipDeactivateView.as_view(),
 | 
				
			||||||
 | 
					        name='membership_deactivate'),
 | 
				
			||||||
    url(_(r'membership/pricing/?$'), MembershipPricingView.as_view(),
 | 
					    url(_(r'membership/pricing/?$'), MembershipPricingView.as_view(),
 | 
				
			||||||
        name='membership_pricing'),
 | 
					        name='membership_pricing'),
 | 
				
			||||||
    url(_(r'membership/orders/(?P<pk>\d+)/?$'), OrdersMembershipDetailView.as_view(),
 | 
					    url(_(r'membership/orders/(?P<pk>\d+)/?$'), OrdersMembershipDetailView.as_view(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@ from django.forms import ModelForm
 | 
				
			||||||
from django.http import HttpResponseRedirect
 | 
					from django.http import HttpResponseRedirect
 | 
				
			||||||
from django.core.urlresolvers import reverse_lazy, reverse
 | 
					from django.core.urlresolvers import reverse_lazy, reverse
 | 
				
			||||||
from django.utils.translation import ugettext_lazy as _
 | 
					from django.utils.translation import ugettext_lazy as _
 | 
				
			||||||
from django.views.generic import TemplateView
 | 
					from django.views.generic import TemplateView, UpdateView
 | 
				
			||||||
from django.contrib.auth.mixins import LoginRequiredMixin
 | 
					from django.contrib.auth.mixins import LoginRequiredMixin
 | 
				
			||||||
from django.utils.translation import get_language
 | 
					from django.utils.translation import get_language
 | 
				
			||||||
from djangocms_blog.models import Post
 | 
					from djangocms_blog.models import Post
 | 
				
			||||||
| 
						 | 
					@ -15,8 +15,11 @@ from django.contrib import messages
 | 
				
			||||||
from django.http import JsonResponse
 | 
					from django.http import JsonResponse
 | 
				
			||||||
from django.views.generic import View, DetailView, ListView
 | 
					from django.views.generic import View, DetailView, ListView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .models import Supporter
 | 
					from .models import Supporter
 | 
				
			||||||
from utils.forms import ContactUsForm
 | 
					from utils.forms import ContactUsForm
 | 
				
			||||||
 | 
					from utils.mailer import BaseEmail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.views.generic.edit import FormView
 | 
					from django.views.generic.edit import FormView
 | 
				
			||||||
from membership.calendar.calendar import BookCalendar
 | 
					from membership.calendar.calendar import BookCalendar
 | 
				
			||||||
from membership.models import Calendar as CalendarModel, StripeCustomer
 | 
					from membership.models import Calendar as CalendarModel, StripeCustomer
 | 
				
			||||||
| 
						 | 
					@ -296,12 +299,35 @@ class MembershipPaymentView(LoginRequiredMixin, IsNotMemberMixin, FormView):
 | 
				
			||||||
                'stripe_charge': charge,
 | 
					                'stripe_charge': charge,
 | 
				
			||||||
                'amount': membership_type.first_month_price
 | 
					                'amount': membership_type.first_month_price
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            MembershipOrder.create(order_data)
 | 
					            membership_order = MembershipOrder.create(order_data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            request.session.update({
 | 
					            request.session.update({
 | 
				
			||||||
                'membership_price': membership.type.first_month_price,
 | 
					                'membership_price': membership.type.first_month_price,
 | 
				
			||||||
                'membership_dates': membership.type.first_month_formated_range
 | 
					                'membership_dates': membership.type.first_month_formated_range
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            start_m_date, end_m_date = membership_order.first_membership_range_date()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            context = {
 | 
				
			||||||
 | 
					                'membership': membership,
 | 
				
			||||||
 | 
					                'order': membership_order,
 | 
				
			||||||
 | 
					                'membership_start_date': start_m_date,
 | 
				
			||||||
 | 
					                'membership_end_date': end_m_date,
 | 
				
			||||||
 | 
					                'base_url': "{0}://{1}".format(request.scheme, request.get_host())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            email_data = {
 | 
				
			||||||
 | 
					                'subject': 'Your membership has been charged',
 | 
				
			||||||
 | 
					                'to': request.user.email,
 | 
				
			||||||
 | 
					                'context': context,
 | 
				
			||||||
 | 
					                'template_name': 'membership_charge',
 | 
				
			||||||
 | 
					                'template_path': 'digitalglarus/emails/'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            email = BaseEmail(**email_data)
 | 
				
			||||||
 | 
					            email.send()
 | 
				
			||||||
 | 
					            import pdb
 | 
				
			||||||
 | 
					            pdb.set_trace()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return HttpResponseRedirect(reverse('digitalglarus:membership_activated'))
 | 
					            return HttpResponseRedirect(reverse('digitalglarus:membership_activated'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
| 
						 | 
					@ -322,6 +348,27 @@ class MembershipActivatedView(TemplateView):
 | 
				
			||||||
        return context
 | 
					        return context
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class MembershipDeactivateView(LoginRequiredMixin, UpdateView):
 | 
				
			||||||
 | 
					    template_name = "digitalglarus/membership_deactivated.html"
 | 
				
			||||||
 | 
					    model = Membership
 | 
				
			||||||
 | 
					    success_url = reverse_lazy('digitalglarus:membership_orders_list')
 | 
				
			||||||
 | 
					    login_url = reverse_lazy('digitalglarus:login')
 | 
				
			||||||
 | 
					    fields = '__all__'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_object(self):
 | 
				
			||||||
 | 
					        membership_order = MembershipOrder.objects.\
 | 
				
			||||||
 | 
					            filter(customer__user=self.request.user).last()
 | 
				
			||||||
 | 
					        if not membership_order:
 | 
				
			||||||
 | 
					            raise AttributeError("Membership does not exists")
 | 
				
			||||||
 | 
					        membership = membership_order.membership
 | 
				
			||||||
 | 
					        return membership
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def post(self, *args, **kwargs):
 | 
				
			||||||
 | 
					        membership = self.get_object()
 | 
				
			||||||
 | 
					        membership.deactivate()
 | 
				
			||||||
 | 
					        return HttpResponseRedirect(self.success_url)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MembershipOrdersListView(LoginRequiredMixin, ListView):
 | 
					class MembershipOrdersListView(LoginRequiredMixin, ListView):
 | 
				
			||||||
    template_name = "digitalglarus/membership_orders_list.html"
 | 
					    template_name = "digitalglarus/membership_orders_list.html"
 | 
				
			||||||
    context_object_name = "orders"
 | 
					    context_object_name = "orders"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue