diff --git a/_test/mysql.conf.php.dist b/_test/mysql.conf.php.dist
index d72c9886e71a9f73db40f68a919b917cb3e3e5d2..ea6ecefafb2faae430119911858636db36c4f9a7 100644
--- a/_test/mysql.conf.php.dist
+++ b/_test/mysql.conf.php.dist
@@ -4,5 +4,6 @@
  * to create and drop databases.
  */
 $conf['host'] = 'localhost';
+$conf['port'] = 3306;
 $conf['user'] = 'root';
 $conf['pass'] = '';
diff --git a/_test/pgsql.conf.php.dist b/_test/pgsql.conf.php.dist
new file mode 100644
index 0000000000000000000000000000000000000000..4126a8c6c7ba022ef2eef480ad2b0c468f6c13be
--- /dev/null
+++ b/_test/pgsql.conf.php.dist
@@ -0,0 +1,9 @@
+<?php
+/**
+ * This configures the access to a postgres database. The user needs to have permissions
+ * to create and drop databases.
+ */
+$conf['host'] = 'localhost';
+$conf['port'] = 5432;
+$conf['user'] = 'postgres';
+$conf['pass'] = '';
diff --git a/lib/plugins/authpdo/_test/mysql.test.php b/lib/plugins/authpdo/_test/mysql.test.php
index 8a2c3507f1ea46e60d2fe9a3a23f5bce4db4d370..374bcfba32cdf21b05bce92252816e2b721b4d13 100644
--- a/lib/plugins/authpdo/_test/mysql.test.php
+++ b/lib/plugins/authpdo/_test/mysql.test.php
@@ -1,21 +1,23 @@
 <?php
 
 /**
- * MySQL tests for the authpdo plugin
+ * mysql tests for the authpdo plugin
  *
  * @group plugin_authpdo
  * @group plugins
  */
 class mysql_plugin_authpdo_test extends DokuWikiTest {
 
+    protected $driver = 'mysql';
     protected $host = '';
     protected $database = 'authpdo_testing';
     protected $user = '';
     protected $pass = '';
+    protected $port = '';
 
     public function setUp() {
         parent::setUp();
-        $configuration = DOKU_UNITTEST . 'mysql.conf.php';
+        $configuration = DOKU_UNITTEST . "{$this->driver}.conf.php";
         if(!file_exists($configuration)) {
             return;
         }
@@ -24,14 +26,31 @@ class mysql_plugin_authpdo_test extends DokuWikiTest {
         $this->host = $conf['host'];
         $this->user = $conf['user'];
         $this->pass = $conf['pass'];
+        $this->port = $conf['port'];
     }
 
     /**
-     * Check if database credentials exist
+     * try to remove the last set up database
+     *
+     * it might still be there if something went wrong
+     */
+    public function tearDown() {
+        parent::tearDown();
+        $this->dropDatabase();
+    }
+
+    /**
+     * Check if database credentials and extensions exist
      */
     public function test_requirements() {
         if(!$this->host || !$this->user) {
-            $this->markTestSkipped("Skipped mysql tests. Missing configuration");
+            $this->markTestSkipped("Skipped {$this->driver} tests. Missing configuration");
+        }
+        if(!class_exists('PDO')) {
+            $this->markTestSkipped("Skipped {$this->driver} tests. Missing PDO extension");
+        }
+        if(!in_array($this->driver, pdo_drivers())) {
+            $this->markTestSkipped("Skipped {$this->driver} tests. Missing pdo_{$this->driver} extension");
         }
     }
 
@@ -40,7 +59,7 @@ class mysql_plugin_authpdo_test extends DokuWikiTest {
      */
     protected function createDatabase() {
         $pdo = new PDO(
-            "mysql:dbname=;host={$this->host}", $this->user, $this->pass,
+            "{$this->driver}:host={$this->host};port={$this->port}", $this->user, $this->pass,
             array(
                 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
             )
@@ -55,12 +74,16 @@ class mysql_plugin_authpdo_test extends DokuWikiTest {
      */
     protected function dropDatabase() {
         $pdo = new PDO(
-            "mysql:dbname={$this->database};host={$this->host}", $this->user, $this->pass,
+            "{$this->driver}:host={$this->host};port={$this->port}", $this->user, $this->pass,
             array(
                 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
             )
         );
-        $pdo->exec("DROP DATABASE IF EXISTS {$this->database}");
+        try {
+            $pdo->exec("DROP DATABASE IF EXISTS {$this->database}");
+        } catch (PDOException $e) {
+            // ignore - sometimes this fails even though the database was deleted
+        }
         $pdo = null;
     }
 
@@ -73,7 +96,7 @@ class mysql_plugin_authpdo_test extends DokuWikiTest {
         // connect to database and import dump
         $pdo = null;
         $pdo = new PDO(
-            "mysql:dbname={$this->database};host={$this->host}", $this->user, $this->pass,
+            "{$this->driver}:dbname={$this->database};host={$this->host};port={$this->port}", $this->user, $this->pass,
             array(
                 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
             )
@@ -232,10 +255,10 @@ class mysql_plugin_authpdo_test extends DokuWikiTest {
      *
      * @depends test_requirements
      */
-    public function test_mysql() {
+    public function test_pgsql() {
         global $conf;
 
-        $files = glob(__DIR__ . '/mysql/*.php');
+        $files = glob(__DIR__ . "/{$this->driver}/*.php");
         foreach($files as $file) {
             $dump = preg_replace('/\.php$/', '.sql', $file);
             $this->database = 'authpdo_testing_' . basename($file, '.php');
@@ -249,7 +272,7 @@ class mysql_plugin_authpdo_test extends DokuWikiTest {
 
             $conf['plugin']['authpdo'] = array();
             $conf['plugin']['authpdo'] = $data['conf'];
-            $conf['plugin']['authpdo']['dsn'] = "mysql:dbname={$this->database};host={$this->host}";
+            $conf['plugin']['authpdo']['dsn'] = "{$this->driver}:dbname={$this->database};host={$this->host};port={$this->port}";
             $conf['plugin']['authpdo']['user'] = $this->user;
             $conf['plugin']['authpdo']['pass'] = $this->pass;
             $conf['plugin']['authpdo']['debug'] = 1;
diff --git a/lib/plugins/authpdo/_test/pgsql.test.php b/lib/plugins/authpdo/_test/pgsql.test.php
new file mode 100644
index 0000000000000000000000000000000000000000..31400aeb3962b1838d277c927e8eaa19542e054f
--- /dev/null
+++ b/lib/plugins/authpdo/_test/pgsql.test.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * pgsql tests for the authpdo plugin
+ *
+ * @group plugin_authpdo
+ * @group plugins
+ */
+class pgsql_plugin_authpdo_test extends mysql_plugin_authpdo_test {
+
+    protected $driver = 'pgsql';
+
+}
diff --git a/lib/plugins/authpdo/_test/pgsql/django.php b/lib/plugins/authpdo/_test/pgsql/django.php
new file mode 100644
index 0000000000000000000000000000000000000000..3a0f83278136c2c7b30d92de80758aaf75a2e2f1
--- /dev/null
+++ b/lib/plugins/authpdo/_test/pgsql/django.php
@@ -0,0 +1,135 @@
+<?php
+/**
+ * Django application config
+ *
+ */
+/** @noinspection SqlResolve */
+$data = array(
+    'passcrypt' => 'djangopbkdf2_sha256',
+    'conf' => array(
+        'select-user' => '
+            SELECT id AS uid,
+                   username AS "user",
+                   CONCAT_WS(\' \', first_name, last_name) AS name,
+                   password AS hash,
+                   email AS mail
+              FROM auth_user
+             WHERE username = :user
+        ',
+        'select-user-groups' => '
+            SELECT G.name AS "group"
+              FROM auth_group G, auth_user_groups UG
+             WHERE UG.user_id = :uid
+               AND UG.group_id = G.id
+        ',
+        'select-groups' => '
+            SELECT id AS gid, name AS "group"
+              FROM auth_group
+        ',
+        'insert-user' => '
+            INSERT INTO auth_user
+                   (password, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined)
+                   VALUES (:hash, false, :user, SPLIT_PART(:name,\' \',1), SPLIT_PART(:name,\' \',2), :mail, false, true, NOW())
+        ',
+        'delete-user' => '
+            DELETE FROM auth_user_user_permissions
+             WHERE user_id = :uid
+            ;
+            DELETE FROM auth_user
+             WHERE id = :uid
+        ',
+        'list-users' => '
+            SELECT DISTINCT U.username AS "user"
+              FROM auth_user U, auth_user_groups UG, auth_group G
+             WHERE U.id = UG.user_id
+               AND G.id = UG.group_id
+               AND G.name LIKE :group
+               AND U.username LIKE :user
+               AND CONCAT_WS(\' \', U.first_name, U.last_name) LIKE :name
+               AND U.email LIKE :mail
+          ORDER BY username
+             LIMIT :limit
+            OFFSET :start
+        ',
+        'count-users' => '
+            SELECT COUNT(DISTINCT U.username) AS count
+              FROM auth_user U, auth_user_groups UG, auth_group G
+             WHERE U.id = UG.user_id
+               AND G.id = UG.group_id
+               AND G.name LIKE :group
+               AND U.username LIKE :user
+               AND CONCAT_WS(\' \', U.first_name, U.last_name) LIKE :name
+               AND U.email LIKE :mail
+        ',
+        'update-user-info' => '
+            UPDATE auth_user
+               SET first_name = SPLIT_PART(:name,\' \',1),
+                   last_name = SPLIT_PART(:name,\' \',2),
+                   email = :mail
+             WHERE id = :uid
+        ',
+        'update-user-login' => '
+            UPDATE auth_user
+               SET username = :newlogin
+             WHERE id = :uid
+        ',
+        'update-user-pass' => '
+            UPDATE auth_user
+               SET password = :hash
+             WHERE id = :uid
+        ',
+        'insert-group' => '
+            INSERT INTO auth_group (name) VALUES (:group)
+        ',
+        'join-group' => '
+            INSERT INTO auth_user_groups (user_id, group_id) VALUES (:uid, :gid)
+        ',
+        'leave-group' => '
+            DELETE FROM auth_user_groups
+             WHERE user_id = :uid
+               AND group_id = :gid
+        ',
+    ),
+    'users' => array(
+        array(
+            'user' => 'test-billing',
+            'pass' => 'P4zzW0rd!',
+            'name' => 'Joana Gröschel',
+            'mail' => 'jg@billing.com',
+            'grps' =>
+                array(
+                    0 => 'Billing',
+                ),
+        ),
+        array(
+            'user' => 'test-kunde',
+            'pass' => 'P4zzW0rd!',
+            'name' => 'Niels Buchberger',
+            'mail' => 'ng@kunde.com',
+            'grps' =>
+                array(
+                    0 => 'Kunden',
+                ),
+        ),
+        array(
+            'user' => 'test-mitarbeiter',
+            'pass' => 'P4zzW0rd!',
+            'name' => 'Claus Wernke',
+            'mail' => 'cw@mitarbeiter.com',
+            'grps' =>
+                array(
+                    0 => 'Mitarbeiter',
+                ),
+        ),
+        array(
+            'user' => 'test-projektleiter',
+            'pass' => 'P4zzW0rd!',
+            'name' => 'Sascha Weiher',
+            'mail' => 'sw@projektleiter.com',
+            'grps' =>
+                array(
+                    0 => 'Projektleiter',
+                ),
+        ),
+    ),
+);
diff --git a/lib/plugins/authpdo/_test/pgsql/django.sql b/lib/plugins/authpdo/_test/pgsql/django.sql
new file mode 100644
index 0000000000000000000000000000000000000000..86055268c9a4ed706ae3b96acc8dbdadd44010c9
--- /dev/null
+++ b/lib/plugins/authpdo/_test/pgsql/django.sql
@@ -0,0 +1,1358 @@
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 9.5.1
+-- Dumped by pg_dump version 9.5.1
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+SET row_security = off;
+
+--
+-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: 
+--
+
+CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
+
+
+--
+-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: 
+--
+
+COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
+
+
+SET search_path = public, pg_catalog;
+
+SET default_tablespace = '';
+
+SET default_with_oids = false;
+
+--
+-- Name: auth_group; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE auth_group (
+    id integer NOT NULL,
+    name character varying(80) NOT NULL
+);
+
+
+ALTER TABLE auth_group OWNER TO postgres;
+
+--
+-- Name: auth_group_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE auth_group_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE auth_group_id_seq OWNER TO postgres;
+
+--
+-- Name: auth_group_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE auth_group_id_seq OWNED BY auth_group.id;
+
+
+--
+-- Name: auth_group_permissions; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE auth_group_permissions (
+    id integer NOT NULL,
+    group_id integer NOT NULL,
+    permission_id integer NOT NULL
+);
+
+
+ALTER TABLE auth_group_permissions OWNER TO postgres;
+
+--
+-- Name: auth_group_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE auth_group_permissions_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE auth_group_permissions_id_seq OWNER TO postgres;
+
+--
+-- Name: auth_group_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE auth_group_permissions_id_seq OWNED BY auth_group_permissions.id;
+
+
+--
+-- Name: auth_permission; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE auth_permission (
+    id integer NOT NULL,
+    name character varying(255) NOT NULL,
+    content_type_id integer NOT NULL,
+    codename character varying(100) NOT NULL
+);
+
+
+ALTER TABLE auth_permission OWNER TO postgres;
+
+--
+-- Name: auth_permission_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE auth_permission_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE auth_permission_id_seq OWNER TO postgres;
+
+--
+-- Name: auth_permission_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE auth_permission_id_seq OWNED BY auth_permission.id;
+
+
+--
+-- Name: auth_user; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE auth_user (
+    id integer NOT NULL,
+    password character varying(128) NOT NULL,
+    last_login timestamp with time zone,
+    is_superuser boolean NOT NULL,
+    username character varying(30) NOT NULL,
+    first_name character varying(30) NOT NULL,
+    last_name character varying(30) NOT NULL,
+    email character varying(254) NOT NULL,
+    is_staff boolean NOT NULL,
+    is_active boolean NOT NULL,
+    date_joined timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE auth_user OWNER TO postgres;
+
+--
+-- Name: auth_user_groups; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE auth_user_groups (
+    id integer NOT NULL,
+    user_id integer NOT NULL,
+    group_id integer NOT NULL
+);
+
+
+ALTER TABLE auth_user_groups OWNER TO postgres;
+
+--
+-- Name: auth_user_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE auth_user_groups_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE auth_user_groups_id_seq OWNER TO postgres;
+
+--
+-- Name: auth_user_groups_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE auth_user_groups_id_seq OWNED BY auth_user_groups.id;
+
+
+--
+-- Name: auth_user_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE auth_user_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE auth_user_id_seq OWNER TO postgres;
+
+--
+-- Name: auth_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE auth_user_id_seq OWNED BY auth_user.id;
+
+
+--
+-- Name: auth_user_user_permissions; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE auth_user_user_permissions (
+    id integer NOT NULL,
+    user_id integer NOT NULL,
+    permission_id integer NOT NULL
+);
+
+
+ALTER TABLE auth_user_user_permissions OWNER TO postgres;
+
+--
+-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE auth_user_user_permissions_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE auth_user_user_permissions_id_seq OWNER TO postgres;
+
+--
+-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE auth_user_user_permissions_id_seq OWNED BY auth_user_user_permissions.id;
+
+
+--
+-- Name: django_admin_log; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE django_admin_log (
+    id integer NOT NULL,
+    action_time timestamp with time zone NOT NULL,
+    object_id text,
+    object_repr character varying(200) NOT NULL,
+    action_flag smallint NOT NULL,
+    change_message text NOT NULL,
+    content_type_id integer,
+    user_id integer NOT NULL,
+    CONSTRAINT django_admin_log_action_flag_check CHECK ((action_flag >= 0))
+);
+
+
+ALTER TABLE django_admin_log OWNER TO postgres;
+
+--
+-- Name: django_admin_log_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE django_admin_log_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE django_admin_log_id_seq OWNER TO postgres;
+
+--
+-- Name: django_admin_log_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE django_admin_log_id_seq OWNED BY django_admin_log.id;
+
+
+--
+-- Name: django_content_type; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE django_content_type (
+    id integer NOT NULL,
+    app_label character varying(100) NOT NULL,
+    model character varying(100) NOT NULL
+);
+
+
+ALTER TABLE django_content_type OWNER TO postgres;
+
+--
+-- Name: django_content_type_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE django_content_type_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE django_content_type_id_seq OWNER TO postgres;
+
+--
+-- Name: django_content_type_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE django_content_type_id_seq OWNED BY django_content_type.id;
+
+
+--
+-- Name: django_migrations; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE django_migrations (
+    id integer NOT NULL,
+    app character varying(255) NOT NULL,
+    name character varying(255) NOT NULL,
+    applied timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE django_migrations OWNER TO postgres;
+
+--
+-- Name: django_migrations_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE django_migrations_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE django_migrations_id_seq OWNER TO postgres;
+
+--
+-- Name: django_migrations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE django_migrations_id_seq OWNED BY django_migrations.id;
+
+
+--
+-- Name: django_session; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE django_session (
+    session_key character varying(40) NOT NULL,
+    session_data text NOT NULL,
+    expire_date timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE django_session OWNER TO postgres;
+
+--
+-- Name: timetracker_billingperiod; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE timetracker_billingperiod (
+    id integer NOT NULL,
+    time_from timestamp with time zone NOT NULL,
+    time_until timestamp with time zone NOT NULL,
+    closed boolean NOT NULL,
+    identifier character varying(10),
+    project_id integer NOT NULL
+);
+
+
+ALTER TABLE timetracker_billingperiod OWNER TO postgres;
+
+--
+-- Name: timetracker_billingperiod_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE timetracker_billingperiod_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE timetracker_billingperiod_id_seq OWNER TO postgres;
+
+--
+-- Name: timetracker_billingperiod_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE timetracker_billingperiod_id_seq OWNED BY timetracker_billingperiod.id;
+
+
+--
+-- Name: timetracker_project; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE timetracker_project (
+    id integer NOT NULL,
+    name character varying(200) NOT NULL,
+    billing_id character varying(50) NOT NULL,
+    active boolean NOT NULL,
+    time_created timestamp with time zone NOT NULL,
+    last_modified timestamp with time zone NOT NULL
+);
+
+
+ALTER TABLE timetracker_project OWNER TO postgres;
+
+--
+-- Name: timetracker_project_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE timetracker_project_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE timetracker_project_id_seq OWNER TO postgres;
+
+--
+-- Name: timetracker_project_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE timetracker_project_id_seq OWNED BY timetracker_project.id;
+
+
+--
+-- Name: timetracker_project_members; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE timetracker_project_members (
+    id integer NOT NULL,
+    project_id integer NOT NULL,
+    user_id integer NOT NULL
+);
+
+
+ALTER TABLE timetracker_project_members OWNER TO postgres;
+
+--
+-- Name: timetracker_project_members_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE timetracker_project_members_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE timetracker_project_members_id_seq OWNER TO postgres;
+
+--
+-- Name: timetracker_project_members_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE timetracker_project_members_id_seq OWNED BY timetracker_project_members.id;
+
+
+--
+-- Name: timetracker_worklog; Type: TABLE; Schema: public; Owner: postgres
+--
+
+CREATE TABLE timetracker_worklog (
+    id integer NOT NULL,
+    time_from timestamp with time zone NOT NULL,
+    time_until timestamp with time zone NOT NULL,
+    description text NOT NULL,
+    office_hour_rate boolean NOT NULL,
+    project_id integer NOT NULL,
+    user_id integer NOT NULL,
+    billing_period_id integer
+);
+
+
+ALTER TABLE timetracker_worklog OWNER TO postgres;
+
+--
+-- Name: timetracker_worklog_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
+--
+
+CREATE SEQUENCE timetracker_worklog_id_seq
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE timetracker_worklog_id_seq OWNER TO postgres;
+
+--
+-- Name: timetracker_worklog_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
+--
+
+ALTER SEQUENCE timetracker_worklog_id_seq OWNED BY timetracker_worklog.id;
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group ALTER COLUMN id SET DEFAULT nextval('auth_group_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group_permissions ALTER COLUMN id SET DEFAULT nextval('auth_group_permissions_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_permission ALTER COLUMN id SET DEFAULT nextval('auth_permission_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user ALTER COLUMN id SET DEFAULT nextval('auth_user_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_groups ALTER COLUMN id SET DEFAULT nextval('auth_user_groups_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_user_permissions ALTER COLUMN id SET DEFAULT nextval('auth_user_user_permissions_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_admin_log ALTER COLUMN id SET DEFAULT nextval('django_admin_log_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_content_type ALTER COLUMN id SET DEFAULT nextval('django_content_type_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_migrations ALTER COLUMN id SET DEFAULT nextval('django_migrations_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_billingperiod ALTER COLUMN id SET DEFAULT nextval('timetracker_billingperiod_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project ALTER COLUMN id SET DEFAULT nextval('timetracker_project_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project_members ALTER COLUMN id SET DEFAULT nextval('timetracker_project_members_id_seq'::regclass);
+
+
+--
+-- Name: id; Type: DEFAULT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_worklog ALTER COLUMN id SET DEFAULT nextval('timetracker_worklog_id_seq'::regclass);
+
+
+--
+-- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO auth_group (id, name) VALUES (2, 'Kunden');
+INSERT INTO auth_group (id, name) VALUES (3, 'Projektleiter');
+INSERT INTO auth_group (id, name) VALUES (1, 'Mitarbeiter');
+INSERT INTO auth_group (id, name) VALUES (4, 'Billing');
+
+
+--
+-- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('auth_group_id_seq', 4, true);
+
+
+--
+-- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (1, 4, 8);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (2, 4, 7);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (3, 3, 1);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (4, 3, 2);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (5, 3, 3);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (6, 3, 4);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (7, 3, 5);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (8, 3, 6);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (9, 1, 4);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (10, 1, 5);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (11, 1, 6);
+INSERT INTO auth_group_permissions (id, group_id, permission_id) VALUES (12, 4, 9);
+
+
+--
+-- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('auth_group_permissions_id_seq', 12, true);
+
+
+--
+-- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (1, 'Can add project', 1, 'add_project');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (2, 'Can change project', 1, 'change_project');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (3, 'Can delete project', 1, 'delete_project');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (4, 'Can add work log', 2, 'add_worklog');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (5, 'Can change work log', 2, 'change_worklog');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (6, 'Can delete work log', 2, 'delete_worklog');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (7, 'Can add billing period', 3, 'add_billingperiod');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (8, 'Can change billing period', 3, 'change_billingperiod');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (9, 'Can delete billing period', 3, 'delete_billingperiod');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (10, 'Can add log entry', 4, 'add_logentry');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (11, 'Can change log entry', 4, 'change_logentry');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (12, 'Can delete log entry', 4, 'delete_logentry');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (13, 'Can add permission', 5, 'add_permission');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (14, 'Can change permission', 5, 'change_permission');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (15, 'Can delete permission', 5, 'delete_permission');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (16, 'Can add group', 6, 'add_group');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (17, 'Can change group', 6, 'change_group');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (18, 'Can delete group', 6, 'delete_group');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (19, 'Can add user', 7, 'add_user');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (20, 'Can change user', 7, 'change_user');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (21, 'Can delete user', 7, 'delete_user');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (22, 'Can add content type', 8, 'add_contenttype');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (23, 'Can change content type', 8, 'change_contenttype');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (24, 'Can delete content type', 8, 'delete_contenttype');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (25, 'Can add session', 9, 'add_session');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (26, 'Can change session', 9, 'change_session');
+INSERT INTO auth_permission (id, name, content_type_id, codename) VALUES (27, 'Can delete session', 9, 'delete_session');
+
+
+--
+-- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('auth_permission_id_seq', 27, true);
+
+
+--
+-- Data for Name: auth_user; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) VALUES (5, 'pbkdf2_sha256$24000$LakQQ2OOTO1v$dmUgz8V7zcpaoBSA3MV76J5a4rzrszF0NpxGx6HRBbE=', NULL, false, 'test-billing', 'Joana', 'Gröschel', 'jg@billing.com', true, true, '2016-03-07 15:58:49+01');
+INSERT INTO auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) VALUES (3, 'pbkdf2_sha256$24000$PXogIZpE4gaK$F/P/L5SRrbb6taOGEr4w6DhxjMzNAj1jEWTPyAUn8WU=', NULL, false, 'test-kunde', 'Niels', 'Buchberger', 'ng@kunde.com', false, true, '2016-03-07 15:57:52+01');
+INSERT INTO auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) VALUES (2, 'pbkdf2_sha256$24000$vtn5APnhirmB$/jzJXYvm78X8/FCOMhGUmcCy0iWhtk0L1hcBWN1AYZc=', NULL, false, 'test-mitarbeiter', 'Claus', 'Wernke', 'cw@mitarbeiter.com', false, true, '2016-03-07 15:57:23+01');
+INSERT INTO auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) VALUES (4, 'pbkdf2_sha256$24000$meyCtGKrS5Ai$vkMfMzB/yGFKplmXujgtfl3OGR27AwOQmP+YeRP6lbw=', NULL, false, 'test-projektleiter', 'Sascha', 'Weiher', 'sw@projektleiter.com', true, true, '2016-03-07 15:58:09+01');
+INSERT INTO auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) VALUES (1, 'pbkdf2_sha256$24000$M8ecC8zfqLmJ$l6cIa/Od+m56VMm9hJbdPNhTXZykPVbUGGTPx7/VRE4=', '2016-03-07 15:54:45+01', true, 'admin', 'Admin', 'Istrator', 'admin@example.com', true, true, '2016-03-07 15:54:22+01');
+
+
+--
+-- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO auth_user_groups (id, user_id, group_id) VALUES (1, 2, 1);
+INSERT INTO auth_user_groups (id, user_id, group_id) VALUES (2, 3, 2);
+INSERT INTO auth_user_groups (id, user_id, group_id) VALUES (3, 4, 3);
+INSERT INTO auth_user_groups (id, user_id, group_id) VALUES (4, 5, 4);
+
+
+--
+-- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('auth_user_groups_id_seq', 4, true);
+
+
+--
+-- Name: auth_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('auth_user_id_seq', 5, true);
+
+
+--
+-- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO auth_user_user_permissions (id, user_id, permission_id) VALUES (1, 4, 19);
+INSERT INTO auth_user_user_permissions (id, user_id, permission_id) VALUES (2, 4, 20);
+INSERT INTO auth_user_user_permissions (id, user_id, permission_id) VALUES (3, 4, 21);
+
+
+--
+-- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('auth_user_user_permissions_id_seq', 3, true);
+
+
+--
+-- Data for Name: django_admin_log; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (1, '2016-03-07 15:54:56.300644+01', '1', 'Mitarbeiter', 1, 'Hinzugefügt.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (2, '2016-03-07 15:55:03.567461+01', '2', 'Kunden', 1, 'Hinzugefügt.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (3, '2016-03-07 15:55:12.909732+01', '3', 'Projektleiter', 1, 'Hinzugefügt.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (4, '2016-03-07 15:55:19.286428+01', '4', 'Billing', 1, 'Hinzugefügt.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (5, '2016-03-07 15:55:46.352427+01', '4', 'Billing', 2, 'permissions geändert.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (6, '2016-03-07 15:56:20.226365+01', '3', 'Projektleiter', 2, 'permissions geändert.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (7, '2016-03-07 15:56:28.990235+01', '1', 'Mitarbeiter', 2, 'permissions geändert.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (8, '2016-03-07 15:56:52.876303+01', '4', 'Billing', 2, 'permissions geändert.', 6, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (9, '2016-03-07 15:57:23.335998+01', '2', 'test-mitarbeiter', 1, 'Hinzugefügt.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (10, '2016-03-07 15:57:44.179275+01', '2', 'test-mitarbeiter', 2, 'groups geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (11, '2016-03-07 15:57:52.235262+01', '3', 'test-kunde', 1, 'Hinzugefügt.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (12, '2016-03-07 15:57:59.05676+01', '3', 'test-kunde', 2, 'groups geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (13, '2016-03-07 15:58:10.0047+01', '4', 'test-projektleiter', 1, 'Hinzugefügt.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (14, '2016-03-07 15:58:35.229359+01', '4', 'test-projektleiter', 2, 'is_staff, groups und user_permissions geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (15, '2016-03-07 15:58:49.513774+01', '5', 'test-billing', 1, 'Hinzugefügt.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (16, '2016-03-07 15:58:55.398695+01', '5', 'test-billing', 2, 'is_staff und groups geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (17, '2016-03-07 15:59:56.823546+01', '5', 'test-billing', 2, 'first_name, last_name und email geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (18, '2016-03-07 16:00:15.718568+01', '3', 'test-kunde', 2, 'first_name, last_name und email geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (19, '2016-03-07 16:00:37.583668+01', '2', 'test-mitarbeiter', 2, 'first_name, last_name und email geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (20, '2016-03-07 16:00:59.426815+01', '4', 'test-projektleiter', 2, 'first_name, last_name und email geändert.', 7, 1);
+INSERT INTO django_admin_log (id, action_time, object_id, object_repr, action_flag, change_message, content_type_id, user_id) VALUES (21, '2016-03-07 16:01:13.440369+01', '1', 'admin', 2, 'first_name und last_name geändert.', 7, 1);
+
+
+--
+-- Name: django_admin_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('django_admin_log_id_seq', 21, true);
+
+
+--
+-- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO django_content_type (id, app_label, model) VALUES (1, 'timetracker', 'project');
+INSERT INTO django_content_type (id, app_label, model) VALUES (2, 'timetracker', 'worklog');
+INSERT INTO django_content_type (id, app_label, model) VALUES (3, 'timetracker', 'billingperiod');
+INSERT INTO django_content_type (id, app_label, model) VALUES (4, 'admin', 'logentry');
+INSERT INTO django_content_type (id, app_label, model) VALUES (5, 'auth', 'permission');
+INSERT INTO django_content_type (id, app_label, model) VALUES (6, 'auth', 'group');
+INSERT INTO django_content_type (id, app_label, model) VALUES (7, 'auth', 'user');
+INSERT INTO django_content_type (id, app_label, model) VALUES (8, 'contenttypes', 'contenttype');
+INSERT INTO django_content_type (id, app_label, model) VALUES (9, 'sessions', 'session');
+
+
+--
+-- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('django_content_type_id_seq', 9, true);
+
+
+--
+-- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO django_migrations (id, app, name, applied) VALUES (1, 'contenttypes', '0001_initial', '2016-03-07 15:53:25.193162+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (2, 'auth', '0001_initial', '2016-03-07 15:53:25.273474+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (3, 'admin', '0001_initial', '2016-03-07 15:53:25.30131+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (4, 'admin', '0002_logentry_remove_auto_add', '2016-03-07 15:53:25.319456+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (5, 'contenttypes', '0002_remove_content_type_name', '2016-03-07 15:53:25.36513+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (6, 'auth', '0002_alter_permission_name_max_length', '2016-03-07 15:53:25.38065+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (7, 'auth', '0003_alter_user_email_max_length', '2016-03-07 15:53:25.398969+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (8, 'auth', '0004_alter_user_username_opts', '2016-03-07 15:53:25.41613+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (9, 'auth', '0005_alter_user_last_login_null', '2016-03-07 15:53:25.434578+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (10, 'auth', '0006_require_contenttypes_0002', '2016-03-07 15:53:25.437224+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (11, 'auth', '0007_alter_validators_add_error_messages', '2016-03-07 15:53:25.45391+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (12, 'sessions', '0001_initial', '2016-03-07 15:53:25.46445+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (13, 'timetracker', '0001_initial', '2016-03-07 15:53:25.530527+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (14, 'timetracker', '0002_billingperiod', '2016-03-07 15:53:25.560994+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (15, 'timetracker', '0003_local_datetime_fields', '2016-03-07 15:53:25.677892+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (16, 'timetracker', '0004_worklog_billing_period', '2016-03-07 15:53:25.703913+01');
+INSERT INTO django_migrations (id, app, name, applied) VALUES (17, 'timetracker', '0005_billing_period_identifier_index', '2016-03-07 15:53:25.726466+01');
+
+
+--
+-- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('django_migrations_id_seq', 17, true);
+
+
+--
+-- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+INSERT INTO django_session (session_key, session_data, expire_date) VALUES ('lu5upc331w1hp9t6ofu5xt5asbd4k5mv', 'ODMxNDFiOGMzYTJmNGFkM2ZhZmVkOWEyMmZhMjJmMDgzNTg4ZWJlMTp7Il9hdXRoX3VzZXJfaGFzaCI6ImQxODIzNDYyYWU2ZjNiZmVmOGJkZTFlMmJiYTE3ZDkyOGQ3NDAwMTAiLCJfYXV0aF91c2VyX2JhY2tlbmQiOiJkamFuZ28uY29udHJpYi5hdXRoLmJhY2tlbmRzLk1vZGVsQmFja2VuZCIsIl9hdXRoX3VzZXJfaWQiOiIxIn0=', '2016-03-21 15:54:45.280447+01');
+
+
+--
+-- Data for Name: timetracker_billingperiod; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+
+
+--
+-- Name: timetracker_billingperiod_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('timetracker_billingperiod_id_seq', 1, false);
+
+
+--
+-- Data for Name: timetracker_project; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+
+
+--
+-- Name: timetracker_project_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('timetracker_project_id_seq', 1, false);
+
+
+--
+-- Data for Name: timetracker_project_members; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+
+
+--
+-- Name: timetracker_project_members_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('timetracker_project_members_id_seq', 1, false);
+
+
+--
+-- Data for Name: timetracker_worklog; Type: TABLE DATA; Schema: public; Owner: postgres
+--
+
+
+
+--
+-- Name: timetracker_worklog_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
+--
+
+SELECT pg_catalog.setval('timetracker_worklog_id_seq', 1, false);
+
+
+--
+-- Name: auth_group_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group
+    ADD CONSTRAINT auth_group_name_key UNIQUE (name);
+
+
+--
+-- Name: auth_group_permissions_group_id_0cd325b0_uniq; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group_permissions
+    ADD CONSTRAINT auth_group_permissions_group_id_0cd325b0_uniq UNIQUE (group_id, permission_id);
+
+
+--
+-- Name: auth_group_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group_permissions
+    ADD CONSTRAINT auth_group_permissions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_group_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group
+    ADD CONSTRAINT auth_group_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_permission_content_type_id_01ab375a_uniq; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_permission
+    ADD CONSTRAINT auth_permission_content_type_id_01ab375a_uniq UNIQUE (content_type_id, codename);
+
+
+--
+-- Name: auth_permission_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_permission
+    ADD CONSTRAINT auth_permission_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_groups
+    ADD CONSTRAINT auth_user_groups_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_groups_user_id_94350c0c_uniq; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_groups
+    ADD CONSTRAINT auth_user_groups_user_id_94350c0c_uniq UNIQUE (user_id, group_id);
+
+
+--
+-- Name: auth_user_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user
+    ADD CONSTRAINT auth_user_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_user_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_user_permissions
+    ADD CONSTRAINT auth_user_user_permissions_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_user_user_permissions_user_id_14a6b632_uniq; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_user_permissions
+    ADD CONSTRAINT auth_user_user_permissions_user_id_14a6b632_uniq UNIQUE (user_id, permission_id);
+
+
+--
+-- Name: auth_user_username_key; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user
+    ADD CONSTRAINT auth_user_username_key UNIQUE (username);
+
+
+--
+-- Name: django_admin_log_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_admin_log
+    ADD CONSTRAINT django_admin_log_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_content_type_app_label_76bd3d3b_uniq; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_content_type
+    ADD CONSTRAINT django_content_type_app_label_76bd3d3b_uniq UNIQUE (app_label, model);
+
+
+--
+-- Name: django_content_type_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_content_type
+    ADD CONSTRAINT django_content_type_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_migrations
+    ADD CONSTRAINT django_migrations_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: django_session_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_session
+    ADD CONSTRAINT django_session_pkey PRIMARY KEY (session_key);
+
+
+--
+-- Name: timetracker_billingperiod_identifier_key; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_billingperiod
+    ADD CONSTRAINT timetracker_billingperiod_identifier_key UNIQUE (identifier);
+
+
+--
+-- Name: timetracker_billingperiod_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_billingperiod
+    ADD CONSTRAINT timetracker_billingperiod_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: timetracker_project_members_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project_members
+    ADD CONSTRAINT timetracker_project_members_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: timetracker_project_members_project_id_786577ed_uniq; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project_members
+    ADD CONSTRAINT timetracker_project_members_project_id_786577ed_uniq UNIQUE (project_id, user_id);
+
+
+--
+-- Name: timetracker_project_name_key; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project
+    ADD CONSTRAINT timetracker_project_name_key UNIQUE (name);
+
+
+--
+-- Name: timetracker_project_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project
+    ADD CONSTRAINT timetracker_project_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: timetracker_worklog_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_worklog
+    ADD CONSTRAINT timetracker_worklog_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: auth_group_name_a6ea08ec_like; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_group_name_a6ea08ec_like ON auth_group USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: auth_group_permissions_0e939a4f; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_group_permissions_0e939a4f ON auth_group_permissions USING btree (group_id);
+
+
+--
+-- Name: auth_group_permissions_8373b171; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_group_permissions_8373b171 ON auth_group_permissions USING btree (permission_id);
+
+
+--
+-- Name: auth_permission_417f1b1c; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_permission_417f1b1c ON auth_permission USING btree (content_type_id);
+
+
+--
+-- Name: auth_user_groups_0e939a4f; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_user_groups_0e939a4f ON auth_user_groups USING btree (group_id);
+
+
+--
+-- Name: auth_user_groups_e8701ad4; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_user_groups_e8701ad4 ON auth_user_groups USING btree (user_id);
+
+
+--
+-- Name: auth_user_user_permissions_8373b171; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_user_user_permissions_8373b171 ON auth_user_user_permissions USING btree (permission_id);
+
+
+--
+-- Name: auth_user_user_permissions_e8701ad4; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_user_user_permissions_e8701ad4 ON auth_user_user_permissions USING btree (user_id);
+
+
+--
+-- Name: auth_user_username_6821ab7c_like; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX auth_user_username_6821ab7c_like ON auth_user USING btree (username varchar_pattern_ops);
+
+
+--
+-- Name: django_admin_log_417f1b1c; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX django_admin_log_417f1b1c ON django_admin_log USING btree (content_type_id);
+
+
+--
+-- Name: django_admin_log_e8701ad4; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX django_admin_log_e8701ad4 ON django_admin_log USING btree (user_id);
+
+
+--
+-- Name: django_session_de54fa62; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX django_session_de54fa62 ON django_session USING btree (expire_date);
+
+
+--
+-- Name: django_session_session_key_c0390e0f_like; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX django_session_session_key_c0390e0f_like ON django_session USING btree (session_key varchar_pattern_ops);
+
+
+--
+-- Name: timetracker_billingperiod_b098ad43; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_billingperiod_b098ad43 ON timetracker_billingperiod USING btree (project_id);
+
+
+--
+-- Name: timetracker_billingperiod_identifier_8432361f_like; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_billingperiod_identifier_8432361f_like ON timetracker_billingperiod USING btree (identifier varchar_pattern_ops);
+
+
+--
+-- Name: timetracker_project_members_b098ad43; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_project_members_b098ad43 ON timetracker_project_members USING btree (project_id);
+
+
+--
+-- Name: timetracker_project_members_e8701ad4; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_project_members_e8701ad4 ON timetracker_project_members USING btree (user_id);
+
+
+--
+-- Name: timetracker_project_name_daf0136a_like; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_project_name_daf0136a_like ON timetracker_project USING btree (name varchar_pattern_ops);
+
+
+--
+-- Name: timetracker_worklog_3c1a7956; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_worklog_3c1a7956 ON timetracker_worklog USING btree (billing_period_id);
+
+
+--
+-- Name: timetracker_worklog_b098ad43; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_worklog_b098ad43 ON timetracker_worklog USING btree (project_id);
+
+
+--
+-- Name: timetracker_worklog_e8701ad4; Type: INDEX; Schema: public; Owner: postgres
+--
+
+CREATE INDEX timetracker_worklog_e8701ad4 ON timetracker_worklog USING btree (user_id);
+
+
+--
+-- Name: auth_group_permiss_permission_id_84c5c92e_fk_auth_permission_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group_permissions
+    ADD CONSTRAINT auth_group_permiss_permission_id_84c5c92e_fk_auth_permission_id FOREIGN KEY (permission_id) REFERENCES auth_permission(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_group_permissions_group_id_b120cbf9_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_group_permissions
+    ADD CONSTRAINT auth_group_permissions_group_id_b120cbf9_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES auth_group(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_permiss_content_type_id_2f476e4b_fk_django_content_type_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_permission
+    ADD CONSTRAINT auth_permiss_content_type_id_2f476e4b_fk_django_content_type_id FOREIGN KEY (content_type_id) REFERENCES django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_groups_group_id_97559544_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_groups
+    ADD CONSTRAINT auth_user_groups_group_id_97559544_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES auth_group(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_groups_user_id_6a12ed8b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_groups
+    ADD CONSTRAINT auth_user_groups_user_id_6a12ed8b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_user_per_permission_id_1fbb5f2c_fk_auth_permission_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_user_permissions
+    ADD CONSTRAINT auth_user_user_per_permission_id_1fbb5f2c_fk_auth_permission_id FOREIGN KEY (permission_id) REFERENCES auth_permission(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY auth_user_user_permissions
+    ADD CONSTRAINT auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: django_admin_content_type_id_c4bce8eb_fk_django_content_type_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_admin_log
+    ADD CONSTRAINT django_admin_content_type_id_c4bce8eb_fk_django_content_type_id FOREIGN KEY (content_type_id) REFERENCES django_content_type(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: django_admin_log_user_id_c564eba6_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY django_admin_log
+    ADD CONSTRAINT django_admin_log_user_id_c564eba6_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: time_billing_period_id_c4b944d1_fk_timetracker_billingperiod_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_worklog
+    ADD CONSTRAINT time_billing_period_id_c4b944d1_fk_timetracker_billingperiod_id FOREIGN KEY (billing_period_id) REFERENCES timetracker_billingperiod(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: timetracker_billi_project_id_8dd7b2e2_fk_timetracker_project_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_billingperiod
+    ADD CONSTRAINT timetracker_billi_project_id_8dd7b2e2_fk_timetracker_project_id FOREIGN KEY (project_id) REFERENCES timetracker_project(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: timetracker_proje_project_id_85632ed8_fk_timetracker_project_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project_members
+    ADD CONSTRAINT timetracker_proje_project_id_85632ed8_fk_timetracker_project_id FOREIGN KEY (project_id) REFERENCES timetracker_project(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: timetracker_project_members_user_id_62b48c3e_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_project_members
+    ADD CONSTRAINT timetracker_project_members_user_id_62b48c3e_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: timetracker_workl_project_id_69fa76d5_fk_timetracker_project_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_worklog
+    ADD CONSTRAINT timetracker_workl_project_id_69fa76d5_fk_timetracker_project_id FOREIGN KEY (project_id) REFERENCES timetracker_project(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: timetracker_worklog_user_id_c74c8c68_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: postgres
+--
+
+ALTER TABLE ONLY timetracker_worklog
+    ADD CONSTRAINT timetracker_worklog_user_id_c74c8c68_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES auth_user(id) DEFERRABLE INITIALLY DEFERRED;
+
+
+--
+-- Name: public; Type: ACL; Schema: -; Owner: postgres
+--
+
+REVOKE ALL ON SCHEMA public FROM PUBLIC;
+REVOKE ALL ON SCHEMA public FROM postgres;
+GRANT ALL ON SCHEMA public TO postgres;
+GRANT ALL ON SCHEMA public TO PUBLIC;
+
+
+--
+-- PostgreSQL database dump complete
+--
+