def test_get_again(self): databases = dbdict() db1 = databases.get("minimal") db2 = databases.get("minimal") self.assertEqual(db1, db2)
def setUp(self): self.db = databases.get('default') self.user = User.objects.filter(email='*****@*****.**').scalar() if self.user is None: self.user = User(name='Joe', email='*****@*****.**') self.user_country = Country.objects.filter(name='US').scalar() if self.user_country is None: self.user_country = Country(name=UtilsCountry('US')) self.client = Client() self.url = reverse('user-auth') self.password = '******' self.user.name = 'Joe' self.user.middle_name = 'Jr' self.user.birth_date = datetime.datetime(2018, 5, 19) self.user.last_name = 'Doe' self.user.set_password(self.password) self.token = self.user.get_jwt_token(self.user.email, self.password) self.user.nationality = self.user_country
import os import six from django.test import TestCase from django_sorcery.db import databases from django_sorcery.management.commands.sorcery_downgrade import Downgrade from django_sorcery.management.commands.sorcery_revision import Command from django_sorcery.management.commands.sorcery_upgrade import Upgrade from .base import MIGRATION_DIR, MigrationMixin rev = "000000000000" db = databases.get("test") class TestRevision(MigrationMixin, TestCase): def setUp(self): super().setUp() Upgrade().run_from_argv( ["./manage.py sorcery", "upgrade", "--no-color"]) def tearDown(self): super().tearDown() self.delete_migration("{}_.py".format(rev)) self.delete_migration("{}_zero.py".format(rev)) Downgrade().run_from_argv( ["./manage.py sorcery", "downgrade", "--no-color"]) def test_without_app(self):
def test_get(self): databases = dbdict() db = databases.get("minimal") self.assertEqual(str(db.url), "sqlite://")
def get_db_dict(): from django_sorcery.db import databases return {'default': databases.get('default').bind}
from django_sorcery.db import databases from sqlalchemy import ForeignKey, Sequence, UniqueConstraint, Enum import enum db = databases.get("default") # ========================================================================= # article # ========================================================================= ArticleSequence = Sequence('sq_cng_atcl', start=1000) class SocialMedia(enum.Enum): TWITTER = 1 FACEBOOK = 2 OTHERS = 3 class Article(db.Model): __tablename__ = 'cng_atcl' __table_args__ = (UniqueConstraint('url', name='uq_cng_atcl_url'), ) id = db.Column(db.Integer(), ArticleSequence, primary_key=True, server_default=ArticleSequence.next_value()) title = db.Column(db.String(length=200)) summary = db.Column(db.String(length=200)) url = db.Column(db.String(length=200)) published_date = db.Column(db.DateTime())
import os from datetime import timedelta, date from sqlalchemy_utils import EmailType, CountryType from django.contrib.auth.hashers import make_password, check_password from django_sorcery.db import databases from jose import jws db = databases.get('default') db.url = 'postgresql://*****:*****@{}:5432/postgres'.format(os.getenv('PSQLHOST', 'localhost')) class Country(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(CountryType) class User(db.Model): """ User model which maps to db table User. """ pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=256)) middle_name = db.Column(db.String(length=256)) last_name = db.Column(db.String(length=256)) birth_date = db.Column(db.DateTime()) email = db.Column(EmailType, unique=True) password_hash = db.Column(db.String(128)) nationality = db.ManyToOne(Country, backref=db.backref("users", cascade="all, delete-orphan")) token = db.Column(db.String(512))
# -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals from django_sorcery.db import databases default_db = databases.get("default") other_db = databases.get("fromdbs") class Foo(default_db.Model): id = default_db.Column(default_db.Integer(), autoincrement=True, primary_key=True) name = default_db.Column(default_db.String(length=10), nullable=False) class Bar(other_db.Model): id = other_db.Column(other_db.Integer(), autoincrement=True, primary_key=True) name = other_db.Column(other_db.String(length=10), nullable=False) default_db.create_all() other_db.create_all()
# -*- coding: utf-8 -*- from __future__ import absolute_import, print_function, unicode_literals from django_sorcery.db import databases db = databases.get("terrible") class Foo(db.Model): __table_args__ = db.args( db.ForeignKeyConstraint(["id1", "parent_id2"], ["foo.id1", "foo.id2"], use_alter=True)) id1 = db.Column(db.Integer(), primary_key=True) id2 = db.Column(db.Integer(), primary_key=True) parent_id2 = db.Column(db.Integer()) partial_parent = db.relationship( "Foo", foreign_keys=[parent_id2], primaryjoin=db.and_(id1 == id1, db.remote(id2) == db.foreign(parent_id2)), uselist=False, ) db.create_all()
from django_sorcery.db import databases db = databases.get("minimal_backpop") class Asset(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=5)) order = db.ManyToOne("Order", back_populates="assets") class OrderItem(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=5)) orders = db.OneToMany("Order", back_populates="order_item") class Customer(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=5)) orders = db.OneToMany("Order", back_populates="applicant") coapp_orders = db.OneToMany("Order", back_populates="coapplicant") profile = db.relationship("Profile", back_populates="customer", uselist=False) class Profile(db.Model):
from django_sorcery.db import databases db = databases.get("minimal") class Asset(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=5)) class OrderItem(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=5)) class Customer(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=5)) class Profile(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=20)) customer = db.OneToOne(Customer, backref="profile") class Contact(db.Model): pk = db.Column(db.Integer(), autoincrement=True, primary_key=True) name = db.Column(db.String(length=5))