Skip to content

Commit 9898dd8

Browse files
committed
Fixed #38 -- enabled Django admin for Deis API models.
1 parent 5f72f22 commit 9898dd8

6 files changed

Lines changed: 150 additions & 9 deletions

File tree

api/admin.py

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
#!/usr/bin/python
2+
# -*- coding: utf-8 -*-
3+
4+
"""
5+
Django admin app configuration for Deis API models.
6+
"""
7+
8+
from __future__ import unicode_literals
9+
10+
from django.contrib import admin
11+
12+
from .models import Build
13+
from .models import Config
14+
from .models import Container
15+
from .models import Flavor
16+
from .models import Formation
17+
from .models import Key
18+
from .models import Layer
19+
from .models import Node
20+
from .models import Provider
21+
from .models import Release
22+
23+
24+
class BuildAdmin(admin.ModelAdmin):
25+
"""Set presentation options for :class:`~api.models.Build` models
26+
in the Django admin.
27+
"""
28+
date_hierarchy = 'created'
29+
list_display = ('sha', 'owner', 'formation')
30+
list_filter = ('owner', 'formation')
31+
admin.site.register(Build, BuildAdmin)
32+
33+
34+
class ConfigAdmin(admin.ModelAdmin):
35+
"""Set presentation options for :class:`~api.models.Config` models
36+
in the Django admin.
37+
"""
38+
date_hierarchy = 'created'
39+
list_display = ('version', 'owner', 'formation')
40+
list_filter = ('owner', 'formation')
41+
admin.site.register(Config, ConfigAdmin)
42+
43+
44+
class ContainerAdmin(admin.ModelAdmin):
45+
"""Set presentation options for :class:`~api.models.Container` models
46+
in the Django admin.
47+
"""
48+
date_hierarchy = 'created'
49+
list_display = ('short_name', 'owner', 'formation', 'status')
50+
list_filter = ('owner', 'formation', 'status')
51+
admin.site.register(Container, ContainerAdmin)
52+
53+
54+
class FlavorAdmin(admin.ModelAdmin):
55+
"""Set presentation options for :class:`~api.models.Flavor` models
56+
in the Django admin.
57+
"""
58+
date_hierarchy = 'created'
59+
list_display = ('id', 'owner', 'provider')
60+
list_filter = ('owner', 'provider')
61+
admin.site.register(Flavor, FlavorAdmin)
62+
63+
64+
class FormationAdmin(admin.ModelAdmin):
65+
"""Set presentation options for :class:`~api.models.Formation` models
66+
in the Django admin.
67+
"""
68+
date_hierarchy = 'created'
69+
list_display = ('id', 'owner')
70+
list_filter = ('owner',)
71+
admin.site.register(Formation, FormationAdmin)
72+
73+
74+
class KeyAdmin(admin.ModelAdmin):
75+
"""Set presentation options for :class:`~api.models.Key` models
76+
in the Django admin.
77+
"""
78+
date_hierarchy = 'created'
79+
list_display = ('id', 'owner', '__str__')
80+
list_filter = ('owner',)
81+
admin.site.register(Key, KeyAdmin)
82+
83+
84+
class LayerAdmin(admin.ModelAdmin):
85+
"""Set presentation options for :class:`~api.models.Layer` models
86+
in the Django admin.
87+
"""
88+
date_hierarchy = 'created'
89+
list_display = ('id', 'owner', 'formation', 'flavor', 'level', 'run_list')
90+
list_filter = ('owner', 'formation', 'flavor')
91+
admin.site.register(Layer, LayerAdmin)
92+
93+
94+
class NodeAdmin(admin.ModelAdmin):
95+
"""Set presentation options for :class:`~api.models.Node` models
96+
in the Django admin.
97+
"""
98+
date_hierarchy = 'created'
99+
list_display = ('id', 'owner', 'formation', 'fqdn')
100+
list_filter = ('owner', 'formation')
101+
admin.site.register(Node, NodeAdmin)
102+
103+
104+
class ProviderAdmin(admin.ModelAdmin):
105+
"""Set presentation options for :class:`~api.models.Provider` models
106+
in the Django admin.
107+
"""
108+
date_hierarchy = 'created'
109+
list_display = ('id', 'owner', 'type')
110+
list_filter = ('owner', 'type')
111+
admin.site.register(Provider, ProviderAdmin)
112+
113+
114+
class ReleaseAdmin(admin.ModelAdmin):
115+
"""Set presentation options for :class:`~api.models.Release` models
116+
in the Django admin.
117+
"""
118+
date_hierarchy = 'created'
119+
list_display = ('owner', 'formation', 'version')
120+
list_filter = ('owner', 'formation')
121+
admin.site.register(Release, ReleaseAdmin)

api/models.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,9 @@ class Meta:
7777
unique_together = (('owner', 'id'))
7878

7979
def __str__(self):
80-
return "{0} : {1}".format(self.owner.username, self.id)
80+
return "{}...{}".format(self.public[:18], self.public[-31:])
8181

8282

83-
@python_2_unicode_compatible
8483
class ProviderManager(models.Manager):
8584
"""Manage database interactions for :class:`Provider`."""
8685

@@ -117,8 +116,10 @@ class Provider(UuidAuditedModel):
117116
class Meta:
118117
unique_together = (('owner', 'id'),)
119118

119+
def __str__(self):
120+
return "{}-{}".format(self.id, self.get_type_display())
121+
120122

121-
@python_2_unicode_compatible
122123
class FlavorManager(models.Manager):
123124
"""Manage database interactions for :class:`Flavor`."""
124125

@@ -193,7 +194,6 @@ class ScalingError(Exception):
193194
pass
194195

195196

196-
@python_2_unicode_compatible
197197
class FormationManager(models.Manager):
198198
"""Manage database interactions for :class:`Formation`."""
199199

@@ -507,7 +507,6 @@ def destroy(self, async=False):
507507
group(layer_tasks).apply_async().join()
508508

509509

510-
@python_2_unicode_compatible
511510
class NodeManager(models.Manager):
512511

513512
def new(self, formation, layer):
@@ -638,10 +637,12 @@ class Container(UuidAuditedModel):
638637
# TODO: add celery beat tasks for monitoring node health
639638
status = models.CharField(max_length=64, default='up')
640639

640+
def short_name(self):
641+
return "{}.{}".format(self.type, self.num)
642+
short_name.short_description = 'Name'
643+
641644
def __str__(self):
642-
if self.id:
643-
return self.id
644-
return "{0} {1}.{2}".format(self.formation.id, self.type, self.num)
645+
return "{0} {1}".format(self.formation.id, self.short_name())
645646

646647
class Meta:
647648
get_latest_by = '-created'
@@ -698,7 +699,7 @@ class Meta:
698699
unique_together = (('formation', 'uuid'),)
699700

700701
def __str__(self):
701-
return "{0}-v{1}".format(self.formation.id, self.version)
702+
return "{0}-{1}".format(self.formation.id, self.sha)
702703

703704
@classmethod
704705
def push(cls, push):

deis/settings.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
"django.core.context_processors.tz",
108108
"django.contrib.messages.context_processors.messages",
109109
"allauth.account.context_processors.account",
110+
"allauth.socialaccount.context_processors.socialaccount",
110111
)
111112

112113
MIDDLEWARE_CLASSES = (
@@ -133,6 +134,7 @@
133134
)
134135

135136
INSTALLED_APPS = (
137+
'django.contrib.admin',
136138
'django.contrib.auth',
137139
'django.contrib.contenttypes',
138140
'django.contrib.messages',
@@ -142,6 +144,7 @@
142144
# Third-party apps
143145
'allauth',
144146
'allauth.account',
147+
'allauth.socialaccount',
145148
'djcelery',
146149
'json_field',
147150
'rest_framework',

deis/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
urlpatterns = patterns(
1919
'',
2020
url(r'^accounts/', include('allauth.urls')),
21+
url(r'^admin/', include(admin.site.urls)),
2122
url(r'^api/', include('api.urls')),
2223
url(r'^', include('web.urls')),
2324
)

docs/server/api.admin.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
:description: Python API Reference for the Deis api.admin module
2+
:keywords: deis, api.admin, python, api
3+
4+
=========
5+
api.admin
6+
=========
7+
8+
.. contents::
9+
:local:
10+
.. currentmodule:: api.admin
11+
12+
.. automodule:: api.admin
13+
:members:
14+
:undoc-members:

docs/server/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Server Reference
1414

1515
rest
1616

17+
api.admin
1718
api.fields
1819
api.models
1920
api.routers

0 commit comments

Comments
 (0)