Initial commit
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
from django.contrib import admin
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from common import generic
|
||||
from workflow.models import Modal,Node,TodoList,Instance,History
|
||||
|
||||
|
||||
class NodeInline(admin.TabularInline):
|
||||
model = Node
|
||||
fields = ['code','name','next_user_handler','can_deny','can_terminate']
|
||||
|
||||
def get_extra(self, request, obj=None, **kwargs):
|
||||
if obj:
|
||||
return 0
|
||||
else:
|
||||
return 1
|
||||
|
||||
|
||||
class WorkflowModelAdmin(admin.ModelAdmin):
|
||||
list_display = ['code','name','begin','end']
|
||||
inlines = [NodeInline]
|
||||
readonly_fields = ['app_name','model_name']
|
||||
raw_id_fields = ['content_type']
|
||||
fields = (
|
||||
('begin','end',),('code','name',),('description',),('content_type',),('app_name','model_name',),
|
||||
)
|
||||
|
||||
def get_form(self, request, obj=None, **kwargs):
|
||||
print kwargs
|
||||
return super(WorkflowModelAdmin,self).get_form(request,obj,**kwargs)
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
import datetime
|
||||
super(WorkflowModelAdmin,self).save_model(request,obj,form,change)
|
||||
|
||||
if not obj.code:
|
||||
code = 'WF%03d' % obj.id
|
||||
obj.code = code
|
||||
obj.save()
|
||||
if not obj.begin:
|
||||
obj.begin = datetime.date.today()
|
||||
obj.end = datetime.date(9999,12,31)
|
||||
app_name = obj.content_type.app_label
|
||||
model_name = obj.content_type.model
|
||||
obj.app_name = app_name
|
||||
obj.model_name = model_name
|
||||
obj.save()
|
||||
|
||||
|
||||
class WorkflowNodeAdmin(admin.ModelAdmin):
|
||||
fields = (
|
||||
('modal',),
|
||||
('name','code',),
|
||||
('start','stop','can_terminate','can_deny','can_edit',),
|
||||
('email_notice','short_message_notice','approve_node',),('next',),
|
||||
('handler_type',),
|
||||
('handler',),
|
||||
('next_user_handler','next_node_handler',),
|
||||
('status_field','status_value',),('action',),
|
||||
('users',),('positions',),('roles',),
|
||||
)
|
||||
list_display = ['code','name','modal','can_deny','can_terminate']
|
||||
list_display_links = ['code','name']
|
||||
list_filter = ['modal']
|
||||
readonly_fields = ['modal','code']
|
||||
filter_horizontal = ['next','users','positions','roles','departments',]
|
||||
radio_fields = {'handler_type':admin.HORIZONTAL}
|
||||
search_fields = ['modal__code','modal__name','code','name']
|
||||
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
if obj and obj.stop:
|
||||
return ['modal','code','next']
|
||||
return super(WorkflowNodeAdmin,self).get_readonly_fields(request,obj)
|
||||
|
||||
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
|
||||
if db_field.name == 'next':
|
||||
apps = generic.get_app_model_info_from_request(request)
|
||||
# print apps
|
||||
if apps and apps.get('obj'):
|
||||
# print 'it is here'
|
||||
obj = apps.get('obj')
|
||||
# print obj.modal
|
||||
kwargs['queryset'] = Node.objects.filter(modal=obj.modal).exclude(id=obj.id)
|
||||
else:
|
||||
kwargs['queryset'] = Node.objects.filter(id=-1)
|
||||
|
||||
return super(WorkflowNodeAdmin,self).formfield_for_manytomany(db_field,request,**kwargs)
|
||||
|
||||
|
||||
class InstanceAdmin(admin.ModelAdmin):
|
||||
list_display = ['code','modal','starter','start_time','status']
|
||||
readonly_fields = ['code','modal','starter','start_time','status','object_id','approved_time','current_nodes']
|
||||
|
||||
|
||||
class TodoAdmin(admin.ModelAdmin):
|
||||
list_display = ['code_link','modal_dsc','href','node_dsc','is_read','status','submitter','arrived_time']
|
||||
list_filter = ['status']
|
||||
|
||||
def get_queryset(self, request):
|
||||
return super(TodoAdmin,self).get_queryset(request).filter(user=request.user)
|
||||
|
||||
|
||||
class HistoryAdmin(admin.ModelAdmin):
|
||||
list_display = ['inst','node','user','pro_time','memo']
|
||||
|
||||
|
||||
class ContentTypeAdmin(admin.ModelAdmin):
|
||||
list_display = ['app_label','model']
|
||||
search_fields = ['app_label','model']
|
||||
list_per_page = 20
|
||||
list_filter = ['app_label']
|
||||
|
||||
|
||||
admin.site.register(Modal, WorkflowModelAdmin)
|
||||
admin.site.register(Node, WorkflowNodeAdmin)
|
||||
admin.site.register(Instance, InstanceAdmin)
|
||||
admin.site.register(TodoList, TodoAdmin)
|
||||
admin.site.register(History, HistoryAdmin)
|
||||
admin.site.register(ContentType,ContentTypeAdmin)
|
||||
Reference in New Issue
Block a user