resolve conflicts
|
@ -70,7 +70,7 @@ def letscowork(request):
|
||||||
|
|
||||||
def blog(request):
|
def blog(request):
|
||||||
tags = ["digitalglarus"]
|
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 = {
|
context = {
|
||||||
'post_list': posts,
|
'post_list': posts,
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,18 +84,18 @@ INSTALLED_APPS = (
|
||||||
'djangocms_file',
|
'djangocms_file',
|
||||||
'djangocms_picture',
|
'djangocms_picture',
|
||||||
'djangocms_video',
|
'djangocms_video',
|
||||||
# 'djangocms_flash',
|
'djangocms_flash',
|
||||||
# 'djangocms_googlemap',
|
'djangocms_googlemap',
|
||||||
# 'djangocms_inherit',
|
'djangocms_inherit',
|
||||||
# 'djangocms_link',
|
'djangocms_link',
|
||||||
# 'djangocms_teaser',
|
'djangocms_teaser',
|
||||||
'djangocms_page_meta',
|
'djangocms_page_meta',
|
||||||
'djangocms_text_ckeditor',
|
'djangocms_text_ckeditor',
|
||||||
'djangocms_admin_style',
|
'djangocms_admin_style',
|
||||||
'cmsplugin_filer_file',
|
'cmsplugin_filer_file',
|
||||||
'cmsplugin_filer_folder',
|
'cmsplugin_filer_folder',
|
||||||
'cmsplugin_filer_link',
|
'cmsplugin_filer_link',
|
||||||
# 'cmsplugin_filer_teaser',
|
'cmsplugin_filer_teaser',
|
||||||
'cmsplugin_filer_video',
|
'cmsplugin_filer_video',
|
||||||
#
|
#
|
||||||
# blog
|
# blog
|
||||||
|
@ -103,7 +103,7 @@ INSTALLED_APPS = (
|
||||||
'reversion',
|
'reversion',
|
||||||
# ungleich
|
# ungleich
|
||||||
'ungleich',
|
'ungleich',
|
||||||
'ungleich_page',
|
# 'ungleich_page',
|
||||||
'hosting',
|
'hosting',
|
||||||
'digitalglarus',
|
'digitalglarus',
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ CMS_TEMPLATES = (
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||||
'NAME': 'app',
|
'NAME': 'app_new',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,12 +280,12 @@ CACHES = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if LOGIN_URL is None:
|
#if LOGIN_URL is None:
|
||||||
LOGIN_URL = APP_ROOT_ENDPOINT + 'login/'
|
# LOGIN_URL = APP_ROOT_ENDPOINT + 'login/'
|
||||||
if LOGOUT_URL is None:
|
#if LOGOUT_URL is None:
|
||||||
LOGOUT_URL = APP_ROOT_ENDPOINT + 'logout/'
|
# LOGOUT_URL = APP_ROOT_ENDPOINT + 'logout/'
|
||||||
if LOGIN_REDIRECT_URL is None:
|
#if LOGIN_REDIRECT_URL is None:
|
||||||
LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
|
# LOGIN_REDIRECT_URL = APP_ROOT_ENDPOINT
|
||||||
|
|
||||||
# Static files (CSS, JavaScript, Images)
|
# Static files (CSS, JavaScript, Images)
|
||||||
# https://docs.djangoproject.com/en/1.7/howto/static-files/
|
# https://docs.djangoproject.com/en/1.7/howto/static-files/
|
||||||
|
@ -302,7 +302,7 @@ META_SITE_PROTOCOL = 'http'
|
||||||
META_USE_SITES = True
|
META_USE_SITES = True
|
||||||
MIGRATION_MODULES = {
|
MIGRATION_MODULES = {
|
||||||
'cms': 'cms.migrations',
|
'cms': 'cms.migrations',
|
||||||
# 'filer': 'filer.migrations_django',
|
#'filer': 'filer.migrations_django',
|
||||||
# 'menus': 'menus.migrations_django',
|
# 'menus': 'menus.migrations_django',
|
||||||
'djangocms_flash': 'djangocms_flash.migrations_django',
|
'djangocms_flash': 'djangocms_flash.migrations_django',
|
||||||
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
|
'djangocms_googlemap': 'djangocms_googlemap.migrations_django',
|
||||||
|
@ -337,6 +337,7 @@ STATICFILES_FINDERS = (
|
||||||
THUMBNAIL_PROCESSORS = (
|
THUMBNAIL_PROCESSORS = (
|
||||||
'easy_thumbnails.processors.colorspace',
|
'easy_thumbnails.processors.colorspace',
|
||||||
'easy_thumbnails.processors.autocrop',
|
'easy_thumbnails.processors.autocrop',
|
||||||
|
#'easy_thumbnails.processors.scale_and_crop',
|
||||||
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
|
'filer.thumbnail_processors.scale_and_crop_with_subject_location',
|
||||||
'easy_thumbnails.processors.filters',
|
'easy_thumbnails.processors.filters',
|
||||||
)
|
)
|
||||||
|
@ -442,6 +443,12 @@ PARLER_LANGUAGES = {1: ({'code': 'en-us'}, {'code': 'de'},)}
|
||||||
AUTH_USER_MODEL = 'membership.CustomUser'
|
AUTH_USER_MODEL = 'membership.CustomUser'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ALLOWED_HOSTS = [
|
||||||
|
"*"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
# PAYMENT
|
# PAYMENT
|
||||||
|
|
||||||
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
|
STRIPE_DESCRIPTION_ON_PAYMENT = "Payment for ungleich GmbH services"
|
||||||
|
|
|
@ -3,10 +3,12 @@ from .base import *
|
||||||
ADMINS = (
|
ADMINS = (
|
||||||
('Nico Schottelius', 'nico.schottelius@ungleich.ch'),
|
('Nico Schottelius', 'nico.schottelius@ungleich.ch'),
|
||||||
('Raul Ascencio', 'raul.ascencio@yandex.com'),
|
('Raul Ascencio', 'raul.ascencio@yandex.com'),
|
||||||
|
('Tomislav Rupcic','tmslav@gmail.com'),
|
||||||
|
|
||||||
)
|
)
|
||||||
# ('Sanghee Kim', 'sanghee.kim@ungleich.ch'),
|
# ('Sanghee Kim', 'sanghee.kim@ungleich.ch'),
|
||||||
|
|
||||||
MANAGERS = ADMINS
|
#MANAGERS = ADMINS
|
||||||
|
|
||||||
REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='digitalglarus.ungleich.ch',slug='{slug}')
|
REGISTRATION_MESSAGE['message'] = REGISTRATION_MESSAGE['message'].format(host='digitalglarus.ungleich.ch',slug='{slug}')
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from .models import RailsBetaUser, VirtualMachineType
|
from .models import VirtualMachineType
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(RailsBetaUser)
|
|
||||||
admin.site.register(VirtualMachineType)
|
admin.site.register(VirtualMachineType)
|
||||||
|
|
|
@ -10,41 +10,43 @@ class Command(BaseCommand):
|
||||||
hetzner = {
|
hetzner = {
|
||||||
'base_price': 10,
|
'base_price': 10,
|
||||||
'core_price': 10,
|
'core_price': 10,
|
||||||
'memory_price': 10,
|
'memory_price': 5,
|
||||||
'disk_size_price': 10,
|
'disk_size_price': 1,
|
||||||
'description': 'VM auf einzelner HW, Raid1, kein HA'
|
'description': 'VM auf einzelner HW, Raid1, kein HA',
|
||||||
|
'location':'DE'
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'hetzner_nug': {
|
# 'hetzner_nug': {
|
||||||
'base_price': 5,
|
# 'base_price': 5,
|
||||||
'memory_price': 2,
|
# 'memory_price': 2,
|
||||||
'core_price': 2,
|
# 'core_price': 2,
|
||||||
'disk_size_price': 0.5,
|
# 'disk_size_price': 0.5,
|
||||||
'description': 'VM ohne Uptime Garantie'
|
# 'description': 'VM ohne Uptime Garantie'
|
||||||
},
|
# },
|
||||||
'hetzner': hetzner,
|
'hetzner': hetzner,
|
||||||
'hetzner_raid6': {
|
# 'hetzner_raid6': {
|
||||||
'base_price': hetzner['base_price']*1.2,
|
# 'base_price': hetzner['base_price']*1.2,
|
||||||
'core_price': hetzner['core_price']*1.2,
|
# 'core_price': hetzner['core_price']*1.2,
|
||||||
'memory_price': hetzner['memory_price']*1.2,
|
# 'memory_price': hetzner['memory_price']*1.2,
|
||||||
'disk_size_price': hetzner['disk_size_price']*1.2,
|
# 'disk_size_price': hetzner['disk_size_price']*1.2,
|
||||||
'description': 'VM auf einzelner HW, Raid1, kein HA'
|
# 'description': 'VM auf einzelner HW, Raid1, kein HA'
|
||||||
|
|
||||||
},
|
# },
|
||||||
'hetzner_glusterfs': {
|
# 'hetzner_glusterfs': {
|
||||||
'base_price': hetzner['base_price']*1.4,
|
# 'base_price': hetzner['base_price']*1.4,
|
||||||
'core_price': hetzner['core_price']*1.4,
|
# 'core_price': hetzner['core_price']*1.4,
|
||||||
'memory_price': hetzner['memory_price']*1.4,
|
# 'memory_price': hetzner['memory_price']*1.4,
|
||||||
'disk_size_price': hetzner['disk_size_price']*1.4,
|
# 'disk_size_price': hetzner['disk_size_price']*1.4,
|
||||||
'description': 'VM auf einzelner HW, Raid1, kein HA'
|
# 'description': 'VM auf einzelner HW, Raid1, kein HA'
|
||||||
},
|
# },
|
||||||
'bern': {
|
'bern': {
|
||||||
'base_price': 12,
|
'base_price': 12,
|
||||||
'core_price': 25,
|
'core_price': 25,
|
||||||
'memory_price': 7,
|
'memory_price': 7,
|
||||||
'disk_size_price': 0.70,
|
'disk_size_price': 0.70,
|
||||||
'description': "VM in Bern, HA Setup ohne HA Garantie",
|
'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
|
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):
|
class VirtualMachineType(models.Model):
|
||||||
|
|
||||||
HETZNER_NUG = 'hetzner_nug'
|
HETZNER_NUG = 'hetzner_nug'
|
||||||
|
@ -25,6 +17,8 @@ class VirtualMachineType(models.Model):
|
||||||
HETZNER_R6 = 'hetzner_raid6'
|
HETZNER_R6 = 'hetzner_raid6'
|
||||||
HETZNER_G = 'hetzner_glusterfs'
|
HETZNER_G = 'hetzner_glusterfs'
|
||||||
BERN = 'bern'
|
BERN = 'bern'
|
||||||
|
DE_LOCATION = 'DE'
|
||||||
|
CH_LOCATION = 'CH'
|
||||||
|
|
||||||
HOSTING_TYPES = (
|
HOSTING_TYPES = (
|
||||||
(HETZNER_NUG, 'Hetzner No Uptime Guarantee'),
|
(HETZNER_NUG, 'Hetzner No Uptime Guarantee'),
|
||||||
|
@ -34,12 +28,17 @@ class VirtualMachineType(models.Model):
|
||||||
(BERN, 'Bern'),
|
(BERN, 'Bern'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
LOCATIONS_CHOICES = (
|
||||||
|
(DE_LOCATION, 'Germany'),
|
||||||
|
(CH_LOCATION, 'Switzerland'),
|
||||||
|
)
|
||||||
description = models.TextField()
|
description = models.TextField()
|
||||||
base_price = models.FloatField()
|
base_price = models.FloatField()
|
||||||
memory_price = models.FloatField()
|
memory_price = models.FloatField()
|
||||||
core_price = models.FloatField()
|
core_price = models.FloatField()
|
||||||
disk_size_price = models.FloatField()
|
disk_size_price = models.FloatField()
|
||||||
hosting_company = models.CharField(max_length=30, choices=HOSTING_TYPES)
|
hosting_company = models.CharField(max_length=30, choices=HOSTING_TYPES)
|
||||||
|
location = models.CharField(max_length=3, choices=LOCATIONS_CHOICES)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s" % (self.get_hosting_company_display())
|
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_name': self.get_hosting_company_display(),
|
||||||
'hosting_company': self.hosting_company,
|
'hosting_company': self.hosting_company,
|
||||||
'default_price': self.defeault_price(),
|
'default_price': self.defeault_price(),
|
||||||
|
'location_code': self.location,
|
||||||
|
'location': self.get_location_display(),
|
||||||
'id': self.id,
|
'id': self.id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +87,9 @@ class VirtualMachinePlan(models.Model):
|
||||||
|
|
||||||
objects = VMPlansManager()
|
objects = VMPlansManager()
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "%s" % (self.id)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def hosting_company_name(self):
|
def hosting_company_name(self):
|
||||||
return self.vm_type.get_hosting_company_display()
|
return self.vm_type.get_hosting_company_display()
|
||||||
|
@ -106,7 +110,7 @@ class HostingOrder(models.Model):
|
||||||
ORDER_APPROVED_STATUS = 'Approved'
|
ORDER_APPROVED_STATUS = 'Approved'
|
||||||
ORDER_DECLINED_STATUS = 'Declined'
|
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)
|
customer = models.ForeignKey(StripeCustomer)
|
||||||
billing_address = models.ForeignKey(BillingAddress)
|
billing_address = models.ForeignKey(BillingAddress)
|
||||||
created_at = models.DateTimeField(auto_now_add=True)
|
created_at = models.DateTimeField(auto_now_add=True)
|
||||||
|
@ -115,13 +119,16 @@ class HostingOrder(models.Model):
|
||||||
cc_brand = models.CharField(max_length=10)
|
cc_brand = models.CharField(max_length=10)
|
||||||
stripe_charge_id = models.CharField(max_length=100, null=True)
|
stripe_charge_id = models.CharField(max_length=100, null=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "%s" % (self.id)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def status(self):
|
def status(self):
|
||||||
return self.ORDER_APPROVED_STATUS if self.approved else self.ORDER_DECLINED_STATUS
|
return self.ORDER_APPROVED_STATUS if self.approved else self.ORDER_DECLINED_STATUS
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, VMPlan=None, customer=None, billing_address=None):
|
def create(cls, vm_plan=None, customer=None, billing_address=None):
|
||||||
instance = cls.objects.create(VMPlan=VMPlan, customer=customer,
|
instance = cls.objects.create(vm_plan=vm_plan, customer=customer,
|
||||||
billing_address=billing_address)
|
billing_address=billing_address)
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
.pricing li.type {
|
.pricing li.type {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
padding: 13px;
|
padding: 13px;
|
||||||
height: 200px;
|
height: 150px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pricing big {
|
.pricing big {
|
||||||
|
@ -72,6 +72,16 @@
|
||||||
box-shadow: inset 0px 2px 2px rgba(0, 0, 0, 0.1);
|
box-shadow: inset 0px 2px 2px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
/* pricing color */
|
/* pricing color */
|
||||||
|
|
||||||
|
.p-black big,
|
||||||
|
.p-black h3 {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-black button {
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
|
||||||
.p-green big,
|
.p-green big,
|
||||||
.p-green h3 {
|
.p-green h3 {
|
||||||
color: #4c7737;
|
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);
|
$('.disk-space-selector').on('change',change_attribute);
|
||||||
|
|
||||||
|
//Disable input
|
||||||
|
$('.disk-space-selector').keypress(function(event){
|
||||||
|
event.preventDefault();
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
|
@ -81,23 +81,23 @@
|
||||||
</li>
|
</li>
|
||||||
{% else %}
|
{% else %}
|
||||||
<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>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ request.META.HTTP_REFERER }}#your">Your infrastructure</a>
|
<a href="{{ request.session.hosting_url }}#your">Your infrastructure</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ request.META.HTTP_REFERER }}#our">Our inftrastructure</a>
|
<a href="{{ request.session.hosting_url }}#our">Our inftrastructure</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ request.META.HTTP_REFERER }}#price">Pricing</a>
|
<a href="{{ request.session.hosting_url }}#price">Pricing</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ request.META.HTTP_REFERER }}#contact">Contact</a>
|
<a href="{{ request.session.hosting_url }}#contact">Contact</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'hosting:login' %}?next={{request.current_path}}">Login</a>
|
<a href="{% url 'hosting:login' %}?next={{request.current_path}}">Login</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -123,21 +123,22 @@
|
||||||
</li>
|
</li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<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 class="footer-menu-divider">⋅</li>
|
||||||
<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>⋅</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 class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ request.META.HTTP_REFERER }}#services">Pricing</a>
|
<a href="{{ request.session.hosting_url }}#services">Pricing</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="footer-menu-divider">⋅</li>
|
<li class="footer-menu-divider">⋅</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ request.META.HTTP_REFERER }}#contact">Contact</a>
|
<a href="{{ request.session.hosting_url }}#contact">Contact</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
<p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
|
<p class="copyright text-muted small">Copyright © ungleich GmbH {% now "Y" %}. All Rights Reserved</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
{% load staticfiles %}
|
||||||
<a name="price"></a>
|
<a name="price"></a>
|
||||||
<div class="content-section-b">
|
<div class="content-section-b">
|
||||||
<div class="container-fluid pricing-container">
|
<div class="container-fluid pricing-container">
|
||||||
|
@ -6,7 +7,6 @@
|
||||||
<hr class="section-heading-spacer">
|
<hr class="section-heading-spacer">
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<h2 class="section-heading">Hosting Price</h2>
|
<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>
|
</div>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -17,17 +17,31 @@
|
||||||
<!-- Page Features -->
|
<!-- Page Features -->
|
||||||
<div class="row text-center">
|
<div class="row text-center">
|
||||||
|
|
||||||
<div class="block col-md-offset-1">
|
<div class="block col-md-offset-3">
|
||||||
{% for vm in vm_types %}
|
{% 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}}">
|
<form class="form-inline" method="POST" action="{{request.path}}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="hosting_company" value="{{vm.hosting_company}}">
|
<input type="hidden" name="hosting_company" value="{{vm.hosting_company}}">
|
||||||
<input type="hidden" name="hosting_company_name" value="{{vm.hosting_company_name}}">
|
<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">
|
<li class="type">
|
||||||
<!-- <img src="http://bread.pp.ua/n/settings_g.svg" alt=""> -->
|
<!-- <img src="http://bread.pp.ua/n/settings_g.svg" alt=""> -->
|
||||||
<h3 >{{vm.hosting_company_name}}</h3>
|
<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>
|
||||||
<li>
|
<li>
|
||||||
<!-- Single button -->
|
<!-- Single button -->
|
||||||
|
@ -64,7 +78,7 @@
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
<div class="col-xs-offset-1 col-xs-9 col-sm-12 col-md-12 col-md-offset-0">
|
<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>
|
<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>
|
<span>GiB</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,7 +89,7 @@
|
||||||
<span>per month</span>
|
<span>per month</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<button>Buy it</button>
|
<button>Book it</button>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</form>
|
</form>
|
||||||
|
|
|
@ -5,6 +5,17 @@
|
||||||
<div class="intro-auth intro-login">
|
<div class="intro-auth intro-login">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="col-md-4 col-md-offset-4">
|
<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">
|
<div class="intro-message">
|
||||||
<h2 class="section-heading">Login</h2>
|
<h2 class="section-heading">Login</h2>
|
||||||
<form action="{% url 'hosting:login' %}" method="post" class="form" novalidate>
|
<form action="{% url 'hosting:login' %}" method="post" class="form" novalidate>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-8 col-xs-offset-2">
|
<div class="col-xs-8 col-xs-offset-2">
|
||||||
<div class="invoice-title">
|
<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>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -14,18 +14,18 @@
|
||||||
<address>
|
<address>
|
||||||
<h3><b>Billed To:</b></h3>
|
<h3><b>Billed To:</b></h3>
|
||||||
{{user.name}}<br>
|
{{user.name}}<br>
|
||||||
{{object.billing_address.street_address}},{{order.billing_address.postal_code}}<br>
|
{{order.billing_address.street_address}},{{order.billing_address.postal_code}}<br>
|
||||||
{{object.billing_address.city}}, {{object.billing_address.country}}.
|
{{order.billing_address.city}}, {{order.billing_address.country}}.
|
||||||
</address>
|
</address>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 text-right">
|
<div class="col-xs-6 text-right">
|
||||||
<address>
|
<address>
|
||||||
<strong>Order Date:</strong><br>
|
<strong>Order Date:</strong><br>
|
||||||
{{object.created_at}}<br><br>
|
{{order.created_at}}<br><br>
|
||||||
<strong>Status:</strong><br>
|
<strong>Status:</strong><br>
|
||||||
<strong class="{% if object.status == 'Approved' %}text-success
|
<strong class="{% if order.status == 'Approved' %}text-success
|
||||||
{%else%} text-danger
|
{%else%} text-danger
|
||||||
{% endif %}">{{object.status}}</strong>
|
{% endif %}">{{order.status}}</strong>
|
||||||
<br><br>
|
<br><br>
|
||||||
</address>
|
</address>
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
<div class="col-xs-6">
|
<div class="col-xs-6">
|
||||||
<address>
|
<address>
|
||||||
<strong>Payment Method:</strong><br>
|
<strong>Payment Method:</strong><br>
|
||||||
{{object.cc_brand}} ending **** {{object.last4}}<br>
|
{{order.cc_brand}} ending **** {{order.last4}}<br>
|
||||||
{{user.email}}
|
{{user.email}}
|
||||||
</address>
|
</address>
|
||||||
</div>
|
</div>
|
||||||
|
@ -48,15 +48,15 @@
|
||||||
<h3><b>Order summary</b></h3>
|
<h3><b>Order summary</b></h3>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="content">
|
<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>
|
<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>
|
<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>
|
<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>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td scope="row">{{ order.id }}</td>
|
<td scope="row">{{ order.id }}</td>
|
||||||
<td>{{ order.created_at }}</td>
|
<td>{{ order.created_at }}</td>
|
||||||
<td>{{ order.VMPlan.price }} CHF</td>
|
<td>{{ order.vm_plan.price }} CHF</td>
|
||||||
<td>{% if order.approved %}
|
<td>{% if order.approved %}
|
||||||
<span class="text-success strong">Approved</span>
|
<span class="text-success strong">Approved</span>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -55,7 +55,8 @@
|
||||||
Your
|
Your
|
||||||
order?</h4>
|
order?</h4>
|
||||||
|
|
||||||
<form method="post" action="{% url 'hosting:delete_order' order.id %}">
|
<form method="post"
|
||||||
|
action="{% url 'hosting:delete_order' order.id %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-default"
|
<button type="button" class="btn btn-default"
|
||||||
|
|
|
@ -104,7 +104,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td scope="row">{{order.id}}</td>
|
<td scope="row">{{order.id}}</td>
|
||||||
<td>{{order.created_at}}</td>
|
<td>{{order.created_at}}</td>
|
||||||
<td>{{order.VMPlan.price}} CHF</td>
|
<td>{{order.vm_plan.price}} CHF</td>
|
||||||
<td>{% if order.approved %}
|
<td>{% if order.approved %}
|
||||||
<span class="text-success strong">Approved</span>
|
<span class="text-success strong">Approved</span>
|
||||||
{% else%}
|
{% 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 reverse
|
||||||
from django.core.urlresolvers import resolve
|
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):
|
class ProcessVMSelectionTestMixin(object):
|
||||||
|
@ -70,3 +80,280 @@ class NodeJSHostingViewTest(TestCase, ProcessVMSelectionTestMixin):
|
||||||
'email': "info@node-hosting.ch",
|
'email': "info@node-hosting.ch",
|
||||||
'vm_types': VirtualMachineType.get_serialized_vm_types(),
|
'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, \
|
from .views import DjangoHostingView, RailsHostingView, PaymentVMView, \
|
||||||
NodeJSHostingView, LoginView, SignupView, IndexView, \
|
NodeJSHostingView, LoginView, SignupView, IndexView, \
|
||||||
OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\
|
OrdersHostingListView, OrdersHostingDetailView, VirtualMachinesPlanListView,\
|
||||||
VirtualMachineDetailListView,OrdersHostingDeleteView
|
OrdersHostingDeleteView,VirtualMachineDetailView
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
# url(r'pricing/?$', VMPricingView.as_view(), name='pricing'),
|
# 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'orders/(?P<pk>\d+)/?$', OrdersHostingDetailView.as_view(), name='orders'),
|
||||||
url(r'cancel_order/(?P<pk>\d+)/?$',OrdersHostingDeleteView.as_view(),name='delete_order'),
|
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/?$', 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'),
|
name='virtual_machines'),
|
||||||
url(r'login/?$', LoginView.as_view(), name='login'),
|
url(r'login/?$', LoginView.as_view(), name='login'),
|
||||||
url(r'signup/?$', SignupView.as_view(), name='signup'),
|
url(r'signup/?$', SignupView.as_view(), name='signup'),
|
||||||
url(r'^logout/?$', 'django.contrib.auth.views.logout',
|
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",
|
'email': "info@django-hosting.ch",
|
||||||
'vm_types': VirtualMachineType.get_serialized_vm_types(),
|
'vm_types': VirtualMachineType.get_serialized_vm_types(),
|
||||||
}
|
}
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
request.session['hosting_url'] = reverse('hosting:djangohosting')
|
||||||
context = self.get_context_data()
|
context = self.get_context_data()
|
||||||
|
|
||||||
return render(request, self.template_name, context)
|
return render(request, self.template_name, context)
|
||||||
|
@ -53,6 +54,7 @@ class RailsHostingView(ProcessVMSelectionMixin, View):
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
request.session['hosting_url'] = reverse('hosting:railshosting')
|
||||||
context = self.get_context_data()
|
context = self.get_context_data()
|
||||||
return render(request, self.template_name, context)
|
return render(request, self.template_name, context)
|
||||||
|
|
||||||
|
@ -72,7 +74,7 @@ class NodeJSHostingView(ProcessVMSelectionMixin, View):
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
request.session['hosting_url'] = reverse('hosting:nodejshosting')
|
||||||
context = self.get_context_data()
|
context = self.get_context_data()
|
||||||
|
|
||||||
return render(request, self.template_name, context)
|
return render(request, self.template_name, context)
|
||||||
|
@ -143,8 +145,9 @@ class SignupView(CreateView):
|
||||||
return HttpResponseRedirect(self.get_success_url())
|
return HttpResponseRedirect(self.get_success_url())
|
||||||
|
|
||||||
|
|
||||||
class PaymentVMView(FormView):
|
class PaymentVMView(LoginRequiredMixin, FormView):
|
||||||
template_name = 'hosting/payment.html'
|
template_name = 'hosting/payment.html'
|
||||||
|
login_url = reverse_lazy('hosting:login')
|
||||||
form_class = BillingAddressForm
|
form_class = BillingAddressForm
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
|
@ -183,7 +186,7 @@ class PaymentVMView(FormView):
|
||||||
billing_address = form.save()
|
billing_address = form.save()
|
||||||
|
|
||||||
# Create a Hosting Order
|
# Create a Hosting Order
|
||||||
order = HostingOrder.create(VMPlan=plan, customer=customer,
|
order = HostingOrder.create(vm_plan=plan, customer=customer,
|
||||||
billing_address=billing_address)
|
billing_address=billing_address)
|
||||||
|
|
||||||
# Make stripe charge to a customer
|
# Make stripe charge to a customer
|
||||||
|
@ -219,6 +222,7 @@ class PaymentVMView(FormView):
|
||||||
|
|
||||||
class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
class OrdersHostingDetailView(LoginRequiredMixin, DetailView):
|
||||||
template_name = "hosting/order_detail.html"
|
template_name = "hosting/order_detail.html"
|
||||||
|
context_object_name = "order"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
model = HostingOrder
|
model = HostingOrder
|
||||||
|
|
||||||
|
@ -229,6 +233,7 @@ class OrdersHostingListView(LoginRequiredMixin, ListView):
|
||||||
context_object_name = "orders"
|
context_object_name = "orders"
|
||||||
model = HostingOrder
|
model = HostingOrder
|
||||||
paginate_by = 10
|
paginate_by = 10
|
||||||
|
ordering = '-id'
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
user = self.request.user
|
user = self.request.user
|
||||||
|
@ -250,6 +255,7 @@ class VirtualMachinesPlanListView(LoginRequiredMixin, ListView):
|
||||||
context_object_name = "vms"
|
context_object_name = "vms"
|
||||||
model = VirtualMachinePlan
|
model = VirtualMachinePlan
|
||||||
paginate_by = 10
|
paginate_by = 10
|
||||||
|
ordering = '-id'
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
user = self.request.user
|
user = self.request.user
|
||||||
|
@ -257,7 +263,7 @@ class VirtualMachinesPlanListView(LoginRequiredMixin, ListView):
|
||||||
return super(VirtualMachinesPlanListView, self).get_queryset()
|
return super(VirtualMachinesPlanListView, self).get_queryset()
|
||||||
|
|
||||||
|
|
||||||
class VirtualMachineDetailListView(LoginRequiredMixin, DetailView):
|
class VirtualMachineDetailView(LoginRequiredMixin, DetailView):
|
||||||
template_name = "hosting/virtual_machine_detail.html"
|
template_name = "hosting/virtual_machine_detail.html"
|
||||||
login_url = reverse_lazy('hosting:login')
|
login_url = reverse_lazy('hosting:login')
|
||||||
model = VirtualMachinePlan
|
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 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
|
django-mptt
|
||||||
easy_thumbnails
|
easy_thumbnails
|
||||||
django-polymorphic
|
django-polymorphic
|
||||||
|
model-mommy
|
||||||
|
|
||||||
#PLUGINS
|
#PLUGINS
|
||||||
djangocms_flash
|
djangocms_flash
|
||||||
|
|
|
@ -33,7 +33,7 @@ class PostListViewUngleich(PostListView):
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
language = get_language()
|
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)
|
setattr(self.request, get_setting('CURRENT_NAMESPACE'), self.config)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from .forms import ContactUsForm
|
from .forms import ContactUsForm, BillingAddressForm
|
||||||
|
|
||||||
|
|
||||||
class ContactUsFormTest(TestCase):
|
class ContactUsFormTest(TestCase):
|
||||||
|
@ -23,3 +23,27 @@ class ContactUsFormTest(TestCase):
|
||||||
def test_invalid_form(self):
|
def test_invalid_form(self):
|
||||||
form = ContactUsForm(data=self.incompleted_data)
|
form = ContactUsForm(data=self.incompleted_data)
|
||||||
self.assertFalse(form.is_valid())
|
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 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",
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|