diff --git a/.gitignore b/.gitignore
index 6e6250b1..1b2b4d16 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,12 @@ secret-key
.idea/
.env
+*.mo
+*.log
+*.sql
+
+/utils/optimize/
+
+# to keep empty dirs
+!.gitkeep
+*.orig
diff --git a/.travis.yml b/.travis.yml
index 1e92e42e..3a3d7027 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,11 +1,15 @@
language: python
python:
- - "3.5"
- - "3.6"
+ - "3.4.2"
+# - "3.6"
env:
- # Set a dummy secret key
- - DJANGO_SECRET_KEY=0
+ - DJANGO_SECRET_KEY=0 OPENNEBULA_USERNAME='test' OPENNEBULA_PASSWORD='test' OPENNEBULA_PROTOCOL='http' OPENNEBULA_DOMAIN='test_domain' OPENNEBULA_PORT='2633' OPENNEBULA_ENDPOINT='/RPC2' DCL_TEXT='Data Center Light' CELERY_MAX_RETRIES=0 UNGLEICH_SITE_CONFIGS='{"localhost":{"MULTISITE_CMS_URL":"dynamicweb.urls"}}'
# install dependencies
install: "pip install -r requirements.txt"
-script: python manage.py test
+script:
+- flake8
+- python manage.py compilemessages
+- python manage.py test -v 3
+# - coverage run --source='.' manage.py test dynamicweb -v 3
+# - coverage report
diff --git a/Changelog b/Changelog
index 93320353..04b699a9 100644
--- a/Changelog
+++ b/Changelog
@@ -1,3 +1,435 @@
+2.6.9: 2019-11-15
+ * feature: Allow creating yearly subscriptions for Generic Products (MR!718)
+ Notes for deployment:
+ - do a db migrate for new column added to Generic Product model
+ ./manage.py migrate hosting
+2.6.8: 2019-11-15
+ * feature: [EU VAT] Add EU VAT feature for generic products (MR!717)
+ Notes for deployment:
+ - do a db migrate a to create VATRates table
+ ./manage.py migrate hosting
+ - load vat_rates.csv
+ ./manage.py import_vat_rates vat_rates.csv
+2.6.7: 2019-11-04
+ * bugfix: [admin] Improve dumpuser: show proper dates + bugfix
+ * bugfix: [admin] Improve fetch_stripe_bills:
+ - fix wrong assigment of string to num_invoice_created
+ variable,
+ - return None (do not handle the case) if we don't have an
+ order
+ * bugfix: [admin] Improve deleteuser: do not delete order, bill and vm_detail
+2.6.6: 2019-11-04
+ * feature: [admin] Add dumpuser management command that dumps a user's data in json (MR!716)
+2.6.5: 2019-09-24
+ * #7169: [hosting] Fix server error while vm terminate takes longer than 30 seconds
+ * #7170: [hosting] Improve admin email body contents for hosting vm terminate error case
+2.6.4: 2019-09-15
+ * #7147: [OpenBSD vm] Add an explanatory text for username puffy on OpenBSD (MR!714)
+2.6.3: 2019-08-28
+ * #7032: [hosting] Bugfix: Reentering the same SSH key used before does allow user to proceed further; complains key exists (MR!712)
+ * #7070: [check_vm/api] Bugfix: Provide oneadmin credentials to check whether a user is the owner of a VM (MR!713)
+2.6.2: 2019-08-22
+ * #7068: [django/node/rails] Remove public- prefix from OS template names (MR!711)
+2.6.1: 2019-07-09
+ * #6941: [hosting dashboard] Show the card's expiry year & month too in the list of added cards (MR!710)
+2.6: 2019-07-03
+ * #5509: Getting rid of our key by still supporting multiple user keys (MR!709)
+2.5.11: 2019-06-11
+ * #6672: [api] Check VM belongs to user in the infrastructure directly (MR!707)
+ * #bugfix: DE translation fix "Learn mehr" -> "Lerne mehr" (MR!708)
+2.5.10: 2019-05-16
+ * #6672: [api] REST endpoint for ungleich-cli to verify if a VM belongs to a user (MR!705)
+ * #6670: [hosting/save_ssh_key] Upgrade cdist version to 5.0.1 to manage keys on Alpine linux
+2.5.9: 2019-05-09
+ * #6669: [hosting] Fix opennebula vm query takes long (MR!703)
+ * [hosting] Increase VMDetail model's configuration parameter length to 128 (MR!702)
+2.5.8: 2019-05-06
+ * #6631: Add `deleteuser` management command (MR!701)
+2.5.7: 2019-05-05
+ * #6657: [all] Remove dependency on code.jquery.com, maxcdn.bootstrapcdn.com and oss.maxcdn.com and add them locally (MR!700)
+2.5.6: 2019-05-05
+ * [blog] Check if the blog page is IPv6.Blog and load header image accordingly
+2.5.5: 2019-05-04
+ * [blog] Use modified djangocms_blog module to not show "Category - ... " (MR!699)
+2.5.4: 2019-05-04
+ * #6124: [blog] Allow setting title, subtitle of the blog page by passing GET params (MR!698)
+2.5.3: 2019-04-20
+ * #6561: [bills] Show mutiple line items in the invoice details (MR!697)
+ * #6561: [bills] Link line item to a Stripe Plan (MR!697)
+2.5.2: 2019-04-20
+ * #6561: [bills] Fix fetch_stripe_bills to import bills containing multiple line items belonging to same subscription (MR!695)
+2.5.1: 2019-04-17
+ * #6561: [hosting] Preparation for monthly invoices for customers (MR!689)
+ * [logging] Enhance logger, Include timestamp + module name in the logging messages (MR!693)
+2.5: 2019-04-11
+ * #6589: [vm creation, listing] Fix obtaining ip address/template related info from oca api call (MR!690, MR!691 and MR!692)
+ [python-oca] VirtualMachinePool infoextended (https://github.com/ungleich/python-oca/pull/3)
+2.4.10: 2019-02-14
+ * #6451: [dg, gdpr banner] Update phone number (MR!688 by pcoder)
+2.4.9: 2019-02-01
+ * bugfix: Fix inconsistent styles in GDPR modal (MR!679 by pcoder)
+2.4.8: 2019-01-31
+ * #5151: [all] Add GDPR banner (MR!678 by pcoder)
+ * #6059: [dcl] Change topnav font to 400 by default (MR! 680 by Sanghee)
+2.4.7: 2019-01-30
+ * #6213: [cms] Make ungleich product items equal heights and add option to animate or not animate the contents (MR!682 by Aatish)
+2.4.6: 2019-01-09
+ * #6261: Add ungleich black logo to blog template for mobile view (MR!685)
+2.4.5: 2019-01-07
+ * bugfix: [blog] Fix DE language option not being shown in the blog (MR!684) and revert back the RSS URL to the old one
+2.4.4: 2019-01-02
+ * bugfix: [blog] Create blog config for ungleich.ch and change RSS URL accordingly
+2.4.3: 2018-12-24
+ * #6260: Add viewport and other missing meta tags (MR!683)
+2.4.2: 2018-12-23
+ * Update djangcocms-blog version (0.7.0 -> 0.9.0)
+ * #6038: Change datacenterlight.ch message form to send email to support@ungleich.ch (MR!679)
+ * bugfix: Use correct version of django-multisite (MR #676)
+2.4.1: 2018-10-18
+ * bugfix: Update pycryptodome module from 3.4 to 3.6.6 (PR #674)
+2.4: 2018-10-18
+ * #5681: [hosting,dcl] Allow admin to lower minimum RAM to 512 MB (PR #672)
+2.3.1: 2018-10-17
+ * bugfix: [hosting, dcl] Show VAT percent rounded to 2 decimal places in the order confirmation page (PR #673)
+2.3: 2018-10-08
+ * #5690: Generic payment page - allow admin to add a onetime/monthly product and the frontend for user to pay for this product (PR #666)
+2.2.2: 2018-09-28
+ * #5721: Set calculator OS list in alphabetical order and set `Devuan Ascii` as the default (PR #668)
+ * bugfix: Fix some typos and correct DE translations (PR #667)
+2.2.1: 2018-09-25
+ * feature: Change DCLNavbarPlugin to show login option only if set (PR #665)
+ * bugfix: Log opennebula errors and send proper message when vm terminate is not completed in the stipulated time (PR #648)
+2.2: 2018-09-06
+ * bugfix: Include price in the Stripe plan name to make it distinct and to correct pricing since version 1.9
+2.1.2: 2018-08-30
+ * bugfix: [blog, comic] Set blog rss feed for all blog templates
+2.1.1: 2018-08-24
+ * #5487: [hosting] Add explicit warning message for teminating VM (PR #656)
+ * bugfix: [dg] Send email to admin on dg subscription and increase cc_brand field to 128 characters (PR #652)
+ * #5458: [admin] Make hostingorder more readable (PR #657)
+ * bugfix: [CMS templates] Set description meta field of ungleich template (was missing before) and set ungleich glarus ag uniformly as author of various CMS pages (PR #653)
+ * #5473: Ping a VM before saving ssh key of the user (PR #655)
+2.1: 2018-08-21
+ * Bugfix: Increase CC brand name fields from 10 to 128 characters (PR #654)
+2.0.5: 2018-08-08
+ * Fix IPv6 VM name in the billing invoice
+2.0.4: 2018-08-07
+ * Add RSS feed link to the footer of the blog template (PR #651)
+ * #5308: [ipv6only] Fix - when creating a VM, the name begins with v6only (PR #649)
+ * #5293: Use `terminate-hard` action instead of `terminate` in the opennebula call to terminate a vm (PR #650)
+2.0.3: 2018-07-18
+ * Remove unused /comic url (PR #644)
+ * #5126: Allow dynamicweb sites to be iframed on other by setting `X_FRAME_OPTIONS_ALLOW_FROM_URI` (PR #645)
+2.0.2: 2018-07-14
+ * bugfix: [blog] Add missing content block in the blog_ungleich.html template file
+2.0.1: 2018-07-14
+ * bugfix: [blog] Enable content/structure mode in blog page
+2.0: 2018-07-07
+ * #3747: [dcl,hosting] Add multiple cards support (PR #530)
+ * #3934: [dcl,hosting] Create HostingOrder outside celery task and add and associate OrderDetail with HostingOrder (PR #624)
+ * #4890: [hosting] Manage SSH keys using IPv6 of the VM (PR #640)
+ * bugfix: Fix flake8 error that was ignored in release 1.9.1
+1.9.1: 2018-06-24
+ * #4799: [dcl] Show selected vm templates only in calculator (PR #638)
+ * #4847: [comic] Add google analytics code for comic.ungleich.ch (PR #639)
+ * feature: add vm_type option to vm_template and dcl calculator to distinguish between public and ipv6only templates (PR #635)
+1.9: 2018-05-16
+ * #4559: [cms] enable discount on cms calculator
+1.8: 2018-05-01
+ * #4527: [hosting] cms calculator on non-cms pages for the hosting app
+ * bgfix: [dcl] navbar dropdown target fix
+ * bgfix: [hosting] login/signup pages footer link fix
+1.7.2: 2018-04-30
+ * bgfix: [cms] add favicon extension to ungleich cms pages
+ * #4474: [cms] reduce heading slider side padding
+1.7.1: 2018-04-21
+ * #4481: [blog] fix de blog pages 500 error
+ * #4370: [comic] new url /comic to show only comic blogs
+1.7: 2018-04-20
+ * bgfix: [all] Make /blog available on all domains
+ * #4367: [dcl] email logo resolution fix
+ * #4376: [cms] dcl promo section plugin link color changed to brighter shade
+ * #4379: [dcl] pricing without VAT
+ * bgfix: [blog] fix top menu items to show only one item
+ * #4297: [cms] favicon as a page attribute for dcl template
+1.6.5: 2018-04-08
+ * #4396: [ungleich] add favicon to ungleich blog
+ * #4327: [dcl] fix navbar logo repeat
+ * bgfix: [hosting] fix broken footer links
+ * bgfix: [dcl] remove ghost migrations from squashed migration
+ * bgfix: [cms] redirect multi-tenant urls to /cms also
+1.6.4: 2018-04-06
+ * #4362: [cms] Fix the need of dummy home page for different CMS-based sites
+1.6.3: 2018-04-05
+ * #4377: [cms] header btn external link fix
+ * #4378: [dcl cms] update CMS Integration to have different content for different domains
+1.6.2: 2018-04-01
+ * bgfix: [dcl] Fix user activation email style; add/correct some DE text
+ * #4373: [dcl] update footer menu for pw reset/login/signup/activation request pages
+1.6.1: 2018-03-28
+ * bgfix: fix header slider interval issue
+ * #4315: [cms] navbar consistency from cms page to static page
+ * #4313: [hosting] footer style fix
+1.6: 2018-03-25
+ * #4266: [dcl cms] add promotional section plugin
+ * #3842: [dcl, hosting] change number formatting for all the numbers from german to english locale
+1.5.5: 2018-03-22
+ * #4278: [dcl cms] edit options for cms navbar and header plugins
+ * bgfix: [dcl cms] fix link plugin issues and section image alignment
+1.5.4: 2018-03-17
+ * bgfix: [dcl cms] update DCLNavbarPlugin to allow change of brand logo and url
+1.5.3: 2018-03-16
+ * #4262: [dcl] Bugfix for incorrect template name
+1.5.2: 2018-03-14
+ * [devuan, ipv6] Add google analytics code for devuanhosting.com, ipv6onlyhosting.{com,net}
+ * #4246: [dcl cms] Enable full width options for DCL plugins
+ * #4247: [dcl cms] Fix alignment issues with the "plain heading" option
+1.5.1: 2018-03-11
+ * bgfix: [dcl cms] Remove datacenterlight_content placeholder conf so that we can create a cms page without calculator
+1.5: 2018-03-09
+ * #3554: [dcl] Remove some more beta access resources (some were left in the earlier release)
+ * #3452: [hosting] Back button management and cache control for hosting views
+ * #3718: [dcl] downtime page
+ * #4119: [dcl] CMS plugins for dcl pages
+ * #4231: [hosting] add company fiscal number to invoice footer
+1.4.1: 2018-02-23
+ * bgfix: [dcl] fix header style for tos page
+ * #3798: [dg] Redirect user to digital glarus on clicking logo in the email
+ * #3554: [dcl] Remove beta access resources
+ * #4166: [glasfaser] heading text not to be blocked by topnav on mobile after navbar menu click
+ * bgfix: [hosting] Change sdd_size to ssd_size in VirtualMachineSerializer
+ * bgfix: [dg] fix error on /digitalglarus/supporters/
+ * #4166: [dcl] Fix scroll on top menu click
+ * #4150: [ungleich] mobile font alignment
+ * #3713: [dcl] clean up css
+ * bgfix: [glasfaser] mobile top navigation toggle button fixed
+1.4: 2018-02-22
+ * #4104: [cms, nuglarus] Multisite and access control of cms pages per user
+1.3.3: 2018-02-21
+ * Add ALLOWED_HOST nüglarus.ch IDN
+ * #4105: [cms] Add cms footer plugin
+ * #4049: [blog] Replace header background image
+ * #3670: [hosting] Shorten ssh key name
+ * #4046: [hosting] Add sdd_size, hdd_size to VirtualMachineSerializer (No visual change)
+ * bgfix: [hosting] increase invoice pdf resolution
+1.3.2: 2018-01-16
+ * #4000: [all] Replace all ungleich.com with ungleich.ch
+ * #4067: [ungleich] mobile navbar toggle fix
+ * #4103: [dcl] Add "Terms of Service" item to the footer
+1.3.1: 2017-12-31
+ * feature: [all] Load email configurations host, port and use_tls from env
+ * bugfix: [all] Use ungleich's smtp as relayhost for sending emails
+1.3: 2017-12-27
+ * #3911: [dcl] Integrate resend activation link into dcl landing payment page
+ * #3972: [hosting] Add ungleich company info to invoice footer
+ * #3974: [hosting] Improve invoice number: Show 404 for invoice resources that do not belong to the user
+ * #3961: [ungleich] Add video cover to the header on ungleich.ch landing page and add corresponding cms plugin
+ * #3774: [hosting] Update Stripe subscription on vm delete
+ * [ungleich] Update text on landing page
+ * #3601: [dcl, hosting] Change minimum required RAM from 2GB to 1GB
+ * #3973: [dcl] Update datacenterlight and glasfaser contact address to Linthal and company name to "ungleich glarus ag"
+ * #3993: [dg] Fix new user membership payment by setting cardholder_name field for UserBillingAddressForm
+ * #3799: [dg] Make digital glarus billing work as monthly subscription
+ * #3994: [dg] Add a line on signup for clarifying dcl users can login without new signup
+1.2.13: 2017-12-09
+ * [cms] Introduce UngleichHeaderBackgroundImageAndTextSliderPlugin that allows to have scrolling images and texts
+ * [cms] Remove
tag for ungleich cms customer item template
+1.2.12: 2017-12-09
+ * #3594: [digitalglarus] Remove white scroll bar on the right in mobile
+ * #3905: [ungleich] Update ungleich.ch header into a slider
+ * #3968: [ungleich] Fix navbar logo alignment
+ * [all] Enable logging custom modules
+1.2.11: 2017-11-30
+ * [all] TravisCI: Test against python 3.4.2 only
+ * [ungleich] Remove data-replaced image in ungleich CMS services item plugin template
+1.2.10: 2017-11-26
+ * #3843: [ungleich] Add generic ungleich CMS template
+ * #3672: [all] Clean existing automated tests
+1.2.9: 2017-11-13
+ * #3848: [ungleich] Optimize ungleich.ch landing page
+ * #3360: [ungleich] Ungleich.ch landing page animation fix
+ * #3421: [hosting] Signup form placeholder translations
+ * #3856: [ungleich] Glasfaser text modified
+ * bugfix: [blog] Redirect user to ungleich home on ungleich logo click
+ * #3858: [dcl] Change "affordable vm ..." text to "Ready in 30 seconds ..."
+1.2.8: 2017-10-21
+ * Remove ALLOWED_HOST alplora.ch
+ * Add ALLOWED_HOST hack4glarus.ch
+ * Fetch page_title and meta_description dynamically in glasfaser CMS template
+1.2.7: 2017-10-20
+ * Bugfix: [dcl, hosting] Fix Stripe js error in confirm payment page
+ * #3847: [ungleich] change text 'hosting products' -> 'our products'
+ * #3829: [dcl] Handle landing login fail in payment page itself
+ * #3794: [dcl, hosting] Update email styles
+ * #3828: [dcl, hosting] invoice period set to show monthly subscription
+ * #3838: [hosting] restyle signup/login/password reset/password pages
+ * Bugfix: [dg] Remove validate email link in the registration email
+ * Feature: [ungleich_page] Add new glasfaser CMS template
+1.2.6: 2017-10-10
+ * Bugfix: [dcl] Refactor and optimize images, links in glasfaser page
+ * Bugfix: [dcl] Fix email not being sent issue
+1.2.5: 2017-10-10
+ * #3785: [hosting] update 'my bills' page design
+ * Bugfix: [hosting] card details input form alignment fix
+ * #3823: [hosting] favicon link fixed
+ * #3844: [dcl] Add Glasfaser page for advertisement
+1.2.4: 2017-10-02
+ * #3780: [hosting] Store VM details locally
+ * #3764: [hosting] Show cancelled VMs' invoices
+ * #3736: [dcl] Refactor the place where we compute the VM price
+ * #3730: [dcl] Refactor price parameter passed in the DCL flow
+ * #3807: [dcl] Remove PricingView as it is no more used
+ * #3813: [hosting] JS error in create ssh key page
+ * #3756: [dcl] Update landing calculator and billing info page
+ * Bugfix: Fix PR 493 bug that creates a new StripeCustomer for each buying of VM with the same email id
+ * #3835: [all] Forbidden (403) CSRF verification failed issue.
+ * Bugfix: [hosting] Dashboard strictly available after login
+ * #3808: [dcl] Order confirmation page redesign
+1.2.3: 2017-09-25
+ * #3484: [dcl, hosting] Refactored account activation, password reset, VM order and cancellation email
+ * #3731: [dcl, hosting] Added cdist ssh key handler
+ * #3628: [dcl] on hosting, VM is created at credit card info submit
+ * #3772: [dcl] Updated hosting app billing into monthly subscription and added new text and translations
+ * #3786: [hosting] Redesigned the hosting invoice and order-confirmation page
+ * #3728: [hosting] VM Termination animation added
+ * #3777: [hosting] Create new VM calculator added like dcl landing
+ * #3781: [hosting] Resend activation mail
+ * #3806: [hosting] Fix can not create VMs after password reset
+ * #3812: [hosting] Modal check icon made thin and font-size fixed
+ * Feature: [cms, blog] Added /cms prefix for all the django-cms generated urls
+ * Bugfix: [dcl, hosting] added host to celery error mails
+ * Bugfix: [ungleich] Fixed wrong subdomain digitalglarus.ungleich.ch
+1.2.2: 2017-09-08
+ * #3704: [hosting] Added my settings page
+ * #3771: [datacenterlight] Fixed the inconsistency in navbar style in billing page and onward
+ * #3769: [datacenterlight] Fixed EN dashboard url redirecting to the wrong page
+ * #3775: [hosting] Made the dashboard as the default start page for hosting app
+ * #3779: [hosting] Changed signup validation and activation page navbar transparent
+ * #3759: [hosting] Made the navbar style consistent to the dcl navbar and changed font weight from 300 to 400 for mobile navbar text
+ * #3644: [datacenterlight] Added a login button on landing
+ * #3659: [hosting] Changed hosting navbar design
+1.2.1: 2017-09-06
+ * #3757: [datacenterlight] Added /l route for linkedin
+1.2: 2017-09-01
+ * #3703: [hosting] Added a new dashboard
+ * #3717: [datacenterlight, hosting] Changed warning color for box
+ * #3748: [datacenterlight] Changed order msg position for mobile
+ * #3762: [hosting] Text fix View details to See Invoice
+ * #3765: [hosting] Text fix Your SSH Keys to My SSH Keys
+ * #3639: [datacenterlight] Added navbar menu after payment page on landing
+ * #3735: [hosting] Increased modal width and modal button width
+ * #3709: Activated Text Plugin by default for the Page Title Text, enabled
tag text management
+ * #3768: [datacenterlight, hosting] Fixed missing DE translation
+ * #3678: [datacenterlight, hosting] Removed Lato font files
+1.1.1: 2017-08-29
+ * #3709: [datacenterlight] Added faq tos cms template
+ * #3657: [datacenterlight] Added a new contact section at landing
+ * #3740: [datacenterlight] Made contact section to send email to info when user submits a message
+ * #3757: [datacenterlight] Added new routes to dcl
+1.1: 2017-08-24
+ * #3637: [datacenterlight, hosting] Added Stripe error handler
+ * #3695: [hosting] Applied new design for VM list in hosting
+ * #3565: [datacenterlight, hosting] Changed warning text color
+ * #3622: [datacenterlight] Moved the create vm xml-rpc call made in the DCL VM purchase flow into a celery asynchronous task
+ [datacenterlight] Added test for create vm celery task
+ * #3711: [hosting] Displayed all IPv4s and IPv6s in the VM list
+ * #3697: [hosting] Applied new design for VM detail page
+ * #3645: [hosting] Fixed navbar movement on modal popup
+ * #3698: [hosting] Applied new design for My Orders page
+ * #3737: [all] Corrected/added missing google analytics and reformated code, fixed broken head tag
+ * #3701: [datacenterlight] Enabled monthly Stripe subscriptions
+1.0.24: 2017-08-15
+ * #3699: [datacenterlight] Added oneadmin ssh key by default to the created VM via DCL landing
+ * #3687: [datacenterlight] Added the name of the customer as description field of the stripe metadata
+ [all] Added CustomUser as a parameter in get_anonymous_user function to resolve issues with tests
+1.0.23: 2017-08-11
+ * #3629: [datacentlight] Fixed navbar changing language from DE to EN between menus bug
+ * #3623: [hosting] Fixed “Confirm Order” text appearing in “Invoice” place
+ * #3633: [datacenterlight, hosting] Translated “All Rights Reserved” for German pages
+ * #3627: [datacenterlight, hosting] Added border for payment warning message when the user has already submitted card information
+ * #3620: [hosting] Updated SSH Key page with new style: new key choice page, upload key page, added icons for downloading and deleting key on mobile
+ * [hosting] bug fix: added modal icon and translation back for delete SSH Key
+ * #3660: [datacenterlight] Rearranged desktop and mobile view for “Why Data Centre Light?” IPv6/SSD section
+ * #3646: Added file with VM Template hosting migration
+ * #3617: [hosting] Fixed Password reset confirmation page style bug
+ * #3408: [hosting] Changed background image of signup/login background into smaller size
+ * #3621: [hosting] Fixed signup/login/password reset page navbar logo overlapping with form
+ * #3354: [hosting] Restyled modal
+ * #3638: [hosting] Added “download” btn on generated key list for generated keys from upload your key page
+ * #3655: [hosting] Disabled deleting SSH keys from other users
+ * #3619: [datacenterlight, hosting] Replaced 'Lato-Light' and 'Lato-Regular' with only ‘Lato’ with appropriate font-weights
+ * #3677: [hosting] Added wrapping for show SSH key modal text
+ * #3683: [hosting] Fixed footer floating bug on VM creating page
+ * #3676: [datacenterlight, hosting] Added missing card holder's name field migration
+1.0.22: 2017-07-30
+ * #3593: [datacenterlight] Removed underbars between social icons in index
+ * #3509: [datacenterlight, hosting] Made navbar transparent and removed mobile navbar bug in login/signup/reset-password
+ * #3592: [datacenterlight] Changed “Order Now” button text to “Continue/weiter”
+ * #3579: [datacenterlight] Removed “blinks” on click on navbar menus
+ * #3577: [datacenterlight] Added backend CPU, RAM, SSD fields validation
+ * #3615: [datacenterlight] Decoupled landing VM templates from OpenNebula
+ * #3604: [datacenterlight, hosting] Font colour change for better visibility in signup/login/password request footer links
+ [all] Introduced ENABLE_DEBUG_LOGGING
+ * #3542: [datacenterlight, hosting] Fixed warning messages and deprecated url
+ * #3603: [datacenterlight] Removed navbar language option dropdown
+ * #3629: [datacenterlight] Fixed navbar language switching bug
+1.0.21: 2017-07-21
+ * #3591: [datacenterlight, payment] Fixed card holder name to appear on Confirm Order page
+ * #3558: [datacenterlight] Changed font family and background color for header
+ * #3581: [datacenterlight] Lead font weight change
+ * #3584: [all] Add flag is_superuser=True in MyUserManager
+1.0.20: 2017-07-18
+ * #3590: [digitalglarus] Added impact hub partner logo and text in digitalglarus
+ [datacenterlight, hosting] Fixed overlapping of date and billing address in the mobile view
+ * #3580: [datacenterlight, hosting] Introduced newly designed payment page. Customized Stripe credit card input fields
+ * #3568: [all] Improved the way of adding Google analytics (ga) code. We now have ga code for ungleich, digitalglarus, blog, hosting
+ and datacenterlight
+ * #3564: [datacenterlight] Improved calculator form validations, both client side and server side
+ [datacenterlight] Changed "Place order" button to "Submit" in the payment page
+ * #3540: [datacenterlight] Improved credit card section with Stripe clarification texts and corresponding DE translations
+1.0.19: 2017-07-09
+ * [blog] Added a space between "Posted on" and the "Date"
+ * [datacenterlight, digitalglarus] Introduced Google Analytics for DCL and digitalglarus.ch
+ * [datacenterlight] Fixed calculator error message positioning
+ * [digitalglarus] Fixed favicon for digitalglarus
+ * [all] Introduced PEP8 code standards using flake8
+ * [all] DEBUG is set to False on production
+ * [all] Using memcached as cache provider on production
+ * [datacenterlight] Removed Order Now button outline in the order form
+ * [datacenterlight] Refactored html pages, fixed missing body tag, removed some duplicate script imports
+ * [datacenterlight] Introduced Why Data Center Light page
+1.0.18: 2017-07-02
+ * [datacenterlight] Introduced the new flow. Landing page -> Payment -> Order confirmation -> Success
+ * [datacenterlight] Fixed issue showing local time to the user in order confirmation page, vm pages (like ssh keys)
+ * [hosting] Fixed responsive issue while user signup
+ * [hosting] Fixed 500 error when user requests for a vm whose id does not belong to him
+ * [datacenterlight] Refactored partially dcl text and dcl support email to be obtained from env parameters
+ * [datacenterlight] Updated DE translations
+ * [hosting] Updated email text for user activation
+1.0.17: 2017-06-16
+ * [datacenterlight] Cleanup OrderView useless code
+ * [datacenterlight] Replaced GiB to GB
+ * [datacenterlight] Tentative fix for error 500 on order detail view
+ * [datacenterlight] Fixed translations
+ * [datacenterlight] Added email confirmation feature
+ * [datacenterlight] Changed logo on datacerlight dashboard
+ * [datacenterlight] Credit card input disappearance fix
+1.0.16: 2017-06-15
+ * [datacenterlight] .po file issue with multiple definition fixed
+ * [datacenterlight] Navbar items in dcl user area rearranged
+ * [datacenterlight] Typos in german fixed (#3364)
+ * [datacenterlight] Added "VAT included" text in calculator box
+1.0.15: 2017-06-14
+ * [datacenterlight] Fixed error trying to delete ssh key
+ * [datacenterlight] Fixed footer links
+ * [datacenterlight] Fixed some styles on landing
+1.0.14: 2017-06-14
+ * [all] Added deploy.sh
+ * [all] Removed .mo files and updated .gitignore
+1.0.13: 2017-06-13
+ * [datacenterlight] Added translations for email and name placeholders fields
+1.0.12: 2017-06-13
+ * [datacenterlight] Added from address for EmailMessage that was missing
1.0.11: 2017-06-12
* [datacenterlight] month added to landing calculator box
* [datacenterlight] dcl_email from address fixed to come from support@dcl
@@ -15,14 +447,14 @@
1.0.5: 2017-06-06
* [all] General cleanup
* [datacenterlight] Add German translations
- * [datacenterlight] Change beta access to subscriptions
- * [hosting] Add German translations
+ * [datacenterlight] Change beta access to subscriptions
+ * [hosting] Add German translations
* [blog] Add German translation for header
* [opennebula_api] Improve testing, add ssh key functions
* [opennebula_api] Remove template views
- * [datacenterlight] Allow user to have multiple ssh keys
+ * [datacenterlight] Allow user to have multiple ssh keys
* [datacenterlight] Changed stripe.js v2 to v3
- * [datacenterlight] Added support for stripe payment errors on current user language
+ * [datacenterlight] Added support for stripe payment errors on current user language
1.0.4: 2017-06-05
* [all] Added new Domains to accept
1.0.3: 2017-06-02
diff --git a/README.rst b/README.rst
index 8c8c8ddb..f297018c 100644
--- a/README.rst
+++ b/README.rst
@@ -3,6 +3,10 @@ ungleich
dynamicweb
----------
+
+.. image:: https://travis-ci.org/ungleich/dynamicweb.svg?branch=master
+ :target: https://travis-ci.org/ungleich/dynamicweb
+
Website for ungleich GmbH
=======
diff --git a/alplora/admin.py b/alplora/admin.py
index 8c38f3f3..4185d360 100644
--- a/alplora/admin.py
+++ b/alplora/admin.py
@@ -1,3 +1,3 @@
-from django.contrib import admin
+# from django.contrib import admin
# Register your models here.
diff --git a/alplora/locale/de/LC_MESSAGES/django.mo b/alplora/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index c69bd979..00000000
Binary files a/alplora/locale/de/LC_MESSAGES/django.mo and /dev/null differ
diff --git a/alplora/locale/de/LC_MESSAGES/django.po b/alplora/locale/de/LC_MESSAGES/django.po
index c39a4595..616ec68d 100644
--- a/alplora/locale/de/LC_MESSAGES/django.po
+++ b/alplora/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-05-30 13:47+0000\n"
+"POT-Creation-Date: 2017-10-10 21:35+0530\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,137 +18,99 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: alplora/templates/alplora/contact.html:6
msgid "New message"
msgstr "Neue Nachricht"
-#: alplora/templates/alplora/contact.html:13
msgid "Name:"
msgstr "Name:"
-#: alplora/templates/alplora/contact.html:15
msgid "What is your name ?"
msgstr "Was ist Dein Name?"
-#: alplora/templates/alplora/contact.html:19
msgid "From:"
msgstr "Von:"
-#: alplora/templates/alplora/contact.html:21
msgid "You email"
msgstr "Deine Email"
-#: alplora/templates/alplora/contact.html:25
msgid "Message:"
msgstr "Nachricht:"
-#: alplora/templates/alplora/contact.html:27
msgid "Leave us your message"
msgstr "Schreibe hier Deine Nachricht"
-#: alplora/templates/alplora/contact.html:32
msgid "Close"
msgstr "schliessen"
-#: alplora/templates/alplora/contact.html:33
msgid "Send message"
msgstr "Nachricht senden"
-#: alplora/templates/alplora/contact_success.html:6
msgid "Message Sent"
msgstr "Nachricht gesendet"
-#: alplora/templates/alplora/contact_success.html:9
msgid "Thank you, we will contact you as soon as possible"
msgstr "Dankeschön! Wir melden uns sobald wie möglich!"
-#: alplora/templates/alplora/index.html:13
msgid "Find your animal anywhere, anytime"
msgstr "Finde deine Tiere"
-#: alplora/templates/alplora/index.html:99
-#: alplora/templates/alplora/index.html:463
msgid "About"
msgstr "Über"
-#: alplora/templates/alplora/index.html:102
-#: alplora/templates/alplora/index.html:248
-#: alplora/templates/alplora/index.html:469
msgid "Why Alplora?"
msgstr "Warum Alplora?"
-#: alplora/templates/alplora/index.html:105
-#: alplora/templates/alplora/index.html:466
msgid "Usecase"
msgstr ""
-#: alplora/templates/alplora/index.html:108
-#: alplora/templates/alplora/index.html:358
msgid "Testimonials"
msgstr "Referenzen"
-#: alplora/templates/alplora/index.html:111
-#: alplora/templates/alplora/index.html:423
-#: alplora/templates/alplora/index.html:477
msgid "Contact"
msgstr "Kontakt"
-#: alplora/templates/alplora/index.html:114
msgid "Login"
msgstr "Login"
-#: alplora/templates/alplora/index.html:137
msgid "Find your herd anytime, anywhere"
msgstr "Finde deine Herde jederzeit und überall"
-#: alplora/templates/alplora/index.html:138
msgid "Perfect fit for Swiss Alps"
msgstr "Perfekt für die Schweizer Alpen"
-#: alplora/templates/alplora/index.html:163
msgid "What is Alplora?"
msgstr "Was ist Alplora?"
-#: alplora/templates/alplora/index.html:164
msgid ""
"Alplora is an animal tracker made for outdoor grazing animals in Swiss Alps."
msgstr ""
"Alplora ist ein Sender, der speziell für Weidetiere in den Schweizer Alpen "
"entwickelt wurde."
-#: alplora/templates/alplora/index.html:165
msgid "Alplora is just like a cattle bell, but much better."
msgstr "Alplora ist wie eine Kuhglocke, nur viel besser."
-#: alplora/templates/alplora/index.html:174
msgid "LOST"
msgstr "VERLOREN"
-#: alplora/templates/alplora/index.html:176
msgid "When an animal gets separated from the herd and is lost."
msgstr "Wenn ein Tier sich von der Herde absondert und verloren geht."
-#: alplora/templates/alplora/index.html:184
msgid "WOLF"
msgstr "WOLF"
-#: alplora/templates/alplora/index.html:186
msgid "When a wolf gets close to the herd."
msgstr "Wenn ein Wolf sich der Herde nähert."
-#: alplora/templates/alplora/index.html:193
msgid "INJURED"
msgstr "VERLETZT"
-#: alplora/templates/alplora/index.html:195
msgid "When one of the animals is hurt."
msgstr "Wenn eins der Tiere verletzt ist."
-#: alplora/templates/alplora/index.html:205
msgid "How does Alplora track my animals?"
msgstr "Wie kann Alplora meine Tiere verfolgen und ausfindig machen ?"
-#: alplora/templates/alplora/index.html:206
msgid ""
"Each animal will be wearing a small tracker,and the tracker will be "
"sending a signal every 30 to 60 minutes."
@@ -156,33 +118,27 @@ msgstr ""
"Jedes Tier wird einen kleinen Sender tragen, welcher alle 30 bis 60 "
"Minuten ein Signal senden wird."
-#: alplora/templates/alplora/index.html:215
msgid "Access app"
msgstr "Zugang zur App"
-#: alplora/templates/alplora/index.html:217
msgid ""
"You can see the animal locations on a map by logging into our Alplora app."
msgstr ""
"Du kannst den Standort deiner Tiere jederzeit auf einer Karte verfolgen, "
"indem du dich in unsere Alplora App einloggst."
-#: alplora/templates/alplora/index.html:225
msgid "Get an alarm"
msgstr "Erhalte ein Warnsignal"
-#: alplora/templates/alplora/index.html:227
msgid ""
"When certain signals for danger are detected, Alplora sends an alarm to you."
msgstr ""
"Wenn Anzeichen von Gefahr bestehen, sendet dir die Alplora App einen "
"Warnsignal."
-#: alplora/templates/alplora/index.html:235
msgid "Find your animal"
msgstr "Finde deine Tiere"
-#: alplora/templates/alplora/index.html:238
msgid ""
"You can locate the animal in trouble on the realtime map and can take "
"actions for keeping the animal safe."
@@ -190,11 +146,9 @@ msgstr ""
"Du kannst dein Tier in Notsituationen auf einer Echtzeit-Karte lokalisieren "
"und hast die Möglichkeit es in Sicherheit zu bringen."
-#: alplora/templates/alplora/index.html:255
msgid "Perfect fit for Swiss mountains"
msgstr "Perfekt für die Schweizer Alpen"
-#: alplora/templates/alplora/index.html:257
msgid ""
"Alplora is made and tested for Swiss Alps. It is a perfect fit for Swiss "
"environment."
@@ -202,11 +156,9 @@ msgstr ""
"Alplora wurde speziell für die Schweizer Alpen entwickelt und vor Ort "
"getestet. Das Produkt passt perfekt in die Schweiz!"
-#: alplora/templates/alplora/index.html:263
msgid "Energy efficient"
msgstr "Energieeffizient"
-#: alplora/templates/alplora/index.html:265
msgid ""
"Alplora uses the latest wireless technology, our batteries last the whole "
"alp season."
@@ -214,11 +166,9 @@ msgstr ""
"Alplora arbeitet mit den neuesten Technologien, so dass der Akku die gesamte "
"Alpsaison überdauert."
-#: alplora/templates/alplora/index.html:271
msgid "Made with love"
msgstr "Mit Liebe gemacht"
-#: alplora/templates/alplora/index.html:273
msgid ""
"With a lot of love and respect for Swiss agriculture and nature, Alplora is "
"made by a Swiss company."
@@ -226,61 +176,49 @@ msgstr ""
"Alplora wurde mit viel Liebe und Respekt für die Schweizer Natur und "
"Landwirtschaft von einer Schweizer Firma entwickelt."
-#: alplora/templates/alplora/index.html:285
msgid "Who needs Alplora?"
msgstr "Wer benötigt Alplora?"
-#: alplora/templates/alplora/index.html:301
msgid " Are your animals..."
msgstr "Sind deine Tiere..."
-#: alplora/templates/alplora/index.html:304
msgid "sheep, goats, cows or llamas living freely in the Alps?"
msgstr "Schafe, Ziegen, Kühe oder Lamas, die frei in den Alpen leben?"
-#: alplora/templates/alplora/index.html:306
msgid "wearing bells?"
msgstr "solche, die Glocken tragen?"
-#: alplora/templates/alplora/index.html:308
msgid ""
"sometimes getting confused and going too far away from where they are "
"supposed to be?"
msgstr ""
"manchmal verwirrt und entfernen sich zu weit von ihrem vorgesehenen Standort?"
-#: alplora/templates/alplora/index.html:332
msgid "Do you..."
msgstr "Möchtest du..."
-#: alplora/templates/alplora/index.html:335
msgid "have animals which are staying outdoor during some time of the year?"
msgstr ""
"deine Tiere, die eine längere Zeit im Jahr unbeobachtet Draussen verbringen, "
"schützen und überwachen können?"
-#: alplora/templates/alplora/index.html:337
msgid "want to get an alarm when your animal is hurt, or in danger?"
msgstr ""
"alarmiert werden, wenn sich eines deiner Tiere verletzt oder in Gefahr "
"befindet ?"
-#: alplora/templates/alplora/index.html:339
msgid "want to see where your animals are on your cell phone map?"
msgstr ""
"mit deinem Smartphone auf einer Karte sehen können, wo sich deine Tiere "
"befinden? "
-#: alplora/templates/alplora/index.html:341
msgid "want to make sure 24/7 that your animals are safe?"
msgstr ""
"sicherstellen, dass sich deine Tiere rund um die Uhr in Sicherheit befinden?"
-#: alplora/templates/alplora/index.html:359
msgid "What our customers say"
msgstr ""
-#: alplora/templates/alplora/index.html:379
msgid ""
"“Alplora is an innovation in looking after my cows. I can check where my "
"cows have been in the higher mountain all day while doing other works at the "
@@ -292,11 +230,9 @@ msgstr ""
"selben Zeit andereDinge auf dem Hof unten im Dorf erledigen. Dank Alplora "
"kann ich meinen Kühenmehr Sicherheit gewährleisten."
-#: alplora/templates/alplora/index.html:382
msgid "Farmer in canton Glarus"
msgstr "Bauern im Kanton Glarus"
-#: alplora/templates/alplora/index.html:388
msgid ""
"\"Alplora is exactly what I was waiting for. I have lost my sheep almost "
"every year. Finally I have a way when I want to locate them.\""
@@ -305,11 +241,9 @@ msgstr ""
"Schafe fastjedes Jahr aus den Augen verloren. Nun habe ich endlich die "
"Möglichkeit, sie zulokalisieren.\""
-#: alplora/templates/alplora/index.html:391
msgid "Owner of 50 sheep "
msgstr "Besitzerin von 50 Schafen"
-#: alplora/templates/alplora/index.html:397
msgid ""
"\"I have a farm down all the way down in the village and y goats are always "
"freely grazing in the Alps. There are times that I am worried about them but "
@@ -323,30 +257,23 @@ msgstr ""
"noch um meineanderen Tiere kümmern muss. Mit Alplora kann ich nun ohne "
"Probleme beides tun.\""
-#: alplora/templates/alplora/index.html:401
msgid "Farmer at Berner Oberland"
msgstr "Bauer aus dem Berner Oberland"
-#: alplora/templates/alplora/index.html:418
msgid "How do I get Alplora?"
msgstr "Wie kriege ich Zugriff zu Alplora?"
-#: alplora/templates/alplora/index.html:419
msgid "Click the button below and leave us your contact."
msgstr "Klicke unten auf Kontakt und hinterlasse uns deine Angaben."
-#: alplora/templates/alplora/index.html:419
msgid "Team Alplora will contact you and visit you with a tracking device."
msgstr "Das Alpora Team wird sich mit Dir schnellstens in Verbindung setzen."
-#: alplora/templates/alplora/index.html:459
msgid "Home"
msgstr "Startseite"
-#: alplora/templates/alplora/index.html:472
msgid "Testimonials "
msgstr "Referenzen"
-#: alplora/views.py:24
msgid "Message Successfully Sent"
msgstr ""
diff --git a/alplora/models.py b/alplora/models.py
index 71a83623..0b4331b3 100644
--- a/alplora/models.py
+++ b/alplora/models.py
@@ -1,3 +1,3 @@
-from django.db import models
+# from django.db import models
# Create your models here.
diff --git a/alplora/tests.py b/alplora/tests.py
index 7ce503c2..a79ca8be 100644
--- a/alplora/tests.py
+++ b/alplora/tests.py
@@ -1,3 +1,3 @@
-from django.test import TestCase
+# from django.test import TestCase
# Create your tests here.
diff --git a/alplora/urls.py b/alplora/urls.py
index f792f13f..058f5499 100644
--- a/alplora/urls.py
+++ b/alplora/urls.py
@@ -4,9 +4,9 @@ from .views import IndexView, LoginView, ContactView
urlpatterns = [
- url(r'^/?$', IndexView.as_view(), name='index'),
- url(r'/login/', LoginView.as_view(), name='login'),
- url(r'/contact', ContactView.as_view(), name='contact'),
-# url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
-# url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
+ url(r'^$', IndexView.as_view(), name='index'),
+ url(r'login/', LoginView.as_view(), name='login'),
+ url(r'contact', ContactView.as_view(), name='contact'),
+ # url(r'^/beta-program/?$', BetaProgramView.as_view(), name='beta'),
+ # url(r'^/landing/?$', LandingProgramView.as_view(), name='landing'),
]
diff --git a/alplora/views.py b/alplora/views.py
index ba249887..0a10b4e0 100644
--- a/alplora/views.py
+++ b/alplora/views.py
@@ -4,11 +4,11 @@ from django.utils.translation import get_language, get_language_info
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormView
from django.contrib import messages
-from django.core.urlresolvers import reverse_lazy, reverse
from django.shortcuts import render
from utils.forms import ContactUsForm
+
class IndexView(TemplateView):
template_name = "alplora/index.html"
@@ -18,6 +18,7 @@ class IndexView(TemplateView):
context.update(languages)
return context
+
class ContactView(FormView):
template_name = 'alplora/contact.html'
form_class = ContactUsForm
@@ -33,7 +34,8 @@ class ContactView(FormView):
form.save()
form.send_email(email_to='info@alplora.ch')
messages.add_message(self.request, messages.SUCCESS, self.success_message)
- return render(self.request, 'alplora/contact_success.html', {})
+ return render(self.request, 'alplora/contact_success.html', {})
+
class LoginView(TemplateView):
template_name = "alplora/login.html"
diff --git a/cms_templates/djangocms_blog/post_list.html b/cms_templates/djangocms_blog/post_list.html
index eb1ce71b..90712e16 100644
--- a/cms_templates/djangocms_blog/post_list.html
+++ b/cms_templates/djangocms_blog/post_list.html
@@ -6,14 +6,6 @@
{% block content_blog %}
{% block blog_title %}
-
-
- {% if author %}{% trans "Articles by" %} {{ author.get_full_name }}
- {% elif archive_date %}{% trans "Archive" %} – {% if month %}{{ archive_date|date:'F' }} {% endif %}{{ year }}
- {% elif tagged_entries %}{% trans "Tag" %} – {{ tagged_entries|capfirst }}
- {% elif category %}{% trans "Category" %} – {{ category }}{% endif %}
-