Remove old migrate commands, not been used for years
authorMagnus Hagander <magnus@hagander.net>
Thu, 28 Apr 2016 14:57:14 +0000 (16:57 +0200)
committerMagnus Hagander <magnus@hagander.net>
Sat, 14 May 2016 17:49:13 +0000 (19:49 +0200)
tools/migrate/0_suck_data.sh [deleted file]
tools/migrate/1_crunch_in_sql.sql [deleted file]
tools/migrate/2_convert_to_markdown.pl [deleted file]
tools/migrate/README [deleted file]
tools/migrate/migrate_single_account.py [deleted file]

diff --git a/tools/migrate/0_suck_data.sh b/tools/migrate/0_suck_data.sh
deleted file mode 100755 (executable)
index 9e3c17e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-
-# This script sucks data over from the old server
-
-if [ "$1" == "" -o "$2" == "" ]; then
-   echo "Usage: 0_suck_data.sh <oldconnparams> <newconnparams>"
-   exit 1
-fi
-O=$1
-N=$2
-
-
-(
- echo "BEGIN TRANSACTION;DROP SCHEMA IF EXISTS oldweb CASCADE ; CREATE SCHEMA oldweb; SET search_path='oldweb';"
-
- cat <<EOF
-CREATE FUNCTION news_translation_modified() RETURNS TRIGGER AS \$$ BEGIN END \$$ LANGUAGE 'plpgsql';
-CREATE FUNCTION quotes_translation_modified() RETURNS TRIGGER AS \$$ BEGIN END \$$ LANGUAGE 'plpgsql';
-CREATE FUNCTION survey_translation_modified() RETURNS TRIGGER AS \$$ BEGIN END \$$ LANGUAGE 'plpgsql';
-CREATE FUNCTION event_translation_modified() RETURNS TRIGGER AS \$$ BEGIN END \$$ LANGUAGE 'plpgsql';
-CREATE FUNCTION community_login_trigger_sshkey() RETURNS TRIGGER AS \$$ BEGIN END \$$ LANGUAGE 'plpgsql';
-EOF
-
-  pg_dump $O -t applications -t comments -t countries -t iptocountry -t developers -t developers_types -t events -t events_location -t events_text -t features_categories -t features_features -t features_groups -t features_matrix -t features_versions -t listgroups -t lists -t mirror -t news -t news_text -t organisations -t product_categories -t products -t profserv -t quotes -t quotes_text -t survey_questions -t surveys -t users -E UTF8 -O -x --no-tablespaces 186_www | sed 's/^SET search_path = public/--&/'
- echo "COMMIT;"
-) | psql -v ON_ERROR_STOP=1 $N
-
diff --git a/tools/migrate/1_crunch_in_sql.sql b/tools/migrate/1_crunch_in_sql.sql
deleted file mode 100644 (file)
index e8d1d1e..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-\set ON_ERROR_STOP 1
-BEGIN;
-
-SET CONSTRAINTS ALL DEFERRED;
-
-/* we need a user to map to */
-INSERT INTO auth_user (id, username, first_name, last_name, email, password, is_staff, is_active, is_superuser, last_login, date_joined)
-SELECT 
-       0, '__migrated__', 'Migrated', 'Connection', 'migrated@postgresql.org',
-       '$sha1$thereisnopasswordforthisuser', 'f', 'f', 'f', '1900-01-01', '1900-01-01'
-WHERE NOT EXISTS (SELECT * FROM auth_user WHERE id=0);
-
-/* feature matrix */
-TRUNCATE TABLE featurematrix_featuregroup RESTART IDENTITY CASCADE;
-
-INSERT INTO featurematrix_featuregroup(id, groupname, groupsort)
- SELECT groupid, groupname, groupsort FROM oldweb.features_groups;
-
-/* for each version */
-INSERT INTO featurematrix_feature (id, group_id, featurename, featuredescription,
-       v74, v80, v81, v82, v83, v84, v90, v91)
- SELECT
-  f.featureid, f.groupid, f.featurename, COALESCE(f.featuredescription,''),
-  COALESCE(f74.state, 0),
-  COALESCE(f80.state, 0),
-  COALESCE(f81.state, 0),
-  COALESCE(f82.state, 0),
-  COALESCE(f83.state, 0),
-  COALESCE(f84.state, 0),
-  COALESCE(f90.state, 0),
-  COALESCE(f91.state, 0)
- FROM oldweb.features_features f
- LEFT JOIN oldweb.features_matrix f74 ON (f.featureid = f74.feature AND f74.version=1)
- LEFT JOIN oldweb.features_matrix f80 ON (f.featureid = f80.feature AND f80.version=2)
- LEFT JOIN oldweb.features_matrix f81 ON (f.featureid = f81.feature AND f81.version=3)
- LEFT JOIN oldweb.features_matrix f82 ON (f.featureid = f82.feature AND f82.version=4)
- LEFT JOIN oldweb.features_matrix f83 ON (f.featureid = f83.feature AND f83.version=5)
- LEFT JOIN oldweb.features_matrix f84 ON (f.featureid = f84.feature AND f84.version=6)
- LEFT JOIN oldweb.features_matrix f90 ON (f.featureid = f90.feature AND f90.version=7)
- LEFT JOIN oldweb.features_matrix f91 ON (f.featureid = f91.feature AND f91.version=8)
-;
-
-SELECT setval('featurematrix_feature_id_seq', max(id)) FROM featurematrix_feature;
-SELECT setval('featurematrix_featuregroup_id_seq', max(id)) FROM featurematrix_featuregroup;
-
--- copy of the users table, we need it to migrate users
-CREATE TABLE public.users_old AS SELECT * FROM oldweb.users;
-
--- stackbuilder!
-TRUNCATE TABLE downloads_stackbuilderapp CASCADE;
-
--- First, let's get the apps, minus dependencies
-INSERT INTO downloads_stackbuilderapp (textid, version, platform, name,
-       active, description, category, pgversion, edbversion, format,
-       installoptions, upgradeoptions, checksum, mirrorpath, alturl, versionkey)
-SELECT
-       id, version, platform, name,
-       active, description, category, pgversion, edbversion, format,
-       installoptions, upgradeoptions, checksum, mirrorpath, alturl, versionkey
-FROM oldweb.applications;
--- add dependencies. There is only those on edb_apachephp, so hardcode that because
--- it makes life a *lot* easier
-INSERT INTO downloads_stackbuilderapp_dependencies (from_stackbuilderapp_id, to_stackbuilderapp_id)
-SELECT
-  o.id, n.id
-FROM oldweb.applications a
-inner join downloads_stackbuilderapp o ON (a.id=o.textid AND a.version=o.version AND a.platform=o.platform)
-inner join downloads_stackbuilderapp n ON (n.platform=o.platform and n.textid='edb_apachephp')
-where not dependencies='{}';
-
-
-
---
--- Document comments
-TRUNCATE TABLE docs_doccomment;
-INSERT INTO docs_doccomment (id, version, file, comment, posted_at, submitter_id, approved)
-SELECT
- id, version, file, comment, posted_at, 0, approved
-FROM oldweb.comments WHERE NOT (processed and not approved);
-SELECT setval('docs_doccomment_id_seq', max(id)) FROM docs_doccomment;
-
--- Clear out all organisations and all attached objects (yes, this clears out a lot of stuff)
-TRUNCATE TABLE core_organisation RESTART IDENTITY CASCADE;
-TRUNCATE TABLE core_organisationtype RESTART IDENTITY CASCADE;
-
--- Load the types
-COPY core_organisationtype (id, typename) FROM stdin;
-1      Open Source Project
-2      Individual
-3      Not for profit
-4      Company
-\.
-SELECT setval('core_organisationtype_id_seq', 5);
-
--- Migration record
-INSERT INTO core_organisation (id, name, approved, address, url, email, phone, orgtype_id, lastconfirmed)
-VALUES (0, '_migrated', 't', '', '', '', '', 4, CURRENT_TIMESTAMP);
-
--- Existing organisations
-INSERT INTO core_organisation (name, approved, address, url, email, phone, orgtype_id, lastconfirmed)
-SELECT name, approved, COALESCE(address,''), COALESCE(url,''), COALESCE(email,''), COALESCE(phone,''), 
-CASE WHEN orgtype='i' THEN 2 WHEN orgtype='p' THEN 1 WHEN orgtype='c' THEN 4 WHEN orgtype='n' THEN 3 END,
-lastconfirmed
-FROM oldweb.organisations;
-
--- Create organisations to map events to!
--- First, we need to clear out any non-organisations to mape them to something
-UPDATE oldweb.events SET organisation='' WHERE organisation IS NULL;
-INSERT INTO core_organisation (name, approved, address, url, email, phone, orgtype_id, lastconfirmed)
-SELECT DISTINCT organisation, 't'::boolean, '', '', '', '', 4, CURRENT_TIMESTAMP FROM oldweb.events
-WHERE organisation NOT IN (SELECT name FROM core_organisation);
-
--- Create professional services entries for organisations
-INSERT INTO core_organisation (name, approved, address, url, email, phone, orgtype_id, lastconfirmed)
-SELECT name, 't'::boolean, '', max(COALESCE(url,'')), max(COALESCE(email,'')), '', 4, max(lastconfirmed) FROM oldweb.profserv
-WHERE name NOT IN (SELECT name FROM core_organisation)
-GROUP BY name;
-
--- Add _migrated as manager of all organisations that don't have one set
-INSERT INTO core_organisation_managers (organisation_id, user_id)
-SELECT id, 0 FROM core_organisation
-WHERE id NOT IN (SELECT organisation_id FROM core_organisation_managers);
-
--- Add professional services
-ALTER TABLE profserv_professionalservice DROP CONSTRAINT profserv_professionalservice_organisation_id_key;
-
-INSERT INTO profserv_professionalservice (submitter_id, approved, organisation_id, description, employees, locations,
-region_africa,region_asia,region_europe,region_northamerica,region_oceania,region_southamerica,
-hours,languages,customerexample,experience,contact,url,provides_support,provides_hosting,interfaces)
-SELECT 0, approved, (SELECT id FROM core_organisation WHERE core_organisation.name=profserv.name), description, employees, locations,
-region_africa,region_asia,region_europe,region_northamerica,region_oceania,region_southamerica,
-hours,languages,customerexample,experience,contact,url,provides_support,provides_hosting,interfaces
-FROM oldweb.profserv;
-
-DELETE FROM profserv_professionalservice WHERE id IN (
-   SELECT id FROM profserv_professionalservice
-   WHERE organisation_id IN (
-     SELECT organisation_id FROM profserv_professionalservice
-     GROUP BY organisation_id HAVING count(*)>1)
-   AND id NOT IN (
-     SELECT min(id) FROM profserv_professionalservice
-     GROUP BY organisation_id HAVING count(*)>1)
-);
-
-ALTER TABLE profserv_professionalservice
-ADD CONSTRAINT profserv_professionalservice_organisation_id_key
-UNIQUE (organisation_id);
-
-
--- Add product categories and license types
-TRUNCATE TABLE downloads_category RESTART IDENTITY CASCADE;
-TRUNCATE TABLE downloads_licencetype RESTART IDENTITY CASCADE;
-INSERT INTO downloads_category (catname, blurb) SELECT name,blurb FROM oldweb.product_categories ORDER BY id;
-COPY downloads_licencetype (id, typename) FROM stdin;
-1      Open source
-2      Freeware
-3      Commercial
-4      Multiple
-\.
-SELECT setval('downloads_category_id_seq', 5);
-
--- Add products
-INSERT INTO downloads_product (name, approved, publisher_id, url, category_id, licencetype_id, description, price, lastconfirmed)
-SELECT products.name, products.approved, 
-(SELECT id FROM core_organisation WHERE core_organisation.name=oo.name),
-products.url,
-(SELECT id FROM downloads_category WHERE downloads_category.catname=oldweb.product_categories.name),
-(SELECT id FROM downloads_licencetype WHERE typename=CASE WHEN licence='o' THEN 'Open source' WHEN licence='c' THEN 'Commercial' WHEN licence='f' THEN 'Freeware' WHEN licence='m' THEN 'Multiple' END),
-description, COALESCE(price,'') , products.lastconfirmed
-FROM oldweb.products
-INNER JOIN oldweb.organisations oo ON publisher=oo.id
-INNER JOIN oldweb.product_categories ON category=product_categories.id;
-
-
--- Surveys
-TRUNCATE TABLE survey_surveyanswer CASCADE;
-TRUNCATE TABLE survey_survey CASCADE;
-
-INSERT INTO survey_survey (id, question, opt1, opt2, opt3, opt4, opt5, opt6, opt7, opt8, posted, current)
-SELECT surveyid, question, coalesce(opt1,''), coalesce(opt2,''), coalesce(opt3,''), coalesce(opt4,''), coalesce(opt5,''), coalesce(opt6,''), coalesce(opt7,''), coalesce(opt8,''), modified, current
-FROM oldweb.survey_questions INNER JOIN oldweb.surveys ON surveys.id=survey_questions.surveyid;
-
-INSERT INTO survey_surveyanswer (survey_id, tot1, tot2, tot3, tot4, tot5, tot6, tot7, tot8)
-SELECT id, tot1, tot2, tot3, tot4, tot5, tot6, tot7, tot8
-FROM oldweb.surveys;
-
-SELECT setval('survey_survey_id_seq', max(id)) FROM survey_survey;
-
--- mailinglists
-TRUNCATE TABLE lists_mailinglist CASCADE;
-TRUNCATE TABLE lists_mailinglistgroup CASCADE;
-
-INSERT INTO lists_mailinglistgroup (id, groupname, sortkey)
-SELECT id, name, sortkey FROM oldweb.listgroups;
-
-INSERT INTO lists_mailinglist (id, group_id, listname, active, externallink, description, shortdesc)
-SELECT id, grp, name, active::boolean, NULL, description, coalesce(shortdesc,'') FROM oldweb.lists;
-
-SELECT setval('lists_mailinglist_id_seq', max(id)) FROM lists_mailinglist;
-SELECT setval('lists_mailinglistgroup_id_seq', max(id)) FROM lists_mailinglistgroup;
-
--- contributors
-TRUNCATE TABLE contributors_contributor;
-INSERT INTO contributors_contributor (ctype_id, lastname, firstname, email, company, companyurl, location, contribution)
-SELECT ct.id, lastname, firstname, email, company, companyurl, location, contribution
-FROM oldweb.developers d
-INNER JOIN oldweb.developers_types dt ON dt.type=d.type
-INNER JOIN contributors_contributortype ct ON ct.typename=dt.typename;
-SELECT setval('contributors_contributor_id_seq', max(id)) FROM contributors_contributor;
diff --git a/tools/migrate/2_convert_to_markdown.pl b/tools/migrate/2_convert_to_markdown.pl
deleted file mode 100644 (file)
index 607ddaa..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/usr/bin/env perl
-
-use HTML::WikiConverter;
-use DBI;
-
-$| = 1;
-
-$conv = new HTML::WikiConverter(dialect=>'Markdown', link_style=>'inline');
-if (!$ARGV[0]) {
-    print "Usage: 2_convert_to_markdown.pl <dsn>\n";
-    exit(1);
-}
-$dbh = DBI->connect("dbi:Pg:" . $ARGV[0], '', '', { AutoCommit=> 0});
-
-print "Converting news...\n";
-News();
-print "Converting events..\n";
-Events();
-print "Converting quotes...\n";
-Quotes(); #NOTE! Quotes need manual cleanup! (more than the others, but they all do, really)
-
-sub News() {
-       $dbh->do("TRUNCATE TABLE news_newsarticle");
-       $r = $dbh->selectall_arrayref("SELECT id,posted,posted_by,headline,summary,story FROM oldweb.news INNER JOIN oldweb.news_text ON news.id=news_text.newsid AND news_text.language='en' WHERE approved ORDER BY id");
-       $ins = $dbh->prepare("INSERT INTO news_newsarticle (id, org_id, approved, date, title, content) VALUES (?, 0, 't', ?, ?, ?)");
-       print "Done loading, now starting conversion...\n";
-       $last = -10;$now = 0;
-       for my $row (@$r) {
-           $now++;
-           if ($now - $last > 2) {
-               print "$now / " . scalar(@$r) . "\r";
-               $last = $now;
-           }
-            
-          $ins->execute($row->[0],
-                        $row->[1],
-                        $row->[3],
-                        ConvertHtmlToMarkdown($row->[5])
-              ) || die "Failed to insert!\n";
-       }
-       $dbh->do("SELECT setval('news_newsarticle_id_seq', max(id)+1) FROM news_newsarticle") || die "Failed to setval";
-       $dbh->commit();
-       print "Done.\n";
-}
-
-sub Events {
-    $dbh->do("TRUNCATE TABLE events_event") || die "Failed to truncate\n";
-       $r = $dbh->selectall_arrayref("SELECT id,posted,posted_by,start_date,end_date,training,COALESCE(organisation,''),country,state,city,event,COALESCE(summary,''),COALESCE(details,'') FROM oldweb.events INNER JOIN oldweb.events_text ON events.id=events_text.eventid AND events_text.language='en' INNER JOIN oldweb.events_location ON events.id=events_location.eventid WHERE approved ORDER BY id");
-       $ins = $dbh->prepare("INSERT INTO events_event (id,approved,org_id,title,city,state,country_id,training,startdate,enddate,summary,details) VALUES (?,'t',(SELECT id FROM core_organisation WHERE name=?),?,?,?,?,?,?,?,?,?)");
-       $last = -10;$now = 0;
-       for my $row (@$r) {
-           $now++;
-           if ($now - $last > 2) {
-               print "$now / " . scalar(@$r) . "\r";
-               $last = $now;
-           }
-               $ins->execute($row->[0],
-                               $row->[6],
-                               $row->[10],
-                               $row->[9],
-                               $row->[8],
-                               $row->[7],
-                               $row->[5],
-                               $row->[3],
-                               $row->[4],
-                               ConvertHtmlToMarkdown($row->[11]),
-                               ConvertHtmlToMarkdown($row->[12])
-                   ) || die "Failed to insert\n";
-       }
-    $dbh->do("SELECT setval('events_event_id_seq', max(id)+1) FROM events_event") || die "Failed to setval\n";
-       $dbh->commit();
-}
-
-sub Quotes {
-    $dbh->do("TRUNCATE TABLE quotes_quote") || die "Failed to truncate\n";
-    $r = $dbh->selectall_arrayref("SELECT quoteid,quote,tagline FROM oldweb.quotes_text WHERE language='en' ORDER BY 1");
-       $ins = $dbh->prepare("INSERT INTO quotes_quote(id,approved,quote,who,org,link) VALUES (?,'t',?,?,?,?)");
-       $last = -10;$now = 0;
-       for my $row (@$r) {
-           $now++;
-           if ($now - $last > 2) {
-               print "$now / " . scalar(@$r) . "\r";
-               $last = $now;
-           }
-               $tag = $row->[2];
-               if ($tag =~ /^([^<]+), <a href="([^"]+)">([^<]+)<\/a>(.*)$/) {
-                       print "match $tag\n";
-                  $who = $1;
-                  $link = $2;
-                  $org = $3 . $4;
-               }
-               elsif ($tag =~ /^([^,]+), (.*)$/s) {
-                  $who = $1;
-                  $org = $2;
-                  $link = '';
-               }
-               elsif ($tag =~ /^<a href="([^"]+)">([^<]+)<\/a>(.*)$/) {
-                  $who = '';
-                  $link = $1;
-                  $org = $3 . $4;
-               }
-               else {
-                  die "Could not parse $tag\n";
-               }
-           $ins->execute($row->[0], $row->[1], $who, $org, $link) || die "Failed to insert\n";
-       }
-    $dbh->do("SELECT setval('quotes_quote_id_seq', max(id)+1) FROM quotes_quote") || die "Failed to setval\n";
-       $dbh->commit();
-}
-
-sub ConvertHtmlToMarkdown {
-       $html = shift;
-       # Blank?
-       return "" if $html =~ /^\s*$/;
-       # First apply our website style translation thingy
-       $html =~ s/[\r\n]+/<p>\n/g;
-#      print "Attempt to convert\n";
-#      print $html  ."\n";
-#      print "result:\n";
-#      print $conv->html2wiki($html);
-       
-       return $conv->html2wiki($html);
-}
diff --git a/tools/migrate/README b/tools/migrate/README
deleted file mode 100644 (file)
index 00494c8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Tools to migrate data from the old website
diff --git a/tools/migrate/migrate_single_account.py b/tools/migrate/migrate_single_account.py
deleted file mode 100755 (executable)
index 79f4495..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env python
-#
-# This script will migrate a single user from the old system to the new one. This will
-# reset the users password in the process - there is no way around that.
-#
-# This process is automatically done when the user logs in to the new website, but it
-# is useful to do this if the user has lost his password before he/she logs into the new
-# site for the first time, since the password recovery feature only works once the account
-# has been migrated.
-#
-
-
-import sys
-import os
-
-# Set up for accessing django
-from django.core.management import setup_environ
-sys.path.append(os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), '../../pgweb'))
-import settings
-setup_environ(settings)
-
-from django.contrib.auth.models import User
-from django.db import connection, transaction
-
-from pgweb.core.models import UserProfile
-
-
-from random import choice
-import string
-
-# This does not generate a strong password. But it's only a temporary one anyway,
-# so this doesn't matter.
-def GenPasswd(l):
-       return ''.join([choice(string.letters + string.digits) for i in xrange(l)])
-
-if __name__=="__main__":
-       if len(sys.argv) != 2:
-               print "Usage: migrate_single_account.py <userid>"
-               sys.exit(1)
-
-       u = sys.argv[1].lower()
-
-       try:
-               user = User.objects.get(username=u)
-               print "User %s (%s %s) already exists!" % (u, user.first_name, user.last_name)
-               sys.exit(1)
-       except User.DoesNotExist:
-               print "User does not exist in new system, that's expected..."
-               pass
-
-       transaction.enter_transaction_management()
-       transaction.managed()
-
-       # Attempt login against old system
-       curs = connection.cursor()
-       curs.execute("SELECT userid, fullname, email, sshkey FROM users_old WHERE userid=%s", (u,))
-       rows = curs.fetchall()
-       if len(rows) == 0:
-               print "User %s does not exist in the old system." % u
-               sys.exit(1)
-       if len(rows) != 1:
-               print "Userid lookup returned %s rows, not 1!" % len(rows)
-               sys.exit(1)
-       print "Found user %s in the old system" % u
-       print "Fullname: %s" % rows[0][1]
-       print "Email: %s" % rows[0][2]
-       print ""
-       while True:
-               yn = raw_input("Are you sure you want to migrate this user, resetting his/her password? [y/n]?")
-               if yn == "y":
-                       print "Ok, migrating..."
-                       break
-               elif yn == "n":
-                       print "Aborting"
-                       sys.exit(1)
-               else:
-                       continue
-
-       pwd = GenPasswd(12)
-       print "New password: %s" % pwd
-
-       namepieces = rows[0][1].split(None, 2)
-       if len(namepieces) == 0: namepieces = ['', '']
-       if len(namepieces) == 1: namepieces.append('')
-       print "Creating new user record..."
-       user = User(username=u, email=rows[0][2], first_name=namepieces[0], last_name=namepieces[1])
-       user.set_password(pwd)
-       user.save()
-       if rows[0][3]:
-               print "Migrating SSH key..."
-               profile = UserProfile(user=user)
-               profile.sshkey = rows[0][3]
-               profile.save()
-
-       print "Removing user from the old system..."
-       curs.execute("SELECT * FROM community_login_old_delete(%s)", (u, ))
-
-       transaction.commit()
-
-       print "Done. Don't forget to email the user at %s, informing him/her about the new password %s" % (rows[0][2], pwd)