Nitrate bug-fix and enhancement update

Version: nitrate-3.8.18.18 Released on: 2017-05-01 Severity: High URL: http://MrSenko.com/nitrate/

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package and Docker image are now available which fix several bugs and introduce big improvements related to using external bug trackers with Nitrate! Further improvements related to bugtracker integration will be available in the next release.

Changes since 3.8.18.17

NOTE: this release introduces new database migrations so don't forget to execute ./manage.py migrate!

Open upstream issues

The following issues and pull requests, which have been previously released on Mr. Senko, are still open in the upstream repository:

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

pip install --upgrade nitrate

If you are using Nitrate as a Docker container then

docker-compose stop
docker rm nitrate_web_1 nitrate_db_1
docker-compose up -d
docker exec -it nitrate_web_1 /Nitrate/manage.py migrate

NOTE you will need the appropriate version of docker-compose.yml for the above commands to work!

There are comments.

Nitrate bug-fix and enhancement update

Version: nitrate-3.8.18.17 Released on: 2017-04-24 Severity: Medium Documentation: http://nitrate-mrsenko.rtfd.io/

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available which introduces several fixes and improvements. It is also possible to build and run Nitrate as a Docker image. Further improvements for running in dockerized environment will be available in the next release.

Changelog since 3.8.18.15

Open upstream issues

The following issues and pull requests, which have been previously released on Mr. Senko, are still open in the upstream repository:

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

pip install --upgrade nitrate

There are comments.

Nitrate enhancement update

Version: nitrate-3.8.18.15 Released on: 2017-04-12 Severity: Medium

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available which removes one database migration. tcms.core.migrations.0001_django_comments__object_pk is modifying a 3rd party model and Django gets really confused about this! See the discussion in PR #157 about why we've decided to drop the migration!

Changelog since 3.8.18.12

Open upstream issues

The following issues and pull requests, which have been previously released on Mr. Senko, are still open in the upstream repository:

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

pip install --upgrade nitrate

There are comments.

django-chartit enhancement update

Version: django-chartit-master Released on: 2017-03-22 Severity: Low

Details

Django Chartit is a Django app that can be used to easily create charts from the data in your database. The charts are rendered using Highcharts and jQuery JavaScript libraries. Data in your database can be plotted as simple line charts, column charts, area charts, scatter plots, and many more chart types. Data can also be plotted as Pivot Charts where the data is grouped and/or pivoted by specific column(s).

Updated upstream is now available which adds couple of improvements.

Upstream changelog since 0.2.9

How to upgrade

This is an upstream release only. No updated packages are provided via private repositories on Mr. Senko!

There are comments.

Nitrate enhancement update

Version: nitrate-3.8.18.12 Released on: 2017-03-22 Severity: Low

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available which adds various enhancements and reduces technical debth. The main focus of this release is code refactoring, improved test coverage and enabling testing against multiple database backends.

Changelog since 3.8.18.10

Open upstream issues

The following issues and pull requests, which have been previously released on Mr. Senko, are still open in the upstream repository:

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

pip install --upgrade nitrate

There are comments.

Nitrate enhancement update

Version: nitrate-3.8.18.10 Released on: 2017-03-08 Severity: Low

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available which fixes several bugs and adds various enhancements.

Changelog since 3.8.18.09

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

pip install --upgrade nitrate

There are comments.

Nitrate bug-fix & enhancement update

Version: nitrate-3.8.18.09 Released on: 2017-02-28 Severity: High

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available which fixes several bugs and adds various enhancements.

Changelog since 3.8.18.08

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

pip install --upgrade nitrate

There are comments.

Nitrate enhancement update

Version: nitrate-3.8.18.08 Released on: 2017-02-21 Severity: High

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available that adds various enhancements.

Changelog since 3.8.18.07

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

There are comments.

Nitrate enhancement update

Version: nitrate-3.8.18.07 Released on: 2017-02-14 Severity: Medium

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available that adds various enhancements.

Changelog since 3.8.18.05

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

There are comments.

Nitrate enhancement update

Version: nitrate-3.8.18.05 Released on: 2017-01-31 Severity: Low

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available that adds various enhancements.

Changelog since 3.8.18.04

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

There are comments.

Nitrate bug fix and enhancement update

Version: nitrate-3.8.18.04 Released on: 2017-01-24

Details

Nitrate is an open source test plan, test run and test case management system. It has a lot of great features, such as Bugzilla and JIRA integration, QPID integration, fast test plan and runs search, powerful access control for each plan, run and case, and XMLRPC APIs.

Updated Nitrate package is now available that adds various enhancements and bug fixes.

Changelog

How to upgrade

Subscribe to Mr. Senko and configure your private PyPI repositories before upgrading!

There are comments.

Using private PyPI repositories

Once you have subscribed to Mr. Senko you will receive a repository URL from which to install package versions supported by Mr. Senko. The URL is of the form https://d1v12p11qcbqzw.cloudfront.net/YOUR-CUSTOMER-ID

You must keep this URL secret! You can install supported packaged by either command line:

pip install kiwitestpad --extra-index-url https://d1v12p11qcbqzw.cloudfront.net/YOUR-CUSTOMER-ID

or inside of your project by adding the following statement to requirements.txt:

--extra-index-url https://d1v12p11qcbqzw.cloudfront.net/YOUR-CUSTOMER-ID

You can also configure your ~/.pip/pip.conf file to look like this

[global]
; Extra index from Mr. Senko
extra-index-url = https://d1v12p11qcbqzw.cloudfront.net/YOUR-CUSTOMER-ID

Another possibility is to configure the private repository URL directly into setup.py:

setup(
    name='YourAppName',
    install_requires=[
        'strazar',
    ],
    dependency_links=[
        'https://d1v12p11qcbqzw.cloudfront.net/YOUR-CUSTOMER-ID',
    ],
)

And you're ready to seamlessly pip install private packages from Mr. Senko.

What is Mr. Senko?

Mr. Senko provides long term support for various open source libraries. We do bug fixes and feature development, improve testing and write documentation so you don't have to! Subscribe to Mr. Senko if you need faster response cycle for the open source components which you use.

There are comments.

Using model properties and raw SQL with django-chartit

django-chartit is a Django app that can be used to easily create charts from the data in your database. The charts are rendered using Highcharts and jQuery JavaScript libraries. Data in your database can be plotted as simple line charts, column charts, area charts, scatter plots, and many more chart types.

Few days ago we have released version 0.2.8 which includes support for model properties and raw SQL queries in your charts. This blog post will describe how to use them.

Using model properties

Sometimes it is convenient to calculate a value inside your models but not store it in the database. For example consider the following model

class City(models.Model):
    city = models.CharField(max_length=50)
    state = models.CharField(max_length=2)

    def region(self):
        return 'USA:%s' % self.city

You are not able to select the region "field" but you may use it as part of your chart terms as shown below

ds = DataPool(
        series=[{
            'options': {
                'source': SalesHistory.objects.only(
                            'bookstore__city', 'sale_qty'
                          )[:10],
            },
            'terms': [
                'bookstore__city__region',
                'sale_qty'
            ]
        }]
)

cht = Chart(
        datasource=ds,
        series_options=[{
            'options': {
                'type': 'column',
                'stacking': False,
                'stack': 0,
            },
            'terms': {
                'bookstore__city__region': [
                    'sale_qty'
                ]
            }},
        ],
        chart_options={
            'title': {
                'text': 'Sales reports'
            },
            'xAxis': {
                'title': {
                    'text': 'City'
                }
            }
        }
)

The full example, including source code and live charts is available at django-chartit/demoproject!

Using raw SQL queries

Django allows you to execute SQL queries directly. These will return objects in the form of RawQuerySet and can be used in the same way as any other QuerySet.

ds = DataPool(
        series=[{
            'options': {
                'source': MonthlyWeatherByCity.objects.raw(
                            "SELECT id, month, houston_temp, boston_temp "
                            "FROM demoproject_monthlyweatherbycity")
            },
            'terms': [
                'month',
                'houston_temp',
                'boston_temp'
            ]
        }]
)

You will have to select the primary key field and pay attention to field names as to avoid duplicates when performing JOIN operations. Otherwise there is no difference. Full examples, including source code and live charts are available at django-chartit/demoproject!

Support

At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for this or other open source libraries please subscribe to Mr. Senko's support service!

There are comments.

New release pelican-ab 0.2.3

pelican-ab is an A/B testing plugin for Pelican, the static site generator. It allows you to encode experiments in your templates and renders the experiment selected by the AB_EXPERIMENT environment variable.

Today we are releasing version 0.2.3 as an urgent bug fix update handling internal changes in the latest version of Pelican. In previous versions Pelican used the JINJA_EXTENSIONS setting to configure additional Jinja2 modules. In version 3.7.0, released yesterday, JINJA_EXTENSIONS has been replaced with the JINJA_ENVIRONMENT setting. Version 0.2.3 of pelican-ab handles both cases and is able to work with older and newer versions of Pelican!

This backward-incompatible change in Pelican has been automatically detected by our monitoring tool Strazar, which proves the value of automatic testing against the latest versions of upstream dependencies!

Support

At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for this or other open source libraries please subscribe to Mr. Senko's support service!

There are comments.

New release django-chartit 0.2.7

django-chartit is a Django app that can be used to easily create charts from the data in your database. The charts are rendered using Highcharts and jQuery JavaScript libraries. Data in your database can be plotted as simple line charts, column charts, area charts, scatter plots, and many more chart types.

Today we are releasing version 0.2.7 as part of our regular update process. This is an urgent bug fix update because previous versions broke subclassing of Chart and PivotChart classes.

Changelog since version 0.2.6

Support

At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for this or other open source libraries please subscribe to Mr. Senko's support service!

There are comments.

New release django-chartit 0.2.6

django-chartit is a Django app that can be used to easily create charts from the data in your database. The charts are rendered using Highcharts and jQuery JavaScript libraries. Data in your database can be plotted as simple line charts, column charts, area charts, scatter plots, and many more chart types.

Today we are releasing version 0.2.6 as part of our regular update process.

Changelog since version 0.2.4

Support

At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for this or other open source libraries please subscribe to Mr. Senko's support service!

There are comments.

Reviving django-chartit with version 0.2.4

django-chartit is a Django app that can be used to easily create charts from the data in your database. The charts are rendered using Highcharts and jQuery JavaScript libraries. Data in your database can be plotted as simple line charts, column charts, area charts, scatter plots, and many more chart types.

The project has been originally developed by Praveen Gollakota and had gained some popularity. Recently Mr. Senko was granted the necessary access rights and we've revived the project with two upstream releases.

Changelog

Version 0.2.3 was released a few days ago and merges the django-chartit2 fork by Grant McConnaughey which had a few releases of its own earlier this year. It also makes a few improvements and merged other pull requests.

Version 0.2.4 was released today and fixes the usage of deprecated Django APIs which were removed in Django 1.10.

Many thanks to Grant for his work on Python 3 and latest Django support! Many thanks to Praveen for letting us maintain the project.

Upgrade from django_chartit2

If you are using the django_chartit2 module by Grant then you have to

pip uninstall django_chartit2
pip install django_chartit

If you are not in a hurry to upgrade you may as well wait for the next release by Grant, which should automatically require django_chartit and transparently switch you back to using the original package and not the fork. However release of such an update is not under our control.

Feature plans

Mr. Senko is currently working actively to bring the rest of the project up to speed, including the demo site, which shows how to use the API. This is a mandatory step before we go ahead to work on various bug fixes and documentation improvements. We will also be looking into adding more tests for the project.

Support

At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for this or other open source libraries please subscribe to Mr. Senko's support service!

There are comments.

Reviving pelican-octopress and pelipress

pelican-octopress-theme and Pelipress are popular themes for Pelican but are not actively developed at the moment. Mr. Senko decided to fork and continue their active development. The new repository is at MrSenko/pelican-octopress-theme.

Why did we fork

Initially we've tried sending pull requests to the upstream repository but later noticed multiple issues and pull requests which were left open for more than a year, nearly 2 years in the worst cases. Pelipress on the other hand has not been rebased back to pelican-octopress-theme for almost 3 years!

We've emailed the original authors of both projects but didn't get a reply to our inquiries in a few weeks so decided to fork and continue forward.

Changelog

The following features have been merged from pelican-octopress-theme by resolving all conflicts which were present:

The following features have been inspired by Pelipress and cleanly re-implemented on top of the current fork:

Support

At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for this or other open source libraries please subscribe to Mr. Senko's support service!

There are comments.

Triggering Automatic Dependency Testing

Strazar (from Bulgarian for sentinel) helps you monitor upstream sources and once a new package version is found your .travis.yml environment is updated and the changes committed to GitHub which automatically triggers a new build! This approach relies on having a good test suite, but you already have that covered, right ?

Strazar was inspired by Forbes Lindesay's GitHub Automation talk at DEVit Conf 2015 and we're very excited to announce this release days before this year's DEVit Conf!

What is currently supported

In its initial release Strazar only supports PyPI, Travis-CI and GitHub. We already have written the code to detect new RubyGems and NPM packages and that will land in the next versions. However we also found the wonderful libraries.io service which is already aware of many more package repositories so we'll try to integrate Strazar with it in the future.

We've started with Travis-CI because this is what we use but support for other CI environments is very easy to add. Strazar calculates all possible combinations between package names and their versions and writes them to a text file. To add another CI environment we only need to parse and write the file in the correct format.

Installation and configuration

To install Strazar execute

pip install strazar

Then configure the GITHUB_TOKEN environment variable. This token needs the public_repo or repo permission in order to push commits to your repositories.

Prepare .travis.yml

Strazar uses the variable format _PACKAGE_NAME where the variable name starts with an under-score followed by the capitalized package name. All hyphens are converted to under-scores as well. We advise that your .travis.yml files follow the same convention. This is how Strazar's own .travis.yml looks like

language: python
python:
  - 2.7
  - 3.5
install:
  - pip install coverage flake8 mock PyYAML==$_PYYAML PyGithub==$_PYGITHUB
script:
  - ./test.sh
env:
  - _PYGITHUB=1.26.0 _PYYAML=3.11

How to monitor PyPI

PyPI doesn't provide web-hooks so we examine the RSS feed for packages of interest based on configuration settings. To start monitoring PyPI execute the following code from a cron job (here at Mr. Senko we do it every hour)

import os
import strazar

os.environ['GITHUB_TOKEN'] = 'xxxxxxxxx'
config = {
    "PyYAML" : [
        {
            'cb' : strazar.update_github,
            'args': {
                'GITHUB_REPO' : 'MrSenko/strazar',
                'GITHUB_BRANCH' : 'master',
                'GITHUB_FILE' : '.travis.yml'
            }
        },
    ],
}

strazar.monitor_pypi_rss(config)

The config dict uses package names as 1st level keys. If you are interested in a particular package add it here. All other packages detected from the RSS feed will be ignored. If your project depends on multiple packages you have to list all of them as 1st level keys in config and duplicate the key values.

The key value is a list of call-back methods and arguments to execute once a new package has been published online. If two or more repositories depend on the same package then add them as values to this list.

The strazar.update_github call-back knows how to commit to your source repo which will automatically trigger a new CI build.

Support

Strazar is provided as open source for everyone to use. At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for this or other open source libraries please subscribe to Mr. Senko's support service!

There are comments.

A/B Testing with Jinja2 and Pelican

A/B testing is a randomized experiment with two variants, which are the control and variation in the controlled experiment. In this article we're going to present a solution which works with Pelican and other Jinja2 based static site generators.

The markup

In statically generated websites you either have content or templates. We've been interested in encoding A/B experiments in templates and didn't find a solution so we made our own. jinja-ab is an A/B testing extension for Jinja2. It allows you to encode experiments in your templates and renders the experiment selected by the AB_EXPERIMENT environment variable. control is the default experiment name if AB_EXPERIMENT is not specified! The syntax looks like this

{% experiment control %}This is the control{% endexperiment %}
{% experiment v1 %}This is version 1{% endexperiment %}

Rendering and output control

jinja-ab deals with rendering the template string based on the value of AB_EXPERIMENT. It is up to you to decide what to do with the result. At Mr. Senko we use Pelican and created the complimentary pelican-ab plugin. To enable the plugin simply add it in your pelicanconf.py

PLUGIN_PATHS = ['path/to/pelican-ab']
PLUGINS = ['pelican_ab']

After encoding your experiments into the theme templates you can generate the resulting HTML files by running the command

AB_EXPERIMENT="v1" make html

When rendering experiments the resulting HTML files are saved under OUTPUT_PATH plus the experiment name. For example 'output/v1', 'output/v2', etc. The control experiments are rendered directly under OUTPUT_PATH. For example the control directory structure of this blog looks like this:

output/
|-- blog
|   |-- 2016
|   |   | ...
|   |-- archives
|   |-- atodorov
|   |   `-- ...
|   |-- mr-senko
|   |   `-- ...
|   `-- tags
|       | ...
|-- feeds
|-- images
|-- js
|-- support
`-- theme

After rendering an experiment called 'v1' the directory structure looks like this:

output/v1/
|-- blog
|   |-- 2016
|   |   | ...
|   |-- archives
|   |-- atodorov
|   |   `-- ...
|   |-- mr-senko
|   |   `-- ...
|   `-- tags
|       | ...
`-- support

Only content output is saved under the new directory because content it rendered using the templates which we want to A/B test. This is how pelican-ab works for the moment.

This plugin also automatically updates the Content.url and URLWrapper.url class properties from Pelican so that things like {{ article.url }} and {{ author.url }} will point to URLs from the same experiment.

In other words each experiment produces its own HTML and URL structure, using the experiment name as prefix. Once a user lands on a page from experiment "v1" all links to other content will also point to "v1", for example 'blog/about-me.html' becomes 'v1/blog/about-me.html', etc. This will help you gather more information from the experiment because all your internal URLs are under the same experiment, using the same HTML template variation.

NOTE: wherever you use the {{ SITEURL }} template tag without pointing to the content url property the values will not be changed. This means all your CSS, JavaScript and images will continue to work without being duplicated under the experiment directory.

Testing and publishing experiments

For local development use the command AB_EXPERIMENT="xy" make regenerate or AB_EXPERIMENT="xy" make html together with make serve to review the experiments. When you are ready to publish them online execute the following sequence of commands:

rm -rf output/
make github
AB_EXPERIMENT="01" make github
AB_EXPERIMENT="02" make github

By default publishconf.py contains DELETE_OUTPUT_DIRECTORY = True which causes pelican-ab to raise an exception. The problem is that you need to execute make publish or make github for each experiment you'd like to publish online. When DELETE_OUTPUT_DIRECTORY is True the previous contents will be deleted and ONLY that variation will be published! This will break your website because everything will be gone!

A/B testing

Now that we finally got our experiments encoded and rendered it is time to re-route some of the web traffic to them and analyze the results. pelican-ab is not designed to deal with this, you will have to use external tools to control how your web traffic is redirected to your experiments and what sort of results are collected. Our favorite ones are LuckyOrange and Optimizely.

Support

jinja-ab and pelican-ab are provided as open source for everyone to use. At Mr. Senko we will do our best to accommodate every need and merge patches and feature requests as they come in. Should you need commercial support for these or other open source libraries please subscribe to Mr. Senko!

There are comments.