[GO] Aktualisieren Sie python-social-auth von 0.1.x auf 0.2.x.

Was ist das?

Python-social-auth, verwendet in Japans größtem Ticketkauf- und -verkaufsservice "Ticket Camp" Dies ist eine Arbeitsnotiz beim Aktualisieren von 0.1.x auf 0.2.13.

Als Voraussetzung verwende ich es in Kombination mit Django 1.7.x und ich verwende social.apps.django_app.default anstelle von social.apps.django_app.me.

Schemaänderungen

Normalerweise sollten Sie Djangos manage.py migrate ausführen, aber aus verschiedenen Gründen ist dies nicht möglich. Überprüfen Sie daher die Änderungen basierend auf SQL.

Liste verwandter Tabellen.

>SHOW TABLES LIKE 'social_auth_%';
+------------------------------------------+
| Tables_in_ticketcamp_dev (social_auth_%) |
+------------------------------------------+
| social_auth_association                  |
| social_auth_code                         |
| social_auth_nonce                        |
| social_auth_usersocialauth               |
+------------------------------------------+

Das 0.1.x-Schema, das Sie derzeit verwenden.

CREATE TABLE `social_auth_association` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `server_url` varchar(255) NOT NULL,
  `handle` varchar(255) NOT NULL,
  `secret` varchar(255) NOT NULL,
  `issued` int(11) NOT NULL,
  `lifetime` int(11) NOT NULL,
  `assoc_type` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `social_auth_code` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(75) NOT NULL,
  `code` varchar(32) NOT NULL,
  `verified` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`,`code`),
  KEY `social_auth_code_09bb5fb3` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `social_auth_nonce` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `server_url` varchar(255) NOT NULL,
  `timestamp` int(11) NOT NULL,
  `salt` varchar(40) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `social_auth_usersocialauth` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `provider` varchar(32) NOT NULL,
  `uid` varchar(255) NOT NULL,
  `extra_data` longtext NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `provider` (`provider`,`uid`),
  KEY `social_auth_usersocialauth_6340c63c` (`user_id`),
  CONSTRAINT `user_id_refs_id_c8898d4c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Das neueste Schema der Version 0.2.13.

CREATE TABLE `social_auth_association` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `server_url` varchar(255) NOT NULL,
  `handle` varchar(255) NOT NULL,
  `secret` varchar(255) NOT NULL,
  `issued` int(11) NOT NULL,
  `lifetime` int(11) NOT NULL,
  `assoc_type` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `social_auth_code` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `email` varchar(254) NOT NULL,
  `code` varchar(32) NOT NULL,
  `verified` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `social_auth_code_email_801b2d02_uniq` (`email`,`code`),
  KEY `social_auth_code_c1336794` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `social_auth_nonce` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `server_url` varchar(255) NOT NULL,
  `timestamp` int(11) NOT NULL,
  `salt` varchar(65) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `social_auth_nonce_server_url_f6284463_uniq` (`server_url`,`timestamp`,`salt`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `social_auth_usersocialauth` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `provider` varchar(32) NOT NULL,
  `uid` varchar(255) NOT NULL,
  `extra_data` longtext NOT NULL,
  `user_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `social_auth_usersocialauth_provider_e6b5e668_uniq` (`provider`,`uid`),
  KEY `social_auth_usersocialauth_user_id_17d28448_fk_auth_user_id` (`user_id`),
  CONSTRAINT `social_auth_usersocialauth_user_id_17d28448_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Mit Ausnahme des Unterschieds in der Indexschlüssel- und Spaltenreihenfolge

--- 0.1.sql     2015-12-12 06:36:39.164810101 +0000
+++ 0.2.sql     2015-12-12 06:36:18.612810595 +0000
@@ -11,7 +11,7 @@

 CREATE TABLE `social_auth_code` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
-  `email` varchar(75) NOT NULL,
+  `email` varchar(254) NOT NULL,
   `code` varchar(32) NOT NULL,
   `verified` tinyint(1) NOT NULL,
   PRIMARY KEY (`id`),
@@ -23,8 +23,9 @@
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `server_url` varchar(255) NOT NULL,
   `timestamp` int(11) NOT NULL,
-  `salt` varchar(40) NOT NULL,
-  PRIMARY KEY (`id`)
+  `salt` varchar(65) NOT NULL,
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `social_auth_nonce_server_url_f6284463_uniq` (`server_url`,`timestamp`,`salt`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 CREATE TABLE `social_auth_usersocialauth` (
@@ -38,4 +39,3 @@
   KEY `social_auth_usersocialauth_6340c63c` (`user_id`),
   CONSTRAINT `user_id_refs_id_c8898d4c` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Inkompatible Änderungen

Die Eigenschaft BaseStrategy.backend ist verschwunden

Beim Upgrade auf 0.2 wurde Refactoring zur Vermeidung eines Zirkelverweises auf "Strategie" und "Backend" aufgenommen -edfca398eb84334baeba76ce424a2611), sodass Sie in der Pipeline nicht mehr wie "Strategy.backend" darauf verweisen können.

Damit

from django.shortcuts import redirect
from social.pipeline.partial import partial

@partial
def my_pipeline(strategy, user=None, *args, **kwargs):
  if user:
      return

  return redirect('next_action', strategy.backend.name)

Code wie

from django.shortcuts import redirect
from social.pipeline.partial import partial

@partial
def my_pipeline(strategy, user=None, *args, **kwargs):
  if user:
      return

  backend = kwargs.get('backend')
  if not backend:
      return

  return redirect('next_action', backend.name)

Behoben, wie es aussieht.

Schließlich

Vorläufig ging ich zu dem Punkt, an dem ich mich mit 0.2.13 als Mitglied registrieren und anmelden konnte, aber ich fürchte, ich kann es nicht in der Produktionsumgebung veröffentlichen, ohne ein wenig mehr Unit-Tests hinzuzufügen.

Recommended Posts

Aktualisieren Sie python-social-auth von 0.1.x auf 0.2.x.
Aktualisieren Sie Mac Python von 2 auf 3
So aktualisieren Sie Google Sheets von Python
Summe von 1 bis 10
4 Möglichkeiten zum Aktualisieren von Unterschieden zwischen Tabellenkalkulationen und BigQuery
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
So aktualisieren Sie easy_install
Übergang von WSL1 zu WSL2
Aktualisieren Sie die Django-Version 1.11.1 auf 2.2
Von der Bearbeitung bis zur Ausführung
Post von Python nach Slack
Flirte von PHP nach Python
Portierung von Argparse zu Hydra
Übergang von Chainer v1 zu Chainer v2
So aktualisieren Sie Pythons Tkinter auf 8.6
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Von Flask-RESTPlus nach Flask-RESTX migriert
Migrationsschritte für python-social-auth v0.2 bis v0.3
Aktualisieren Sie die Python, die Sie auf Ihrem Mac hatten, auf 3.7-> 3.8
Migrieren Sie von require.txt zu pipenv
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Meteorologie x Python ~ Von der Wetterdatenerfassung bis zur Spektrumanalyse ~
Konvertieren Sie Python 3.x-Code in Python 2.x.
Auf OS X 10.9 Mavericks aktualisiert und PIL für GAE wiederbelebt
Rufen Sie Matlab von Python zur Optimierung auf
Von der Installation von Elasticsearch bis zur Dateneingabe
vtkOpenFOAMReader-Zusammenfassung (von Zeit zu Zeit aktualisiert)
Wie man SWIG von waf benutzt
Migration von direct_to_template zu TemplateView nicht möglich
Ingenieur-Wortbuch (von Zeit zu Zeit aktualisiert)
Konvertierung von pdf nach txt 1 [pdfminer]
Programmierung aus Büchern gelernt 10. Mai
Post von Python auf Facebook Timeline
So aktualisieren Sie Spyder in Anaconda
[Lambda] [Python] Von Lambda auf Twitter posten!
Ausgabe von Raspberry Pi an Line
[Einführung] Von der Installation von Kibana bis zum Start
Konvertierung von pdf nach txt 2 [pyocr]
Stellen Sie von Python aus eine Verbindung zur utf8mb4-Datenbank her
OpenMPI-Installation Vom Download bis zum Bestehen
Tensorflow-Memo [von Zeit zu Zeit aktualisiert]
Python (vom ersten Mal bis zur Ausführung)
Poste ein Bild von Python auf Tumblr
Senden Sie Befehle von Atom an Maya
So starten Sie den Explorer über die WSL
Programmierung aus Büchern gelernt 7. Mai
Ab Ubuntu 20.04 Einführung in die Umgebungskonstruktion
SSH-Verbindung von Windows zu GCP
Aktualisieren Sie Anwendungen, die unter Django 1.7 ausgeführt werden, auf Django 1.8
So greifen Sie über Python auf Wikipedia zu
Python, um von einer anderen Sprache zu wechseln
So konvertieren Sie von .mgz nach .nii.gz
Migrieren Sie von VS Code zu PyCharm
pynq-z1 Vom Kauf bis zur Funktionsprüfung
Hat sich nicht von Python 2 auf 3 geändert
Zum ersten Mal in Numpy werde ich es von Zeit zu Zeit aktualisieren