Skip to content

Commit

Permalink
Merge pull request sshwsfc#2 from sshwsfc/master
Browse files Browse the repository at this point in the history
merge from sshwsfc
  • Loading branch information
idalin authored Jun 7, 2017
2 parents 5b8d56d + 862bee1 commit 4ec77d6
Show file tree
Hide file tree
Showing 47 changed files with 703 additions and 437 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,6 @@ xadmin/static/xadmin/bower_components/
.idea
*~
demo_app/data.db

TAGS*
*.swp
208 changes: 116 additions & 92 deletions demo_app/app/adminx.py
Original file line number Diff line number Diff line change
@@ -1,202 +1,226 @@
from __future__ import absolute_import
import xadmin
from xadmin import views
from models import IDC, Host, MaintainLog, HostGroup, AccessRecord
from .models import IDC, Host, MaintainLog, HostGroup, AccessRecord
from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side
from xadmin.plugins.inline import Inline
from xadmin.plugins.batch import BatchChangeAction


@xadmin.sites.register(views.website.IndexView)
class MainDashboard(object):
widgets = [
[
{"type": "html", "title": "Test Widget", "content": "<h3> Welcome to Xadmin! </h3><p>Join Online Group: <br/>QQ Qun : 282936295</p>"},
{"type": "chart", "model": "app.accessrecord", 'chart': 'user_count', 'params': {'_p_date__gte': '2013-01-08', 'p': 1, '_p_date__lt': '2013-01-29'}},
{"type": "list", "model": "app.host", 'params': {
'o':'-guarantee_date'}},
{"type": "chart", "model": "app.accessrecord", "chart": "user_count", "params": {"_p_date__gte": "2013-01-08", "p": 1, "_p_date__lt": "2013-01-29"}},
{"type": "list", "model": "app.host", "params": {"o": "-guarantee_date"}},
],
[
{"type": "qbutton", "title": "Quick Start", "btns": [{'model': Host}, {'model':IDC}, {'title': "Google", 'url': "http://www.google.com"}]},
{"type": "qbutton", "title": "Quick Start", "btns": [{"model": Host}, {"model": IDC}, {"title": "Google", "url": "http://www.google.com"}]},
{"type": "addform", "model": MaintainLog},
]
]
xadmin.sites.site.register(views.website.IndexView, MainDashboard)


@xadmin.sites.register(views.BaseAdminView)
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
xadmin.sites.site.register(views.BaseAdminView, BaseSetting)


@xadmin.sites.register(views.CommAdminView)
class GlobalSetting(object):
global_search_models = [Host, IDC]
global_models_icon = {
Host: 'fa fa-laptop', IDC: 'fa fa-cloud'
Host: "fa fa-laptop", IDC: "fa fa-cloud"
}
menu_style = 'default'#'accordion'
xadmin.sites.site.register(views.CommAdminView, GlobalSetting)
menu_style = 'default' # 'accordion'


class MaintainInline(object):
model = MaintainLog
extra = 1
style = 'accordion'
style = "accordion"


@xadmin.sites.register(IDC)
class IDCAdmin(object):
list_display = ('name', 'description', 'create_time')
list_display_links = ('name',)
list_display = ("name", "description", "create_time")
list_display_links = ("name",)
wizard_form_list = [
('First\'s Form', ('name', 'description')),
('Second Form', ('contact', 'telphone', 'address')),
('Thread Form', ('customer_id',))
("First's Form", ("name", "description")),
("Second Form", ("contact", "telphone", "address")),
("Thread Form", ("customer_id",))
]

search_fields = ['name']
relfield_style = 'fk-select'
search_fields = ["name"]
relfield_style = "fk-select"
reversion_enable = True

actions = [BatchChangeAction, ]
batch_fields = ('contact', 'groups')
batch_fields = ("contact", "groups")


@xadmin.sites.register(Host)
class HostAdmin(object):

def open_web(self, instance):
return "<a href='http://%s' target='_blank'>Open</a>" % instance.ip
return """<a href="http://%s" target="_blank">Open</a>""" % instance.ip
open_web.short_description = "Acts"
open_web.allow_tags = True
open_web.is_column = True

list_display = ('name', 'idc', 'guarantee_date', 'service_type',
'status', 'open_web', 'description')
list_display_links = ('name',)
list_display = (
"name", "idc", "guarantee_date", "service_type", "status", "open_web",
"description",
)
list_display_links = ("name",)

raw_id_fields = ('idc',)
style_fields = {'system': "radio-inline"}
raw_id_fields = ("idc",)
style_fields = {"system": "radio-inline"}

search_fields = ['name', 'ip', 'description']
list_filter = ['idc', 'guarantee_date', 'status', 'brand', 'model',
'cpu', 'core_num', 'hard_disk', 'memory', ('service_type',xadmin.filters.MultiSelectFieldListFilter)]

list_quick_filter = ['service_type',{'field':'idc__name','limit':10}]
list_bookmarks = [{'title': "Need Guarantee", 'query': {'status__exact': 2}, 'order': ('-guarantee_date',), 'cols': ('brand', 'guarantee_date', 'service_type')}]
search_fields = ["name", "ip", "description"]
list_filter = [
"idc", "guarantee_date", "status", "brand", "model", "cpu", "core_num",
"hard_disk", "memory", (
"service_type",
xadmin.filters.MultiSelectFieldListFilter,
),
]

list_quick_filter = ["service_type", {"field": "idc__name", "limit": 10}]
list_bookmarks = [{
"title": "Need Guarantee",
"query": {"status__exact": 2},
"order": ("-guarantee_date",),
"cols": ("brand", "guarantee_date", "service_type"),
}]

show_detail_fields = ('idc',)
show_detail_fields = ("idc",)
list_editable = (
'name', 'idc', 'guarantee_date', 'service_type', 'description')
"name", "idc", "guarantee_date", "service_type", "description",
)
save_as = True

aggregate_fields = {"guarantee_date": "min"}
grid_layouts = ('table', 'thumbnails')
grid_layouts = ("table", "thumbnails")

form_layout = (
Main(
TabHolder(
Tab('Comm Fields',
Fieldset('Company data',
'name', 'idc',
description="some comm fields, required"
),
Inline(MaintainLog),
Tab(
"Comm Fields",
Fieldset(
"Company data", "name", "idc",
description="some comm fields, required",
),
Tab('Extend Fields',
Fieldset('Contact details',
'service_type',
Row('brand', 'model'),
Row('cpu', 'core_num'),
Row(AppendedText(
'hard_disk', 'G'), AppendedText('memory', "G")),
'guarantee_date'
),
Inline(MaintainLog),
),
Tab(
"Extend Fields",
Fieldset(
"Contact details",
"service_type",
Row("brand", "model"),
Row("cpu", "core_num"),
Row(
AppendedText("hard_disk", "G"),
AppendedText("memory", "G")
),
"guarantee_date"
),
),
),
),
Side(
Fieldset('Status data',
'status', 'ssh_port', 'ip'
),
Fieldset("Status data", "status", "ssh_port", "ip"),
)
)
inlines = [MaintainInline]
reversion_enable = True

data_charts = {
"host_service_type_counts": {'title': u"Host service type count", "x-field": "service_type", "y-field": ("service_type",),
"option": {
"series": {"bars": {"align": "center", "barWidth": 0.8,'show':True}},
"host_service_type_counts": {'title': u"Host service type count", "x-field": "service_type", "y-field": ("service_type",),
"option": {
"series": {"bars": {"align": "center", "barWidth": 0.8, 'show': True}},
"xaxis": {"aggregate": "count", "mode": "categories"},
},
},
},
},
}



@xadmin.sites.register(HostGroup)
class HostGroupAdmin(object):
list_display = ('name', 'description')
list_display_links = ('name',)
list_display = ("name", "description")
list_display_links = ("name",)

search_fields = ['name']
style_fields = {'hosts': 'checkbox-inline'}
search_fields = ["name"]
style_fields = {"hosts": "checkbox-inline"}


@xadmin.sites.register(MaintainLog)
class MaintainLogAdmin(object):
list_display = (
'host', 'maintain_type', 'hard_type', 'time', 'operator', 'note')
list_display_links = ('host',)
"host", "maintain_type", "hard_type", "time", "operator", "note")
list_display_links = ("host",)

list_filter = ['host', 'maintain_type', 'hard_type', 'time', 'operator']
search_fields = ['note']
list_filter = ["host", "maintain_type", "hard_type", "time", "operator"]
search_fields = ["note"]

form_layout = (
Col("col2",
Fieldset('Record data',
'time', 'note',
css_class='unsort short_label no_title'
Fieldset("Record data",
"time", "note",
css_class="unsort short_label no_title"
),
span=9, horizontal=True
),
Col("col1",
Fieldset('Comm data',
'host', 'maintain_type'
Fieldset("Comm data",
"host", "maintain_type"
),
Fieldset('Maintain details',
'hard_type', 'operator'
Fieldset("Maintain details",
"hard_type", "operator"
),
span=3
)
)
reversion_enable = True


@xadmin.sites.register(AccessRecord)
class AccessRecordAdmin(object):

def avg_count(self, instance):
return int(instance.view_count / instance.user_count)
avg_count.short_description = "Avg Count"
avg_count.allow_tags = True
avg_count.is_column = True

list_display = ('date', 'user_count', 'view_count', 'avg_count')
list_display_links = ('date',)
list_display = ("date", "user_count", "view_count", "avg_count")
list_display_links = ("date",)

list_filter = ['date', 'user_count', 'view_count']
list_filter = ["date", "user_count", "view_count"]
actions = None
aggregate_fields = {"user_count": "sum", 'view_count': "sum"}
aggregate_fields = {"user_count": "sum", "view_count": "sum"}

refresh_times = (3, 5, 10)
data_charts = {
"user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"), "order": ('date',)},
"avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)},
"per_month": {'title': u"Monthly Users", "x-field": "_chart_month", "y-field": ("user_count", ),
"option": {
"series": {"bars": {"align": "center", "barWidth": 0.8,'show':True}},
"xaxis": {"aggregate": "sum", "mode": "categories"},
},
},
"per_month": {'title': u"Monthly Users", "x-field": "_chart_month", "y-field": ("user_count", ),
"option": {
"series": {"bars": {"align": "center", "barWidth": 0.8, 'show': True}},
"xaxis": {"aggregate": "sum", "mode": "categories"},
},
},
}
def _chart_month(self,obj):

def _chart_month(self, obj):
return obj.date.strftime("%B")


xadmin.sites.site.register(Host, HostAdmin)
xadmin.sites.site.register(HostGroup, HostGroupAdmin)
xadmin.sites.site.register(MaintainLog, MaintainLogAdmin)
xadmin.sites.site.register(IDC, IDCAdmin)
xadmin.sites.site.register(AccessRecord, AccessRecordAdmin)

# xadmin.sites.site.register(HostGroup, HostGroupAdmin)
# xadmin.sites.site.register(MaintainLog, MaintainLogAdmin)
# xadmin.sites.site.register(IDC, IDCAdmin)
# xadmin.sites.site.register(AccessRecord, AccessRecordAdmin)
Loading

0 comments on commit 4ec77d6

Please sign in to comment.