Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
D
django
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
django
Commits
7ed20e01
Kaydet (Commit)
7ed20e01
authored
Ara 30, 2013
tarafından
Aymeric Augustin
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Populated Apps instances immediately by default.
üst
c31d7c48
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
21 additions
and
27 deletions
+21
-27
registry.py
django/apps/registry.py
+12
-6
state.py
django/db/migrations/state.py
+1
-4
models.py
tests/apps/models.py
+1
-1
tests.py
tests/apps/tests.py
+4
-13
test_state.py
tests/migrations/test_state.py
+3
-3
No files found.
django/apps/registry.py
Dosyayı görüntüle @
7ed20e01
...
...
@@ -19,11 +19,12 @@ class Apps(object):
It also keeps track of models eg. to provide reverse-relations.
"""
def
__init__
(
self
,
master
=
False
):
# Only one master registry may exist at a given time, and it shall be
# the apps variable defined at the end of this module.
if
master
and
hasattr
(
sys
.
modules
[
__name__
],
'apps'
):
raise
RuntimeError
(
"You may create only one master registry."
)
def
__init__
(
self
,
installed_apps
=
()):
# installed_apps is set to None when creating the master registry
# because it cannot be populated at that point. Other registries must
# provide a list of installed apps and are populated immediately.
if
installed_apps
is
None
and
hasattr
(
sys
.
modules
[
__name__
],
'apps'
):
raise
RuntimeError
(
"You must supply an installed_apps argument."
)
# Mapping of app labels => model names => model classes. Every time a
# model is imported, ModelBase.__new__ calls apps.register_model which
...
...
@@ -48,6 +49,11 @@ class Apps(object):
# Pending lookups for lazy relations.
self
.
_pending_lookups
=
{}
# Populate apps and models, unless it's the master registry.
if
installed_apps
is
not
None
:
self
.
populate_apps
(
installed_apps
)
self
.
populate_models
()
def
populate_apps
(
self
,
installed_apps
=
None
):
"""
Populate app-related information.
...
...
@@ -442,4 +448,4 @@ class Apps(object):
self
.
register_model
(
app_label
,
model
)
apps
=
Apps
(
master
=
Tru
e
)
apps
=
Apps
(
installed_apps
=
Non
e
)
django/db/migrations/state.py
Dosyayı görüntüle @
7ed20e01
...
...
@@ -33,12 +33,9 @@ class ProjectState(object):
def
render
(
self
):
"Turns the project state into actual models in a new Apps"
if
self
.
apps
is
None
:
self
.
apps
=
Apps
()
# Populate the app registry with a stub for each application.
app_labels
=
set
(
model_state
.
app_label
for
model_state
in
self
.
models
.
values
())
app_configs
=
[
AppConfigStub
(
label
)
for
label
in
sorted
(
app_labels
)]
self
.
apps
.
populate_apps
(
app_configs
)
self
.
apps
.
populate_models
()
self
.
apps
=
Apps
([
AppConfigStub
(
label
)
for
label
in
sorted
(
app_labels
)])
# We keep trying to render the models in a loop, ignoring invalid
# base errors, until the size of the unrendered models doesn't
# decrease by at least one, meaning there's a base dependency loop/
...
...
tests/apps/models.py
Dosyayı görüntüle @
7ed20e01
...
...
@@ -6,7 +6,7 @@ from django.db import models
# We're testing app registry presence on load, so this is handy.
new_apps
=
Apps
()
new_apps
=
Apps
(
[
'apps'
]
)
class
TotallyNormal
(
models
.
Model
):
...
...
tests/apps/tests.py
Dosyayı görüntüle @
7ed20e01
...
...
@@ -36,7 +36,7 @@ class AppsTests(TestCase):
Ensures that only one master registry can exist.
"""
with
self
.
assertRaises
(
RuntimeError
):
Apps
(
master
=
Tru
e
)
Apps
(
installed_apps
=
Non
e
)
def
test_ready
(
self
):
"""
...
...
@@ -44,17 +44,8 @@ class AppsTests(TestCase):
"""
# The master app registry is always ready when the tests run.
self
.
assertTrue
(
apps
.
ready
)
def
test_non_master_ready
(
self
):
"""
Tests the ready property of a registry other than the master.
"""
apps
=
Apps
()
self
.
assertFalse
(
apps
.
ready
)
apps
.
populate_apps
([])
self
.
assertFalse
(
apps
.
ready
)
apps
.
populate_models
()
self
.
assertTrue
(
apps
.
ready
)
# Non-master app registries are populated in __init__.
self
.
assertTrue
(
Apps
()
.
ready
)
def
test_bad_app_config
(
self
):
"""
...
...
@@ -162,7 +153,7 @@ class AppsTests(TestCase):
old_models
=
list
(
apps
.
get_app_config
(
"apps"
)
.
get_models
())
# Construct a new model in a new app registry
body
=
{}
new_apps
=
Apps
()
new_apps
=
Apps
(
[
"apps"
]
)
meta_contents
=
{
'app_label'
:
"apps"
,
'apps'
:
new_apps
,
...
...
tests/migrations/test_state.py
Dosyayı görüntüle @
7ed20e01
...
...
@@ -14,7 +14,7 @@ class StateTests(TestCase):
Tests making a ProjectState from an Apps
"""
new_apps
=
Apps
()
new_apps
=
Apps
(
[
"migrations"
]
)
class
Author
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
255
)
...
...
@@ -108,7 +108,7 @@ class StateTests(TestCase):
apps
=
Apps
()
# First, test rendering individually
apps
=
Apps
()
apps
=
Apps
(
[
"migrations"
]
)
# We shouldn't be able to render yet
ms
=
ModelState
.
from_model
(
Novel
)
...
...
@@ -135,7 +135,7 @@ class StateTests(TestCase):
app_label
=
"migrations"
apps
=
Apps
()
apps
=
Apps
()
apps
=
Apps
(
[
"migrations"
]
)
# We shouldn't be able to render yet
ms
=
ModelState
.
from_model
(
FooBar
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment