resolve conflicts
|
@ -70,7 +70,7 @@ def letscowork(request):
|
|||
|
||||
def blog(request):
|
||||
tags = ["digitalglarus"]
|
||||
posts = Post.objects.filter_by_language(get_language()).filter(tags__name__in=tags)
|
||||
posts = Post.objects.filter_by_language(get_language()).filter(tags__name__in=tags, publish=True)
|
||||
context = {
|
||||
'post_list': posts,
|
||||
}
|
||||
|
|
|
@ -84,18 +84,18 @@ INSTALLED_APPS = (
|
|||
'djangocms_file',
|
||||
'djangocms_picture',
|
||||
'djangocms_video',
|
||||
# 'djangocms_flash',
|
||||
# 'djangocms_googlemap',
|
||||
# 'djangocms_inherit',
|
||||
# 'djangocms_link',
|
||||
# 'djangocms_teaser',
|
||||
'djangocms_flash',
|
||||
'djangocms_googlemap',
|
||||
'djangocms_inherit',
|
||||
'djangocms_link',
|
||||
'djangocms_teaser',
|
||||
'djangocms_page_meta',
|
||||
'djangocms_text_ckeditor',
|
||||
'djangocms_admin_style',
|
||||
'cmsplugin_filer_file',
|
||||
'cmsplugin_filer_folder',
|
||||
'cmsplugin_filer_link',
|
||||
# 'cmsplugin_filer_teaser',
|
||||
'cmsplugin_filer_teaser',
|
||||
'cmsplugin_filer_video',
|
||||
#
|
||||
# blog
|
||||
|
@ -103,7 +103,7 @@ INSTALLED_APPS = (
|
|||
'reversion',
|
||||
# ungleich
|
||||
'ungleich',
|
||||
'ungleich_page',
|
||||
# 'ungleich_page',
|
||||
'hosting',
|
||||
'digitalglarus',
|
||||
|
||||
|
@ -176,7 +176,7 @@ CMS_TEMPLATES = (
|
|||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': 'app',
|
||||
'NAME': 'app_new',
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -280,12 +280,12 @@ CACHES = {
|
|||
}
|
||||
}
|
||||
|
||||
if LOGIN_URL is None:
|
||||
LOGIN_URL = APP_ROOT_ENDPOINT + 'login/'
|
||||
if LOGOUT_URL is None:
|
||||
LOGOUT_URL = APP_ROOT_ENDPOINT + 'logout/'
|
||||
if LOGIN_REDIRECT_URL is None:
|
||||
LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
|
||||
#if LOGIN_URL is None:
|
||||
# LOGIN_URL = APP_ROOT_ENDPOINT + 'login/'
|
||||
#if LOGOUT_URL is None:
|
||||
# LOGOUT_URL = APP_ROOT_ENDPOINT + 'logout/'
|
||||
#if LOGIN_REDIRECT_URL is None:
|
||||
# LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/1.7/howto/static-files/
|
||||
|
@ -302,7 +302,7 @@ META_SITE_PROTOCOL = 'http'
|
|||
META_USE_SITES = True
|
||||
MIGRATION_MODULES = {
|
||||
'cms': 'cms.migrations',
|
||||
# 'filer': 'filer.migrations_django',
|
||||
#'filer': 'filer.migrations_django',
|
||||
# 'menus': 'menus.migrations_django',
|
||||
'djangocms_flash': 'djangocms_flash.migrations_django',
|
||||
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
|
||||
|
@ -337,6 +337,7 @@ STATICFILES_FINDERS = (
|
|||
THUMBNAIL_PROCESSORS = (
|
||||
'easy_thumbnails.processors.colorspace',
|
||||
'easy_thumbnails.processors.autocrop',
|
||||
#'easy_thumbnails.processors.scale_and_crop',
|
||||
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
|
||||
'easy_thumbnails.processors.filters',
|
||||
)
|
||||
|
@ -442,6 +443,12 @@ PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
|
|||
AUTH_USER_MODEL = 'membership.CustomUser'
|
||||
|
||||
|
||||
|
||||
ALLOWED_HOSTS = [
|
||||
"*"
|
||||
]
|
||||
|
||||
|
||||
# PAYMENT
|
||||
|
||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
|
||||
|
|
|
@ -3,10 +3,12 @@ from .base import *
|
|||
ADMINS = (
|
||||
('Nico Schottelius', 'nico.schottelius@ungleich.ch'),
|
||||
('Raul Ascencio', 'raul.ascencio@yandex.com'),
|
||||
('Tomislav Rupcic','tmslav@gmail.com'),
|
||||
|
||||
)
|
||||
# ('Sanghee Kim', 'sanghee.kim@ungleich.ch'),
|
||||
|
||||
MANAGERS = ADMINS
|
||||
#MANAGERS = ADMINS
|
||||
|
||||
REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='digitalglarus.ungleich.ch',slug='{slug}')
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from django.contrib import admin
|
||||
from .models import RailsBetaUser, VirtualMachineType
|
||||
from .models import VirtualMachineType
|
||||
|
||||
|
||||
admin.site.register(RailsBetaUser)
|
||||
admin.site.register(VirtualMachineType)
|
||||
|
|
|
@ -10,41 +10,43 @@ class Command(BaseCommand):
|
|||
hetzner = {
|
||||
'base_price': 10,
|
||||
'core_price': 10,
|
||||
'memory_price': 10,
|
||||
'disk_size_price': 10,
|
||||
'description': 'VM auf einzelner HW, Raid1, kein HA'
|
||||
'memory_price': 5,
|
||||
'disk_size_price': 1,
|
||||
'description': 'VM auf einzelner HW, Raid1, kein HA',
|
||||
'location':'DE'
|
||||
}
|
||||
|
||||
return {
|
||||
'hetzner_nug': {
|
||||
'base_price': 5,
|
||||
'memory_price': 2,
|
||||
'core_price': 2,
|
||||
'disk_size_price': 0.5,
|
||||
'description': 'VM ohne Uptime Garantie'
|
||||
},
|
||||
# 'hetzner_nug': {
|
||||
# 'base_price': 5,
|
||||
# 'memory_price': 2,
|
||||
# 'core_price': 2,
|
||||
# 'disk_size_price': 0.5,
|
||||
# 'description': 'VM ohne Uptime Garantie'
|
||||
# },
|
||||
'hetzner': hetzner,
|
||||
'hetzner_raid6': {
|
||||
'base_price': hetzner['base_price']*1.2,
|
||||
'core_price': hetzner['core_price']*1.2,
|
||||
'memory_price': hetzner['memory_price']*1.2,
|
||||
'disk_size_price': hetzner['disk_size_price']*1.2,
|
||||
'description': 'VM auf einzelner HW, Raid1, kein HA'
|
||||
# 'hetzner_raid6': {
|
||||
# 'base_price': hetzner['base_price']*1.2,
|
||||
# 'core_price': hetzner['core_price']*1.2,
|
||||
# 'memory_price': hetzner['memory_price']*1.2,
|
||||
# 'disk_size_price': hetzner['disk_size_price']*1.2,
|
||||
# 'description': 'VM auf einzelner HW, Raid1, kein HA'
|
||||
|
||||
},
|
||||
'hetzner_glusterfs': {
|
||||
'base_price': hetzner['base_price']*1.4,
|
||||
'core_price': hetzner['core_price']*1.4,
|
||||
'memory_price': hetzner['memory_price']*1.4,
|
||||
'disk_size_price': hetzner['disk_size_price']*1.4,
|
||||
'description': 'VM auf einzelner HW, Raid1, kein HA'
|
||||
},
|
||||
# },
|
||||
# 'hetzner_glusterfs': {
|
||||
# 'base_price': hetzner['base_price']*1.4,
|
||||
# 'core_price': hetzner['core_price']*1.4,
|
||||
# 'memory_price': hetzner['memory_price']*1.4,
|
||||
# 'disk_size_price': hetzner['disk_size_price']*1.4,
|
||||
# 'description': 'VM auf einzelner HW, Raid1, kein HA'
|
||||
# },
|
||||
'bern': {
|
||||
'base_price': 12,
|
||||
'core_price': 25,
|
||||
'memory_price': 7,
|
||||
'disk_size_price': 0.70,
|
||||
'description': "VM in Bern, HA Setup ohne HA Garantie",
|
||||
'location':'CH',
|
||||
}
|
||||
}
|
||||
|
||||
|
|
20
hosting/migrations/0015_auto_20160512_0448.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2016-05-12 04:48
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('hosting', '0014_auto_20160505_0541'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='hostingorder',
|
||||
old_name='VMPlan',
|
||||
new_name='vm_plan',
|
||||
),
|
||||
]
|
18
hosting/migrations/0016_delete_railsbetauser.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2016-05-14 06:50
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('hosting', '0015_auto_20160512_0448'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='RailsBetaUser',
|
||||
),
|
||||
]
|
21
hosting/migrations/0017_virtualmachinetype_location.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.4 on 2016-05-19 04:14
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('hosting', '0016_delete_railsbetauser'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='virtualmachinetype',
|
||||
name='location',
|
||||
field=models.CharField(choices=[('DE', 'Germany'), ('CH', 'Switzerland')], default='DE', max_length=3),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -10,14 +10,6 @@ from utils.models import BillingAddress
|
|||
from .managers import VMPlansManager
|
||||
|
||||
|
||||
class RailsBetaUser(models.Model):
|
||||
email = models.EmailField(unique=True)
|
||||
received_date = models.DateTimeField('date received')
|
||||
|
||||
def __str__(self):
|
||||
return "%s - %s" % (self.email, self.received_date)
|
||||
|
||||
|
||||
class VirtualMachineType(models.Model):
|
||||
|
||||
HETZNER_NUG = 'hetzner_nug'
|
||||
|
@ -25,6 +17,8 @@ class VirtualMachineType(models.Model):
|
|||
HETZNER_R6 = 'hetzner_raid6'
|
||||
HETZNER_G = 'hetzner_glusterfs'
|
||||
BERN = 'bern'
|
||||
DE_LOCATION = 'DE'
|
||||
CH_LOCATION = 'CH'
|
||||
|
||||
HOSTING_TYPES = (
|
||||
(HETZNER_NUG, 'Hetzner No Uptime Guarantee'),
|
||||
|
@ -34,12 +28,17 @@ class VirtualMachineType(models.Model):
|
|||
(BERN, 'Bern'),
|
||||
)
|
||||
|
||||
LOCATIONS_CHOICES = (
|
||||
(DE_LOCATION, 'Germany'),
|
||||
(CH_LOCATION, 'Switzerland'),
|
||||
)
|
||||
description = models.TextField()
|
||||
base_price = models.FloatField()
|
||||
memory_price = models.FloatField()
|
||||
core_price = models.FloatField()
|
||||
disk_size_price = models.FloatField()
|
||||
hosting_company = models.CharField(max_length=30, choices=HOSTING_TYPES)
|
||||
location = models.CharField(max_length=3, choices=LOCATIONS_CHOICES)
|
||||
|
||||
def __str__(self):
|
||||
return "%s" % (self.get_hosting_company_display())
|
||||
|
@ -73,6 +72,8 @@ class VirtualMachineType(models.Model):
|
|||
'hosting_company_name': self.get_hosting_company_display(),
|
||||
'hosting_company': self.hosting_company,
|
||||
'default_price': self.defeault_price(),
|
||||
'location_code': self.location,
|
||||
'location': self.get_location_display(),
|
||||
'id': self.id,
|
||||
}
|
||||
|
||||
|
@ -86,6 +87,9 @@ class VirtualMachinePlan(models.Model):
|
|||
|
||||
objects = VMPlansManager()
|
||||
|
||||
def __str__(self):
|
||||
return "%s" % (self.id)
|
||||
|
||||
@cached_property
|
||||
def hosting_company_name(self):
|
||||
return self.vm_type.get_hosting_company_display()
|
||||
|
@ -106,7 +110,7 @@ class HostingOrder(models.Model):
|
|||
ORDER_APPROVED_STATUS = 'Approved'
|
||||
ORDER_DECLINED_STATUS = 'Declined'
|
||||
|
||||
VMPlan = models.ForeignKey(VirtualMachinePlan, related_name='hosting_orders')
|
||||
vm_plan = models.ForeignKey(VirtualMachinePlan, related_name='hosting_orders')
|
||||
customer = models.ForeignKey(StripeCustomer)
|
||||
billing_address = models.ForeignKey(BillingAddress)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
@ -115,13 +119,16 @@ class HostingOrder(models.Model):
|
|||
cc_brand = models.CharField(max_length=10)
|
||||
stripe_charge_id = models.CharField(max_length=100, null=True)
|
||||
|
||||
def __str__(self):
|
||||
return "%s" % (self.id)
|
||||
|
||||
@cached_property
|
||||
def status(self):
|
||||
return self.ORDER_APPROVED_STATUS if self.approved else self.ORDER_DECLINED_STATUS
|
||||
|
||||
@classmethod
|
||||
def create(cls, VMPlan=None, customer=None, billing_address=None):
|
||||
instance = cls.objects.create(VMPlan=VMPlan, customer=customer,
|
||||
def create(cls, vm_plan=None, customer=None, billing_address=None):
|
||||
instance = cls.objects.create(vm_plan=vm_plan, customer=customer,
|
||||
billing_address=billing_address)
|
||||
return instance
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
.pricing li.type {
|
||||
list-style: none;
|
||||
padding: 13px;
|
||||
height: 200px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
.pricing big {
|
||||
|
@ -72,6 +72,16 @@
|
|||
box-shadow: inset 0px 2px 2px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
/* pricing color */
|
||||
|
||||
.p-black big,
|
||||
.p-black h3 {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.p-black button {
|
||||
background: black;
|
||||
}
|
||||
|
||||
.p-green big,
|
||||
.p-green h3 {
|
||||
color: #4c7737;
|
||||
|
|
BIN
hosting/static/hosting/img/CH_flag.png
Normal file
After Width: | Height: | Size: 841 B |
BIN
hosting/static/hosting/img/DE_flag.png
Normal file
After Width: | Height: | Size: 376 B |
|
@ -49,5 +49,9 @@ $( document ).ready(function() {
|
|||
|
||||
$('.disk-space-selector').on('change',change_attribute);
|
||||
|
||||
//Disable input
|
||||
$('.disk-space-selector').keypress(function(event){
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
});
|
|
@ -81,23 +81,23 @@
|
|||
</li>
|
||||
{% else %}
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#how">How it works</a>
|
||||
<a href="{{ request.session.hosting_url}}#how">How it works</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#your">Your infrastructure</a>
|
||||
<a href="{{ request.session.hosting_url }}#your">Your infrastructure</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#our">Our inftrastructure</a>
|
||||
<a href="{{ request.session.hosting_url }}#our">Our inftrastructure</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#price">Pricing</a>
|
||||
<a href="{{ request.session.hosting_url }}#price">Pricing</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#contact">Contact</a>
|
||||
<a href="{{ request.session.hosting_url }}#contact">Contact</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{% url 'hosting:login' %}?next={{request.current_path}}">Login</a>
|
||||
</li>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -123,21 +123,22 @@
|
|||
</li>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#how">How it works</a>
|
||||
<a href="{{ request.session.hosting_url}}#how">How it works</a>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#your">Your infrastructure</a></li>
|
||||
<a href="{{ request.session.hosting_url }}#your">Your infrastructure</a></li>
|
||||
<li>⋅</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#our">Our infrastructure</a></li>
|
||||
<a href="{{ request.session.hosting_url }}#our">Our infrastructure</a></li>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#services">Pricing</a>
|
||||
<a href="{{ request.session.hosting_url }}#services">Pricing</a>
|
||||
</li>
|
||||
<li class="footer-menu-divider">⋅</li>
|
||||
<li>
|
||||
<a href="{{ request.META.HTTP_REFERER }}#contact">Contact</a>
|
||||
<a href="{{ request.session.hosting_url }}#contact">Contact</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
|
||||
</div>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{% load staticfiles %}
|
||||
<a name="price"></a>
|
||||
<div class="content-section-b">
|
||||
<div class="container-fluid pricing-container">
|
||||
|
@ -6,7 +7,6 @@
|
|||
<hr class="section-heading-spacer">
|
||||
<div class="clearfix"></div>
|
||||
<h2 class="section-heading">Hosting Price</h2>
|
||||
<p class="lead">Here are samples of our {{ hosting_long }} hosting offers, suited for different projects. Our offer examples come in different size, speed, and storage. </p>
|
||||
</div>
|
||||
<!-- Title -->
|
||||
<div class="row">
|
||||
|
@ -17,17 +17,31 @@
|
|||
<!-- Page Features -->
|
||||
<div class="row text-center">
|
||||
|
||||
<div class="block col-md-offset-1">
|
||||
<div class="block col-md-offset-3">
|
||||
{% for vm in vm_types %}
|
||||
<div class="col-xs-12 col-sm-6 col-md-2">
|
||||
<div class="col-xs-12 col-sm-6 col-md-4">
|
||||
<form class="form-inline" method="POST" action="{{request.path}}">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="hosting_company" value="{{vm.hosting_company}}">
|
||||
<input type="hidden" name="hosting_company_name" value="{{vm.hosting_company_name}}">
|
||||
<ul class="pricing {% cycle 'p-green' 'p-yel' 'p-red' 'p-blue' %}">
|
||||
|
||||
|
||||
<ul class="pricing {% cycle 'p-red' 'p-black' 'p-red' 'p-yel' %}">
|
||||
<li class="type">
|
||||
<!-- <img src="http://bread.pp.ua/n/settings_g.svg" alt=""> -->
|
||||
<h3 >{{vm.hosting_company_name}}</h3>
|
||||
<br/>
|
||||
<img class="img-responsive" src="{{ STATIC_URL }}hosting/img/{{vm.location_code}}_flag.png" alt="">
|
||||
|
||||
</li>
|
||||
<li>
|
||||
<!-- Single button -->
|
||||
<div class="btn-group">
|
||||
<div class="form-group">
|
||||
<label for="cores">Location: </label>
|
||||
{{vm.location}}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<!-- Single button -->
|
||||
|
@ -64,7 +78,7 @@
|
|||
<div class="form-group row">
|
||||
<div class="col-xs-offset-1 col-xs-9 col-sm-12 col-md-12 col-md-offset-0">
|
||||
<label for="Disk Size">Disk Size: </label>
|
||||
<input class="form-control short-input text-center disk-space-selector" name="disk_space" type="number" id="{{vm.hosting_company}}-disk_space" min="10" value="10" data-vm-type="{{vm.hosting_company}}"/>
|
||||
<input class="form-control short-input text-center disk-space-selector" name="disk_space" type="number" id="{{vm.hosting_company}}-disk_space" min="10" value="10" step="10" data-vm-type="{{vm.hosting_company}}"/>
|
||||
<span>GiB</span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -75,7 +89,7 @@
|
|||
<span>per month</span>
|
||||
</li>
|
||||
<li>
|
||||
<button>Buy it</button>
|
||||
<button>Book it</button>
|
||||
</li>
|
||||
</ul>
|
||||
</form>
|
||||
|
|
|
@ -5,6 +5,17 @@
|
|||
<div class="intro-auth intro-login">
|
||||
<div class="container">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
|
||||
{% block messages %}
|
||||
{% if request.GET.logged_out %}
|
||||
<div class="alert alert-warning"> <!-- singular -->
|
||||
<a class="close" data-dismiss="alert">×</a>
|
||||
You haven been logged out
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
<div class="intro-message">
|
||||
<h2 class="section-heading">Login</h2>
|
||||
<form action="{% url 'hosting:login' %}" method="post" class="form" novalidate>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<div class="row">
|
||||
<div class="col-xs-8 col-xs-offset-2">
|
||||
<div class="invoice-title">
|
||||
<h2>Invoice</h2><h3 class="pull-right">Order # {{object.id}}</h3>
|
||||
<h2>Invoice</h2><h3 class="pull-right">Order # {{order.id}}</h3>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="row">
|
||||
|
@ -14,18 +14,18 @@
|
|||
<address>
|
||||
<h3><b>Billed To:</b></h3>
|
||||
{{user.name}}<br>
|
||||
{{object.billing_address.street_address}},{{order.billing_address.postal_code}}<br>
|
||||
{{object.billing_address.city}}, {{object.billing_address.country}}.
|
||||
{{order.billing_address.street_address}},{{order.billing_address.postal_code}}<br>
|
||||
{{order.billing_address.city}}, {{order.billing_address.country}}.
|
||||
</address>
|
||||
</div>
|
||||
<div class="col-xs-6 text-right">
|
||||
<address>
|
||||
<strong>Order Date:</strong><br>
|
||||
{{object.created_at}}<br><br>
|
||||
{{order.created_at}}<br><br>
|
||||
<strong>Status:</strong><br>
|
||||
<strong class="{% if object.status == 'Approved' %}text-success
|
||||
<strong class="{% if order.status == 'Approved' %}text-success
|
||||
{%else%} text-danger
|
||||
{% endif %}">{{object.status}}</strong>
|
||||
{% endif %}">{{order.status}}</strong>
|
||||
<br><br>
|
||||
</address>
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
|||
<div class="col-xs-6">
|
||||
<address>
|
||||
<strong>Payment Method:</strong><br>
|
||||
{{object.cc_brand}} ending **** {{object.last4}}<br>
|
||||
{{order.cc_brand}} ending **** {{order.last4}}<br>
|
||||
{{user.email}}
|
||||
</address>
|
||||
</div>
|
||||
|
@ -48,15 +48,15 @@
|
|||
<h3><b>Order summary</b></h3>
|
||||
<hr>
|
||||
<div class="content">
|
||||
<p><b>Type</b> <span class="pull-right">{{object.VMPlan.hosting_company_name}}</span></p>
|
||||
<p><b>Type</b> <span class="pull-right">{{order.vm_plan.hosting_company_name}}</span></p>
|
||||
<hr>
|
||||
<p><b>Cores</b> <span class="pull-right">{{object.VMPlan.cores}}</span></p>
|
||||
<p><b>Cores</b> <span class="pull-right">{{order.vm_plan.cores}}</span></p>
|
||||
<hr>
|
||||
<p><b>Memory</b> <span class="pull-right">{{object.VMPlan.memory}} GiB</span></p>
|
||||
<p><b>Memory</b> <span class="pull-right">{{order.vm_plan.memory}} GiB</span></p>
|
||||
<hr>
|
||||
<p><b>Disk space</b> <span class="pull-right">{{object.VMPlan.disk_size}} GiB</span></p>
|
||||
<p><b>Disk space</b> <span class="pull-right">{{order.vm_plan.disk_size}} GiB</span></p>
|
||||
<hr>
|
||||
<h4>Total<p class="pull-right"><b>{{object.VMPlan.price}} CHF</b></p></h4>
|
||||
<h4>Total<p class="pull-right"><b>{{order.vm_plan.price}} CHF</b></p></h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
<tr>
|
||||
<td scope="row">{{ order.id }}</td>
|
||||
<td>{{ order.created_at }}</td>
|
||||
<td>{{ order.VMPlan.price }} CHF</td>
|
||||
<td>{{ order.vm_plan.price }} CHF</td>
|
||||
<td>{% if order.approved %}
|
||||
<span class="text-success strong">Approved</span>
|
||||
{% else %}
|
||||
|
@ -55,7 +55,8 @@
|
|||
Your
|
||||
order?</h4>
|
||||
|
||||
<form method="post" action="{% url 'hosting:delete_order' order.id %}">
|
||||
<form method="post"
|
||||
action="{% url 'hosting:delete_order' order.id %}">
|
||||
{% csrf_token %}
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default"
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
<tr>
|
||||
<td scope="row">{{order.id}}</td>
|
||||
<td>{{order.created_at}}</td>
|
||||
<td>{{order.VMPlan.price}} CHF</td>
|
||||
<td>{{order.vm_plan.price}} CHF</td>
|
||||
<td>{% if order.approved %}
|
||||
<span class="text-success strong">Approved</span>
|
||||
{% else%}
|
||||
|
|
75
hosting/test_models.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
from django.test import TestCase
|
||||
|
||||
from django.core.management import call_command
|
||||
|
||||
|
||||
from .models import VirtualMachineType
|
||||
|
||||
|
||||
class VirtualMachineTypeModelTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.HETZNER_NUG_NAME = 'hetzner_nug'
|
||||
self.HETZNER_NAME = 'hetzner'
|
||||
self.HETZNER_RAID6_NAME = 'hetzner_raid6'
|
||||
self.HETZNER_GLUSTERFS_NAME = 'hetzner_glusterfs'
|
||||
self.BERN_NAME = 'bern'
|
||||
self.HETZNER_NUG_EXPECTED_PRICE = 79
|
||||
self.HETZNER_EXPECTED_PRICE = 180
|
||||
self.HETZNER_RAID6_EXPECTED_PRICE = 216
|
||||
self.HETZNER_GLUSTERFS_EXPECTED_PRICE = 252
|
||||
self.BERN_EXPECTED_PRICE = 202
|
||||
|
||||
call_command('create_vm_types')
|
||||
|
||||
def test_calculate_price(self):
|
||||
|
||||
# hetzner_nug
|
||||
specifications = {
|
||||
'cores': 2,
|
||||
'memory': 10,
|
||||
'disk_size': 100
|
||||
}
|
||||
vm_type = VirtualMachineType.objects.get(hosting_company=self.HETZNER_NUG_NAME)
|
||||
calculated_price = vm_type.calculate_price(specifications)
|
||||
self.assertEqual(calculated_price, self.HETZNER_NUG_EXPECTED_PRICE)
|
||||
|
||||
# hetzner
|
||||
specifications = {
|
||||
'cores': 2,
|
||||
'memory': 10,
|
||||
'disk_size': 100
|
||||
}
|
||||
vm_type = VirtualMachineType.objects.get(hosting_company=self.HETZNER_NAME)
|
||||
calculated_price = vm_type.calculate_price(specifications)
|
||||
self.assertEqual(calculated_price, self.HETZNER_EXPECTED_PRICE)
|
||||
|
||||
# hetzner_raid6
|
||||
specifications = {
|
||||
'cores': 2,
|
||||
'memory': 10,
|
||||
'disk_size': 100
|
||||
}
|
||||
vm_type = VirtualMachineType.objects.get(hosting_company=self.HETZNER_RAID6_NAME)
|
||||
calculated_price = vm_type.calculate_price(specifications)
|
||||
self.assertEqual(calculated_price, self.HETZNER_RAID6_EXPECTED_PRICE)
|
||||
|
||||
# hetzner_glusterfs
|
||||
specifications = {
|
||||
'cores': 2,
|
||||
'memory': 10,
|
||||
'disk_size': 100
|
||||
}
|
||||
vm_type = VirtualMachineType.objects.get(hosting_company=self.HETZNER_GLUSTERFS_NAME)
|
||||
calculated_price = vm_type.calculate_price(specifications)
|
||||
self.assertEqual(calculated_price, self.HETZNER_GLUSTERFS_EXPECTED_PRICE)
|
||||
|
||||
# bern
|
||||
specifications = {
|
||||
'cores': 2,
|
||||
'memory': 10,
|
||||
'disk_size': 100
|
||||
}
|
||||
vm_type = VirtualMachineType.objects.get(hosting_company=self.BERN_NAME)
|
||||
calculated_price = vm_type.calculate_price(specifications)
|
||||
self.assertEqual(calculated_price, self.BERN_EXPECTED_PRICE)
|
|
@ -1,8 +1,18 @@
|
|||
from django.test import TestCase
|
||||
from unittest import mock
|
||||
from django.conf import settings
|
||||
from django.test import TestCase, RequestFactory
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.urlresolvers import resolve
|
||||
from .models import VirtualMachineType
|
||||
from .views import DjangoHostingView, RailsHostingView, NodeJSHostingView
|
||||
|
||||
from model_mommy import mommy
|
||||
|
||||
|
||||
from membership.models import CustomUser, StripeCustomer
|
||||
from .models import VirtualMachineType, HostingOrder, VirtualMachinePlan
|
||||
from .views import DjangoHostingView, RailsHostingView, NodeJSHostingView, LoginView, SignupView, \
|
||||
PaymentVMView, OrdersHostingDetailView, OrdersHostingListView, VirtualMachineDetailView, \
|
||||
VirtualMachinesPlanListView
|
||||
from utils.tests import BaseTestCase
|
||||
|
||||
|
||||
class ProcessVMSelectionTestMixin(object):
|
||||
|
@ -70,3 +80,280 @@ class NodeJSHostingViewTest(TestCase, ProcessVMSelectionTestMixin):
|
|||
'email': "info@node-hosting.ch",
|
||||
'vm_types': VirtualMachineType.get_serialized_vm_types(),
|
||||
}
|
||||
|
||||
|
||||
class PaymentVMViewTest(BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PaymentVMViewTest, self).setUp()
|
||||
|
||||
self.view = PaymentVMView
|
||||
|
||||
# VM
|
||||
self.vm = mommy.make(VirtualMachineType, base_price=10000,
|
||||
memory_price=100,
|
||||
core_price=1000,
|
||||
disk_size_price=1)
|
||||
|
||||
# post data
|
||||
self.billing_address = {
|
||||
'street_address': 'street name',
|
||||
'city': 'MyCity',
|
||||
'postal_code': '32123123123123',
|
||||
'country': 'VE',
|
||||
'token': 'a23kfmslwxhkwis'
|
||||
}
|
||||
|
||||
# urls
|
||||
self.url = reverse('hosting:payment')
|
||||
|
||||
# Session data
|
||||
self.session_data = {
|
||||
'vm_specs': {
|
||||
'hosting_company': self.vm.hosting_company,
|
||||
'cores': 1,
|
||||
'memory': 10,
|
||||
'disk_size': 10000,
|
||||
'price': 22000,
|
||||
}
|
||||
}
|
||||
|
||||
session = self.customer_client.session
|
||||
session.update(self.session_data)
|
||||
session.save()
|
||||
|
||||
def test_url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
@mock.patch('utils.stripe_utils.StripeUtils.create_customer')
|
||||
def test_post(self, stripe_mocked_call):
|
||||
|
||||
# Anonymous user should get redirect to login
|
||||
response = self.client.post(self.url)
|
||||
expected_url = "%s?next=%s" % (reverse('hosting:login'), reverse('hosting:payment'))
|
||||
self.assertRedirects(response, expected_url=expected_url,
|
||||
status_code=302, target_status_code=200)
|
||||
|
||||
# Customer user should be able to pay
|
||||
stripe_mocked_call.return_value = {
|
||||
'paid': True,
|
||||
'response_object': self.stripe_mocked_customer,
|
||||
'error': None
|
||||
}
|
||||
response = self.customer_client.post(self.url, self.billing_address)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(StripeCustomer.objects.filter(user__email=self.customer.email).exists())
|
||||
stripe_customer = StripeCustomer.objects.get(user__email=self.customer.email)
|
||||
self.assertEqual(stripe_customer.user, self.customer)
|
||||
self.assertTrue(HostingOrder.objects.filter(customer=stripe_customer).exists())
|
||||
hosting_order = HostingOrder.objects.filter(customer=stripe_customer)[0]
|
||||
vm_plan = {
|
||||
'cores': hosting_order.vm_plan.cores,
|
||||
'memory': hosting_order.vm_plan.memory,
|
||||
'disk_size': hosting_order.vm_plan.disk_size,
|
||||
'price': hosting_order.vm_plan.price,
|
||||
'hosting_company': hosting_order.vm_plan.vm_type.hosting_company
|
||||
}
|
||||
self.assertEqual(vm_plan, self.session_data.get('vm_specs'))
|
||||
|
||||
def test_get(self):
|
||||
|
||||
# Anonymous user should get redirect to login
|
||||
response = self.client.get(self.url)
|
||||
expected_url = "%s?next=%s" % (reverse('hosting:login'), reverse('hosting:payment'))
|
||||
self.assertRedirects(response, expected_url=expected_url,
|
||||
status_code=302, target_status_code=200)
|
||||
|
||||
# Logged user should get the page
|
||||
response = self.customer_client.get(self.url, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context['stripe_key'],
|
||||
settings.STRIPE_API_PUBLIC_KEY)
|
||||
|
||||
|
||||
class VirtualMachineDetailViewTest(BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(VirtualMachineDetailViewTest, self).setUp()
|
||||
|
||||
self.stripe_customer = mommy.make(StripeCustomer, user=self.customer)
|
||||
self.vm = mommy.make(VirtualMachinePlan)
|
||||
self.order = mommy.make(HostingOrder, customer=self.stripe_customer, vm_plan=self.vm)
|
||||
self.url = reverse('hosting:virtual_machines', kwargs={'pk': self.vm.id})
|
||||
self.view = VirtualMachineDetailView()
|
||||
self.expected_template = 'hosting/virtual_machine_detail.html'
|
||||
|
||||
def url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_get(self):
|
||||
|
||||
# Anonymous user should get redirect to login
|
||||
response = self.client.get(self.url)
|
||||
expected_url = "%s?next=%s" % (reverse('hosting:login'),
|
||||
reverse('hosting:virtual_machines',
|
||||
kwargs={'pk': self.vm.id}))
|
||||
self.assertRedirects(response, expected_url=expected_url,
|
||||
status_code=302, target_status_code=200)
|
||||
|
||||
# Customer should be able to get data
|
||||
response = self.customer_client.get(self.url, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context['virtual_machine'], self.vm)
|
||||
self.assertTemplateUsed(response, self.expected_template)
|
||||
|
||||
|
||||
class VirtualMachinesPlanListViewTest(BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(VirtualMachinesPlanListViewTest, self).setUp()
|
||||
|
||||
self.stripe_customer = mommy.make(StripeCustomer, user=self.customer)
|
||||
mommy.make(HostingOrder, customer=self.stripe_customer, approved=True, _quantity=20)
|
||||
_vms = VirtualMachinePlan.objects.all()
|
||||
self.vms = sorted(_vms, key=lambda vm: vm.id, reverse=True)
|
||||
self.url = reverse('hosting:virtual_machines')
|
||||
self.view = VirtualMachinesPlanListView()
|
||||
self.expected_template = 'hosting/virtual_machines.html'
|
||||
|
||||
def url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_get(self):
|
||||
|
||||
# Anonymous user should get redirect to login
|
||||
response = self.client.get(self.url)
|
||||
expected_url = "%s?next=%s" % (reverse('hosting:login'),
|
||||
reverse('hosting:virtual_machines'))
|
||||
self.assertRedirects(response, expected_url=expected_url,
|
||||
status_code=302, target_status_code=200)
|
||||
|
||||
# Customer should be able to get his orders
|
||||
response = self.customer_client.get(self.url, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(list(response.context['vms']), self.vms[:10])
|
||||
self.assertTemplateUsed(response, self.expected_template)
|
||||
|
||||
|
||||
class OrderHostingDetailViewTest(BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(OrderHostingDetailViewTest, self).setUp()
|
||||
|
||||
self.stripe_customer = mommy.make(StripeCustomer, user=self.customer)
|
||||
self.order = mommy.make(HostingOrder, customer=self.stripe_customer)
|
||||
self.url = reverse('hosting:orders', kwargs={'pk': self.order.id})
|
||||
self.view = OrdersHostingDetailView()
|
||||
self.expected_template = 'hosting/order_detail.html'
|
||||
|
||||
def url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_get(self):
|
||||
|
||||
# Anonymous user should get redirect to login
|
||||
response = self.client.get(self.url)
|
||||
expected_url = "%s?next=%s" % (reverse('hosting:login'),
|
||||
reverse('hosting:orders', kwargs={'pk': self.order.id}))
|
||||
self.assertRedirects(response, expected_url=expected_url,
|
||||
status_code=302, target_status_code=200)
|
||||
|
||||
# Customer should be able to get data
|
||||
response = self.customer_client.get(self.url, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.context['order'], self.order)
|
||||
self.assertTemplateUsed(response, self.expected_template)
|
||||
|
||||
|
||||
class OrdersHostingListViewTest(BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(OrdersHostingListViewTest, self).setUp()
|
||||
|
||||
self.stripe_customer = mommy.make(StripeCustomer, user=self.customer)
|
||||
_orders = mommy.make(HostingOrder, customer=self.stripe_customer, _quantity=20)
|
||||
self.orders = sorted(_orders, key=lambda order: order.id, reverse=True)
|
||||
self.url = reverse('hosting:orders')
|
||||
self.view = OrdersHostingListView()
|
||||
self.expected_template = 'hosting/orders.html'
|
||||
|
||||
def url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_get(self):
|
||||
|
||||
# Anonymous user should get redirect to login
|
||||
response = self.client.get(self.url)
|
||||
expected_url = "%s?next=%s" % (reverse('hosting:login'), reverse('hosting:orders'))
|
||||
self.assertRedirects(response, expected_url=expected_url,
|
||||
status_code=302, target_status_code=200)
|
||||
|
||||
# Customer should be able to get his orders
|
||||
response = self.customer_client.get(self.url, follow=True)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(list(response.context['orders']), self.orders[:10])
|
||||
self.assertTemplateUsed(response, self.expected_template)
|
||||
|
||||
|
||||
class LoginViewTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.url = reverse('hosting:login')
|
||||
self.view = LoginView
|
||||
self.expected_template = 'hosting/login.html'
|
||||
self.user = mommy.make('membership.CustomUser')
|
||||
self.password = 'fake_password'
|
||||
self.user.set_password(self.password)
|
||||
self.user.save()
|
||||
|
||||
def test_url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_get(self):
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, self.expected_template)
|
||||
|
||||
def test_anonymous_user_can_login(self):
|
||||
data = {
|
||||
'email': self.user.email,
|
||||
'password': self.password
|
||||
}
|
||||
response = self.client.post(self.url, data=data, follow=True)
|
||||
self.assertEqual(response.context['user'], self.user)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
class SignupViewTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.url = reverse('hosting:signup')
|
||||
self.expected_template = 'hosting/signup.html'
|
||||
self.view = SignupView
|
||||
self.signup_data = {
|
||||
'name': 'ungleich',
|
||||
'email': 'test@ungleich.com',
|
||||
'password': 'fake_password',
|
||||
'confirm_password': 'fake_password',
|
||||
}
|
||||
|
||||
def test_url_resolve_to_view_correctly(self):
|
||||
found = resolve(self.url)
|
||||
self.assertEqual(found.func.__name__, self.view.__name__)
|
||||
|
||||
def test_get(self):
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, self.expected_template)
|
||||
|
||||
def test_anonymous_user_can_signup(self):
|
||||
response = self.client.post(self.url, data=self.signup_data, follow=True)
|
||||
self.user = CustomUser.objects.get(email=self.signup_data.get('email'))
|
||||
self.assertEqual(response.context['user'], self.user)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
|
|
@ -3,7 +3,7 @@ from django.conf.urls import url
|
|||
from .views import DjangoHostingView, RailsHostingView, PaymentVMView, \
|
||||
NodeJSHostingView, LoginView, SignupView, IndexView, \
|
||||
OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\
|
||||
VirtualMachineDetailListView,OrdersHostingDeleteView
|
||||
OrdersHostingDeleteView,VirtualMachineDetailView
|
||||
|
||||
urlpatterns = [
|
||||
# url(r'pricing/?$', VMPricingView.as_view(), name='pricing'),
|
||||
|
@ -16,10 +16,10 @@ urlpatterns = [
|
|||
url(r'orders/(?P<pk>\d+)/?$', OrdersHostingDetailView.as_view(), name='orders'),
|
||||
url(r'cancel_order/(?P<pk>\d+)/?$',OrdersHostingDeleteView.as_view(),name='delete_order'),
|
||||
url(r'my-virtual-machines/?$', VirtualMachinesPlanListView.as_view(), name='virtual_machines'),
|
||||
url(r'my-virtual-machines/(?P<pk>\d+)/?$', VirtualMachineDetailListView.as_view(),
|
||||
url(r'my-virtual-machines/(?P<pk>\d+)/?$', VirtualMachineDetailView.as_view(),
|
||||
name='virtual_machines'),
|
||||
url(r'login/?$', LoginView.as_view(), name='login'),
|
||||
url(r'signup/?$', SignupView.as_view(), name='signup'),
|
||||
url(r'^logout/?$', 'django.contrib.auth.views.logout',
|
||||
{'next_page': '/ungleich_page'}, name='logout')
|
||||
{'next_page': '/hosting/login?logged_out=true'}, name='logout')
|
||||
]
|
||||
|
|
|
@ -29,10 +29,11 @@ class DjangoHostingView(ProcessVMSelectionMixin, View):
|
|||
'email': "info@django-hosting.ch",
|
||||
'vm_types': VirtualMachineType.get_serialized_vm_types(),
|
||||
}
|
||||
|
||||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
|
||||
request.session['hosting_url'] = reverse('hosting:djangohosting')
|
||||
context = self.get_context_data()
|
||||
|
||||
return render(request, self.template_name, context)
|
||||
|
@ -53,6 +54,7 @@ class RailsHostingView(ProcessVMSelectionMixin, View):
|
|||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
request.session['hosting_url'] = reverse('hosting:railshosting')
|
||||
context = self.get_context_data()
|
||||
return render(request, self.template_name, context)
|
||||
|
||||
|
@ -72,7 +74,7 @@ class NodeJSHostingView(ProcessVMSelectionMixin, View):
|
|||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
|
||||
request.session['hosting_url'] = reverse('hosting:nodejshosting')
|
||||
context = self.get_context_data()
|
||||
|
||||
return render(request, self.template_name, context)
|
||||
|
@ -143,8 +145,9 @@ class SignupView(CreateView):
|
|||
return HttpResponseRedirect(self.get_success_url())
|
||||
|
||||
|
||||
class PaymentVMView(FormView):
|
||||
class PaymentVMView(LoginRequiredMixin, FormView):
|
||||
template_name = 'hosting/payment.html'
|
||||
login_url = reverse_lazy('hosting:login')
|
||||
form_class = BillingAddressForm
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
@ -183,7 +186,7 @@ class PaymentVMView(FormView):
|
|||
billing_address = form.save()
|
||||
|
||||
# Create a Hosting Order
|
||||
order = HostingOrder.create(VMPlan=plan, customer=customer,
|
||||
order = HostingOrder.create(vm_plan=plan, customer=customer,
|
||||
billing_address=billing_address)
|
||||
|
||||
# Make stripe charge to a customer
|
||||
|
@ -219,6 +222,7 @@ class PaymentVMView(FormView):
|
|||
|
||||
class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
||||
template_name = "hosting/order_detail.html"
|
||||
context_object_name = "order"
|
||||
login_url = reverse_lazy('hosting:login')
|
||||
model = HostingOrder
|
||||
|
||||
|
@ -229,6 +233,7 @@ class OrdersHostingListView(LoginRequiredMixin, ListView):
|
|||
context_object_name = "orders"
|
||||
model = HostingOrder
|
||||
paginate_by = 10
|
||||
ordering = '-id'
|
||||
|
||||
def get_queryset(self):
|
||||
user = self.request.user
|
||||
|
@ -250,6 +255,7 @@ class VirtualMachinesPlanListView(LoginRequiredMixin, ListView):
|
|||
context_object_name = "vms"
|
||||
model = VirtualMachinePlan
|
||||
paginate_by = 10
|
||||
ordering = '-id'
|
||||
|
||||
def get_queryset(self):
|
||||
user = self.request.user
|
||||
|
@ -257,7 +263,7 @@ class VirtualMachinesPlanListView(LoginRequiredMixin, ListView):
|
|||
return super(VirtualMachinesPlanListView, self).get_queryset()
|
||||
|
||||
|
||||
class VirtualMachineDetailListView(LoginRequiredMixin, DetailView):
|
||||
class VirtualMachineDetailView(LoginRequiredMixin, DetailView):
|
||||
template_name = "hosting/virtual_machine_detail.html"
|
||||
login_url = reverse_lazy('hosting:login')
|
||||
model = VirtualMachinePlan
|
||||
|
|
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 338 KiB |
After Width: | Height: | Size: 442 B |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 767 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 455 B |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 767 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 438 B |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 797 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.8 KiB |
|
@ -1,3 +1,4 @@
|
|||
from django.contrib import admin
|
||||
from .models import CustomUser
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(CustomUser)
|
||||
|
|
Before Width: | Height: | Size: 473 KiB After Width: | Height: | Size: 473 KiB |
Before Width: | Height: | Size: 2.5 MiB After Width: | Height: | Size: 2.5 MiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
BIN
non_django_but_related/mindmap/webapp.vym
Normal file
342
opens
|
@ -1,342 +0,0 @@
|
|||
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libutil.so.1", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libexpat.so.1", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/dev/urandom", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/bin/pyvenv.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/pyvenv.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)
|
||||
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/encodings/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/codecs.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/encodings/__pycache__/aliases.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/encodings/__pycache__/ascii.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/encodings/__pycache__/utf_8.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/encodings/__pycache__/latin_1.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/io.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/abc.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/_weakrefset.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/site.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/os.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/stat.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/posixpath.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/genericpath.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/_collections_abc.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/_sitebuiltins.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/re.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/sre_compile.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/sre_parse.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/sre_constants.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/copyreg.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/pyvenv.cfg", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/_bootlocale.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/easy-install.pth", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/sysconfig.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/_sysconfigdata.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/__pycache__/_sysconfigdata_m.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/easy-install.pth", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/sitecustomize.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("manage.py", O_RDONLY) = 3
|
||||
open("manage.py", O_RDONLY) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/collections/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/operator.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/keyword.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/heapq.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/reprlib.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/importlib/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/types.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/warnings.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/optparse.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/textwrap.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/gettext.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/locale.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/functools.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/weakref.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/copy.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/struct.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/apps/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/apps/__pycache__/config.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/__pycache__/exceptions.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/six.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/__future__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/encoding.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/datetime.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/decimal.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/numbers.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/threading.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/traceback.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/linecache.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/tokenize.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/token.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/lib-dynload/_decimal.cpython-34m-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/x86_64-linux-gnu/libmpdec.so.2", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/functional.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/deprecation.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/inspect.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/ast.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/importlib/__pycache__/machinery.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/dis.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/opcode.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/lib-dynload/_opcode.cpython-34m-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/urllib/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/urllib/__pycache__/parse.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/module_loading.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/imp.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/importlib/__pycache__/util.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/contextlib.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/_os.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/tempfile.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/shutil.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/fnmatch.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/tarfile.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/bz2.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/lib-dynload/_bz2.cpython-34m-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libbz2.so.1.0", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/random.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/__pycache__/hashlib.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/python3.4/lib-dynload/_hashlib.cpython-34m-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/dev/urandom", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/apps/__pycache__/registry.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/lru_cache.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/conf/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/conf/__pycache__/global_settings.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__pycache__/base.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/checks/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/checks/__pycache__/messages.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/checks/__pycache__/registry.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/itercompat.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/checks/compatibility/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/checks/compatibility/__pycache__/django_1_6_0.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/checks/compatibility/__pycache__/django_1_7_0.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/checks/__pycache__/model_checks.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__pycache__/color.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/termcolors.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/version.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/subprocess.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/selectors.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/app/dynamicweb/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/app/dynamicweb/settings/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/commands/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/commands/__pycache__/migrate.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__pycache__/sql.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/__pycache__/signals.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/dispatch/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/dispatch/__pycache__/dispatcher.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/__pycache__/utils.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/pkgutil.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/query.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/__pycache__/transaction.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/decorators.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/constants.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/fields/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/base64.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/lookups.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/timezone.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/pytz/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/__pycache__/pkg_resources.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/zipfile.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/lzma.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/lib-dynload/_lzma.cpython-34m-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/lib/x86_64-linux-gnu/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/symbol.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/platform.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/plistlib.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/enum.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/xml/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/xml/parsers/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/xml/parsers/__pycache__/expat.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/parser.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/feedparser.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/errors.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/message.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/uu.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/quopri.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/utils.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/socket.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/_parseaddr.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/calendar.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/charset.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/base64mime.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/quoprimime.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/string.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/encoders.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/_policybase.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/header.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/_encoded_words.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/email/__pycache__/iterators.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/lib-dynload/parser.cpython-34m-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/pytz/__pycache__/exceptions.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/pytz/__pycache__/lazy.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/pytz/__pycache__/tzinfo.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/bisect.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/pytz/__pycache__/tzfile.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/query_utils.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/backends/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/backends/__pycache__/signals.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/backends/__pycache__/utils.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/logging/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/tree.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/forms/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/forms/__pycache__/fields.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/__pycache__/validators.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/deconstruct.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/translation/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/ipv6.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/forms/__pycache__/utils.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/json/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/json/__pycache__/decoder.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/json/__pycache__/scanner.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/lib-dynload/_json.cpython-34m-x86_64-linux-gnu.so", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/json/__pycache__/encoder.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/html.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/safestring.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/text.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/gzip.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/html/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/html/__pycache__/entities.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/html_parser.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/html/__pycache__/parser.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/_markupbase.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/forms/__pycache__/widgets.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/datastructures.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/formats.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/dateformat.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/dates.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/numberformat.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/datetime_safe.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/forms/__pycache__/forms.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/forms/__pycache__/formsets.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/forms/__pycache__/models.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/dateparse.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/deletion.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/signals.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/datastructures.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/subqueries.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/constants.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/query.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/aggregates.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/expressions.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/related.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/aggregates.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/expressions.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/sql/__pycache__/where.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/manager.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/base.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/fields/__pycache__/related.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/__pycache__/options.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/fields/__pycache__/proxy.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/fields/__pycache__/subclassing.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/fields/__pycache__/files.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/files/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/files/__pycache__/base.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/files/__pycache__/utils.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/files/__pycache__/storage.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/files/__pycache__/locks.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/files/__pycache__/move.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/utils/__pycache__/crypto.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/__pycache__/hmac.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/files/__pycache__/images.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/__pycache__/migration.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/operations/__pycache__/__init__.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/operations/__pycache__/models.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/__pycache__/state.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/operations/__pycache__/base.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/operations/__pycache__/fields.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/operations/__pycache__/special.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/__pycache__/executor.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/__pycache__/loader.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/__pycache__/recorder.cpython-34.pyc", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("manage.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/usr/lib/python3.4/importlib/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/app/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/django-select2/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/circus-master/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/app/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/django-select2/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/circus-master/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/app/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/django-select2/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/circus-master/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/app/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/django-select2/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/circus-master/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/app/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/django-select2/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/circus-master/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/app/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/django-select2/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/circus-master/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/app/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/django-select2/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/src/circus-master/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/plat-x86_64-linux-gnu/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/usr/lib/python3.4/lib-dynload/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/<frozen importlib._bootstrap>", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/core/management/commands/migrate.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/executor.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/loader.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/recorder.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/recorder.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/migrations/recorder.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/fields/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/db/models/fields/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/conf/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/conf/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
open("/home/app/pyvenv/lib/python3.4/site-packages/django/conf/__init__.py", O_RDONLY|O_CLOEXEC) = 4
|
||||
+++ exited with 1 +++
|
|
@ -16,6 +16,7 @@ psycopg2
|
|||
django-mptt
|
||||
easy_thumbnails
|
||||
django-polymorphic
|
||||
model-mommy
|
||||
|
||||
#PLUGINS
|
||||
djangocms_flash
|
||||
|
|
|
@ -33,7 +33,7 @@ class PostListViewUngleich(PostListView):
|
|||
|
||||
def get_queryset(self):
|
||||
language = get_language()
|
||||
queryset = self.model.objects.translated(language)
|
||||
queryset = self.model.objects.filter(publish=True).translated(language)
|
||||
setattr(self.request, get_setting('CURRENT_NAMESPACE'), self.config)
|
||||
return queryset
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from django.test import TestCase
|
||||
from .forms import ContactUsForm
|
||||
from .forms import ContactUsForm, BillingAddressForm
|
||||
|
||||
|
||||
class ContactUsFormTest(TestCase):
|
||||
|
@ -23,3 +23,27 @@ class ContactUsFormTest(TestCase):
|
|||
def test_invalid_form(self):
|
||||
form = ContactUsForm(data=self.incompleted_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
|
||||
class BillingAddressFormTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.completed_data = {
|
||||
'street_address': 'street name',
|
||||
'city': 'MyCity',
|
||||
'postal_code': '32123123123123',
|
||||
'country': 'VE',
|
||||
'token': 'a23kfmslwxhkwis'
|
||||
}
|
||||
|
||||
self.incompleted_data = {
|
||||
'street_address': 'test',
|
||||
}
|
||||
|
||||
def test_valid_form(self):
|
||||
form = BillingAddressForm(data=self.completed_data)
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_invalid_form(self):
|
||||
form = BillingAddressForm(data=self.incompleted_data)
|
||||
self.assertFalse(form.is_valid())
|
||||
|
|
|
@ -1,3 +1,66 @@
|
|||
from django.test import TestCase
|
||||
from django.test import Client
|
||||
from model_mommy import mommy
|
||||
|
||||
# Create your tests here.
|
||||
|
||||
class BaseTestCase(TestCase):
|
||||
"""
|
||||
Base class to initialize the test cases
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
|
||||
# Password
|
||||
self.dummy_password = 'test_password'
|
||||
|
||||
# Users
|
||||
self.customer, self.another_customer = mommy.make('membership.CustomUser',
|
||||
_quantity=2)
|
||||
self.customer.set_password(self.dummy_password)
|
||||
self.customer.save()
|
||||
self.another_customer.set_password(self.dummy_password)
|
||||
self.another_customer.save()
|
||||
|
||||
# Stripe mocked data
|
||||
self.stripe_mocked_customer = self.customer_stripe_mocked_data()
|
||||
|
||||
# Clients
|
||||
self.customer_client = self.get_client(self.customer)
|
||||
self.another_customer_client = self.get_client(self.another_customer)
|
||||
|
||||
def get_client(self, user):
|
||||
"""
|
||||
Authenticate a user and return the client
|
||||
"""
|
||||
client = Client()
|
||||
client.login(email=user.email, password=self.dummy_password)
|
||||
return client
|
||||
|
||||
def customer_stripe_mocked_data(self):
|
||||
return {
|
||||
"id": "cus_8R1y9UWaIIjZqr",
|
||||
"object": "customer",
|
||||
"currency": "usd",
|
||||
"default_source": "card_18A9up2eZvKYlo2Cq2RJMGeF",
|
||||
"email": "vmedixtodd+1@gmail.com",
|
||||
"livemode": False,
|
||||
"metadata": {
|
||||
},
|
||||
"shipping": None,
|
||||
"sources": {
|
||||
"object": "list",
|
||||
"data": [{
|
||||
"id": "card_18A9up2eZvKYlo2Cq2RJMGeF",
|
||||
"object": "card",
|
||||
"brand": "Visa",
|
||||
"country": "US",
|
||||
"customer": "cus_8R1y9UWaIIjZqr",
|
||||
"cvc_check": "pass",
|
||||
"dynamic_last4": None,
|
||||
"exp_month": 12,
|
||||
"exp_year": 2018,
|
||||
"funding": "credit",
|
||||
"last4": "4242",
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
|