def get_form_layout(self): if self.org_obj: self.form_layout = (Main( Fieldset('', 'username', 'password', css_class='unsort no_title'), Fieldset(_('Personal info'), Row('first_name', 'last_name'), 'email'), Fieldset(_('Permissions'), 'groups', 'user_permissions'), Fieldset(_('Important dates'), 'last_login', 'date_joined'), ), Side( Fieldset( _('Status'), 'is_active', 'is_staff', 'is_superuser', ), )) return super(UserAdmin, self).get_form_layout()
class PostAdmin(BaseOwnerAdmin): form = PostAdminForm list_display = [ 'title', 'category', 'status_show', 'pv', 'uv', 'created_time', 'operator', ] list_display_links = [] list_filter = [ 'category', ] search_fields = ['title', 'category__name'] save_on_top = True actions_on_top = True actions_on_bottom = True date_hierarchy = 'created_time' form_layout = (Fieldset( '基础信息', Row('title', 'category'), 'status', 'tag', ), Fieldset( '内容信息', 'desc', 'content', )) def operator(self, obj): return format_html('<a href="{}">编辑</a>', reverse('xadmin:blog_post_change', args=(obj.id, ))) operator.short_description = '操作'
class ProjectAdmin(object): list_display = ['id', 'PrjName', 'company', 'city'] search_fields = ['PrjName', 'company'] list_filter = [('company')] show_bookmarks = False #隐藏标签 form_layout = (Fieldset( u'', Row('FDeptID', 'SSComName'), Row('SSComName', 'SSComID'), Row('PrjName', 'PrjState'), Row('xmjl', 'jsdw'), Row('kgrq', 'jgrq'), Row('company', 'city'), ))
class PurchasingAssetAdmin(object): list_display = [ "name", "configuration", "nums", "unit_price", "total_prices", "year", "applicaton_department", "applicants", "purchase_date" ] list_editable = ["is_account"] search_fields = ['name'] list_filter = ['name', 'is_arrival', 'is_account', 'is_purchase'] readonly_fields = ['total_prices'] reversion_enable = True form_layout = (Main( Fieldset( "基本信息", Row("applicaton_department", "applicants"), Row("name", "apply_date"), Row("configuration", "nums"), Row("cost_types"), Row("description"), ), Fieldset( "扩展信息", Row("year", "total_prices"), Row( "invoice_num", "assets_num", ), Row("purchase_date", "unit_price"), ), Fieldset("", )), Side( Fieldset(('Status'), 'is_purchase', 'is_arrival', 'is_account'), )) actions = ['set_is_account'] def set_is_account(modeladmin, request, queryset): selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME) PurchasingAsset.objects.filter(id__in=selected).update(is_account=True) set_is_account.short_description = "设置所选内容为已报销"
class SellerAdmin(object): """ 运营商信息 """ list_display = ['id', 'name', 'telephone', 'address', 'org_code', 'parent'] search_fields = ['name', 'telephone', 'address', 'org_code'] list_display_links = ('name',) model_icon = 'fa fa-sitemap' list_export = ('xls', 'xml', 'json') save_on_top = False form_layout = ( Fieldset( '基础信息', Row('name', 'org_code'), Row('address', 'short_name'), Row('contact_man', 'telephone'), Row('legal_person', 'id_card'), ), Fieldset( '公司银行信息', Row('bank_name', 'account_name'), Row('account_number', 'tax_number'), ), Fieldset( '其他信息', Row('parent', 'status'), ) ) def queryset(self): queryset = super(SellerAdmin, self).queryset() if self.request.user.seller: return queryset.filter(id=self.request.user.seller.id) elif self.request.user.station: return Seller.objects.none() return queryset def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name == 'parent': if not self.request.user.is_superuser: kwargs['queryset'] = Seller.objects.filter(id=self.request.user.seller.id) return super(SellerAdmin, self).formfield_for_dbfield(db_field, **kwargs)
def get_form_layout(self): self.form_layout = ( Main( Fieldset('机构信息', 'name', 'city', Row('category', 'tags', 'course_nums'), 'image', 'address', 'desc', ), ), Side( Fieldset('访问信息', 'fav_nums', 'click_nums', 'students', 'add_time', ), ), Side( Fieldset('选择信息', 'is_gold', 'is_auth', ), ), ) return super(CourseOrgAdmin, self).get_form_layout()
class PostAdmin(BaseOwnerAdmin): form = PostAdminForm list_display = [ 'title', 'category', 'status', 'created_time', 'operator', 'owner' ] list_display_links = [] list_filter = ['category'] # 注意这里不是定义的filter类,而是字段名 search_fields = ['title', 'catetory__name'] actions_on_top = True # actions_on_bottom = True # 编辑页面 # save_on_top = False exclude = ['owner'] filter_horizontal = ('tag', ) form_layout = (Fieldset( '基础配置', Row('title', 'category'), 'status', 'tag', ), Fieldset( '内容信息', 'desc', 'is_md', 'content_ck', 'content_md', 'content', )) def operator(self, obj): return format_html('<a href="{}">编辑</a>', reverse('xadmin:blog_post_change', args=(obj.id, ))) operator.short_description = '操作'
class SideBarAdmin(BaseOwnerAdmin): form = SideBarAdminForm list_display = [ "title", "status", "display_type", "created_time", "operator" ] form_layout = (Fieldset( "基础信息", Row('title', 'status'), 'display_type', 'content', ), ) exclude = ('author', ) def operator(self, obj): return format_html( '<a href="{}">编辑</a>', reverse("cus_admin:config_sidebar_change", args=(obj.id, ))) # 不加简短描述,管理界面会显示operator operator.short_description = "操作"
class PostAdmin(BaseOwnerAdmin): form = PostAdminForm # 展示字段 list_display = [ 'title', 'category', 'status', 'created_time', 'operator', ] list_display_links = [] # 过滤器 list_filter = ['category'] #list_filter = [CategoryOwnerFilter] search_fields = ['title', 'category__name'] actions_on_top = True actions_on_bottom = True from_layout = (Fieldset( '基础信息', Row("title", "category"), "status", "tag", ), Fieldset( '内容信息', 'desc', 'content', )) #filter_horizontal = ('tag', ) filter_vertical = ('tag', ) def operator(self, obj): return format_html('<a href="{}">编辑</a>', reverse('xadmin:blog_post_change', args=(obj.id, ))) operator.short_description = '操作'
class PostAdmin(BaseOwnerAdmin): form = PostAdminForm list_display = [ 'title', 'category', 'status_show', 'pv', 'uv', 'owner', 'created_time', 'operator' ] list_display_links = [] exclude = ('html', 'owner', 'pv', 'uv') list_filter = [ 'category', ] search_fields = ['title', 'category__name'] save_on_top = True # show_full_result_count = False actions_on_top = True actions_on_bottom = True # 编辑页面 save_on_top = True form_layout = (Fieldset( "基础信息", 'title', 'desc', Row('category', 'status', 'is_markdown'), 'content', 'tags', ), ) def operator(self, obj): return format_html( '<a href="{}">编辑</a>', reverse('cus_admin:blog_post_change', args=(obj.id, ))) operator.short_description = '操作'
def get_form_layout(self): if self.org_obj: self.form_layout = (Main( Fieldset('', 'username', 'password', css_class='unsort no_title'), Fieldset( '个人信息', Row(), 'name', 'mobile', 'email', 'card_number', 'card_number_attendance', 'wage_type', 'work_type', 'attendance_shift', 'position', 'attendance_shift', ), Fieldset('权限', 'groups', 'user_permissions'), Fieldset( '重要日期', 'operator', 'operator_time', 'operator_last', 'operator_last_time', 'date_joined_company', 'last_login', ), ), Side(Fieldset( '状态', 'is_active', 'is_staff', 'is_superuser', ), )) return super(MyUserAdmin, self).get_form_layout()
class GroupClientsAdmin(object): """ 集团大客户 """ list_display = [ 'name', 'contact_man', 'telephone', 'address', 'bank_name', 'account_name', 'account_number', 'tax_number', 'legal_person', ] search_fields = ['name', 'telephone', 'account_name', 'legal_person'] model_icon = 'fa fa-weixin' form_layout = (Main( Fieldset( '基本信息', Row('name', 'telephone'), Row('contact_man', 'address'), Row('legal_person', 'id_card'), ), Fieldset( '公司银行信息', Row('bank_name', 'account_name'), Row('account_number', 'tax_number'), ), Fieldset( '其他信息', Row(AppendedText('subscribe_fee', '元'), AppendedText('occupy_fee', '元')), Row(AppendedText('low_fee', '元'), 'low_restrict'), ), ), Side( Fieldset("优惠方案", "dicount", "is_reduction", AppendedText("purchase_amount", "元"), AppendedText("reduction", "元")), ))
class t_aliexpress_refund_info_Admin(object): show_aliexpress_refund_info = True list_filter = ('ShopOrderNumber', 'ShopName', 'ProductSKU', 'Country', 'ClosingDate', 'Sale_price', 'Refund_price', 'Paypal_Account', 'dj_user', 'Refund_reason', 'Refund_id', 'Remarks', 'Update_time') search_fields = ('ShopOrderNumber', 'ShopName', 'ProductSKU', 'Country', 'Sale_price', 'Refund_price', 'Paypal_Account', 'dj_user', 'Refund_reason', 'Refund_id', 'Remarks') list_display = ('id', 'ShopOrderNumber', 'ShopName', 'ProductSKU', 'Country', 'ClosingDate', 'Sale_price', 'Refund_price', 'Paypal_Account', 'dj_user', 'Refund_reason', 'Refund_id', 'Remarks', 'Update_time') list_editable = ('Refund_id', 'Remarks') fields = ('id', 'ShopOrderNumber', 'ShopName', 'ProductSKU', 'Country', 'ClosingDate', 'Sale_price', 'Refund_id', 'Refund_price', 'Paypal_Account', 'Refund_reason', 'Update_time') #readonly_fields = ('ShopName','ProductSKU','Country','ClosingDate','Sale_price') form_layout = ( Fieldset(u'查询条件', Row('ShopOrderNumber'), css_class='unsort '), Fieldset(u'普源实时查询内容', Row('ProductSKU', 'ShopName'), Row('Country', 'Sale_price'), Row('ClosingDate'), css_class='unsort '), Fieldset(u'人工填写内容', Row('Refund_id', 'Refund_price'), Row('Paypal_Account', 'Refund_reason'), Row('Update_time'), css_class='unsort '), ) def save_models(self): obj = self.new_obj obj.Update_time = datetime.now() obj.dj_user = self.request.user.username obj.save()
class PostAdmin(object): style_fields = {"content": "ueditor"} list_display = [ 'title', 'desc', 'content', 'status_show', 'owner', 'created_time', 'pv', 'uv' ] list_display_links = [] list_filter = ['category', 'title'] # fields = ('name',) search_fields = ['title', 'category_name', 'owner_username'] save_on_top = True show_full_result_count = True # actions_on_bottom = True # date_hierarchy = 'created_time' # list_editable = ('title',) exclude = ['html', 'pv', 'uv'] # fields = ( # ('category','title'), # 'desc', # 'status', # ('content', 'is_markdown'), # 'html', # 'tag', # 'owner', # ) form_layout = (Fieldset( '基础信息', 'title', 'desc', Row('category', 'status', 'is_markdown'), 'content', 'tag', 'owner', ), )
def get_form_layout(self): if self.org_obj: self.form_layout = ( Main( Fieldset('订单基本信息', 'order_date', 'sales','sale_source', 'useage', 'useage_detail', 'place','series_num','price' ), Fieldset('客户基本信息', 'customer', 'customer_source', 'province', 'city', 'wangwang' ), Fieldset('收件信息', Row('reciever', 'phone'), 'address', 'remark' ), ), ) return super(OrderAdmin, self).get_form_layout()
class InvoiceTitleAdmin(object): """ 发票抬头信息 """ list_display = [ "name", "openid", "title", "category", "tax_number", "address", "telephone", "bank_account", "email", "is_write", "update_time", "add_time" ] search_fields = ["title", "name", "openid", "telephone"] list_filter = ['is_write'] model_icon = 'fa fa-random' form_layout = (Fieldset( '发票抬头信息', Row('name', 'openid'), Row('title', 'category'), Row('tax_number', 'telephone'), Row('address'), Row('bank_account'), Row('email', None), Row('total_money', 'consume_money'), ), ) def get_media(self): media = super().get_media() path = self.request.get_full_path() if "add" in path or 'update' in path: media.add_css({'screen': ('bill/bill.css', )}) # media.add_js([self.static('stationmanager/js/xadmin.areacode.js')]) return media def save_models(self): obj = self.new_obj if obj.is_write == 1 and obj.update_time is None: obj.update_time = datetime.datetime.now() super().save_models()
class Culture_accountAdmin(object): list_display = [ 'id', 'limit_watch', 'watch_duration_min', 'watch_duration_max', 'watch_times', 'date_joined' ] exclude = ['user'] ordering = ['id'] form_layout = ( Main( #中心内容 Fieldset( '常规设置', Row('limit_watch', 'watch_duration_min', 'watch_duration_max')), Fieldset('随机时间暂停', Row('watch_times', 'pause_time_min', 'pause_time_max')), Fieldset( '评论区功能', Row('comment_nice_probability', 'comment_nice_min_times', 'comment_nice_max_times')), Fieldset( '关注作者', Row('follow_author_probability', 'follow_author_pause_time_min', 'follow_author_pause_time_max'))), Side( #侧边框 Fieldset('点赞及评论概率', Row('nice_probability', 'comment_probability')), Fieldset('转发概率', Row('forward_probability')), )) def queryset(self): qs = super(Culture_accountAdmin, self).queryset() if self.request.user.is_superuser: # 超级用户可查看所有数据 return qs else: return qs.filter(user_id=self.request.user) def save_models(self): self.new_obj.user = self.request.user super(Culture_accountAdmin, self).save_models()
class ItManagerAdmin(object): inlines = [ItRecordInline] list_display = ['name','ip','username','dep','is_active'] search_fields = ['name','ip','remarks','dep__two_department','is_active'] list_filter = ['name','ip','remarks','is_active'] reversion_enable = True form_layout = ( Main( Fieldset('', Row('name', 'model'), Row('ip', 'system'), Row('username', 'password'), Row('link'), Row('tel', 'application'), Row('dep'), Row('remarks'), ), ), Side( Fieldset(('Status'), 'is_active' ), ) )
class PostInline(): form_layout = (Container(Row('title', 'desc'))) extra = 1 model = Post
class PostAdmin(BaseOwnerAdmin): form = PostAdminForm list_display = [ 'title', 'category', 'tag', 'status', 'created_time', 'owner', 'operator', 'is_top', ] list_display_links = [] #list_filter=[CategoryOwnerFilter] list_filter = [ 'category', 'tag', #('category', MultiSelectFieldListFilter), #('tag', MultiSelectFieldListFilter), ] search_fields = ['title', 'category__name', 'tag__name'] actions_on_top = True actions_on_bottom = True save_on_top = True exclude = ('owner', ) #fields=( # ('category','title'), # 'desc', # 'status', # 'content', # 'tag', #) form_layout = (Fieldset( '基础信息', Row("title", "category"), 'status', 'tag', 'is_top', ), Fieldset( '内容信息', 'desc', 'is_md', 'content_ck', 'content_md', 'content', )) #filter_horizontal = ('tag', ) #filter_vertical = ('tag', ) #style_fields = {'tag': 'm2m_transfer'} def operator(self, obj): return format_html( '<a href="{}">编辑</a>', #reverse('cus_admin:blog_post_change',args=(obj.id,)) reverse('xadmin:blog_post_change', args=(obj.id, ))) operator.short_description = '操作'
class t_product_questions_Adimin(object): def show_AttachmentUrls(self,obj) : attachmentUrl1=""; attachmentUrl2=""; attachmentUrl3=""; attachmentUrl4=""; attachmentUrl5=""; attachmentUrl6=""; rt='' if obj.AttachmentUrl1 is not None and str(obj.AttachmentUrl1).strip() !='' : attachmentUrl1 = u'%s%s.%s/%s/%s/%s'%(PREFIX,BUCKETNAME_TORT,ENDPOINT_OUT,'questions',obj.id,str(obj.AttachmentUrl1)) rt="%s附件一:<a href=%s>%s</a>;<br>"%(rt,attachmentUrl1,attachmentUrl1) if obj.AttachmentUrl2 is not None and str(obj.AttachmentUrl2).strip() !='' : attachmentUrl2 = u'%s%s.%s/%s/%s/%s'%(PREFIX,BUCKETNAME_TORT,ENDPOINT_OUT,'questions',obj.id,str(obj.AttachmentUrl2)) rt="%s附件二:<a href=%s>%s</a>;<br>"%(rt,attachmentUrl2,attachmentUrl2) if obj.AttachmentUrl3 is not None and str(obj.AttachmentUrl3).strip() !='' : attachmentUrl3 = u'%s%s.%s/%s/%s/%s'%(PREFIX,BUCKETNAME_TORT,ENDPOINT_OUT,'questions',obj.id,str(obj.AttachmentUrl3)) rt="%s附件三:<a href=%s>%s</a>;<br>"%(rt,attachmentUrl3,attachmentUrl3) if obj.AttachmentUrl4 is not None and str(obj.AttachmentUrl4).strip() !='' : attachmentUrl4 = u'%s%s.%s/%s/%s/%s'%(PREFIX,BUCKETNAME_TORT,ENDPOINT_OUT,'questions',obj.id,str(obj.AttachmentUrl4)) rt="%s附件四:<a href=%s>%s</a>;<br>"%(rt,attachmentUrl4,attachmentUrl4) if obj.AttachmentUrl5 is not None and str(obj.AttachmentUrl5).strip() !='' : attachmentUrl5 = u'%s%s.%s/%s/%s/%s'%(PREFIX,BUCKETNAME_TORT,ENDPOINT_OUT,'questions',obj.id,str(obj.AttachmentUrl5)) rt="%s附件五:<a href=%s>%s</a>;<br>"%(rt,attachmentUrl5,attachmentUrl5) if obj.AttachmentUrl6 is not None and str(obj.AttachmentUrl6).strip() !='' : attachmentUrl6 = u'%s%s.%s/%s/%s/%s'%(PREFIX,BUCKETNAME_TORT,ENDPOINT_OUT,'questions',obj.id,str(obj.AttachmentUrl6)) rt="%s附件六:<a href=%s>%s</a>;"%(rt,attachmentUrl6,attachmentUrl6) #rt = "附件一:<a href=%s>%s</a>;<br>附件二:<a href=%s>%s</a><br>附件三:<a href=%s>%s</a><br>附件四:<a href=%s>%s</a><br>附件五:<a href=%s>%s</a><br>附件六:<a href=%s>%s</a>;"%(attachmentUrl1,attachmentUrl1,attachmentUrl2,attachmentUrl2,attachmentUrl3,attachmentUrl3,attachmentUrl4,attachmentUrl4,attachmentUrl5,attachmentUrl5,attachmentUrl6,attachmentUrl6) return mark_safe(rt) show_AttachmentUrls.short_description = u'附件' list_display=('id','PTitle','Type','Priority','LevelNumber','SubmitDay','ExpectedDay','Status','StaffIDSubmit','StaffIDCheck','StaffIDHandle','ExecutedDay','StaffID','Description','show_AttachmentUrls','UpdateTime',) list_display_links=('id',) search_fields=('id','Type','PTitle','Priority','LevelNumber','Status','StaffIDSubmit','StaffIDHandle','StaffID','Description','StaffIDCheck',) list_filter = ('PTitle','Type','Priority','LevelNumber','SubmitDay','ExpectedDay','Status','StaffIDSubmit','StaffIDHandle','StaffID','Description','UpdateTime','StaffIDCheck','ExecutedDay') readonly_fields = ('id','UpdateTime',) list_editable = ('PTitle','Type','Priority','LevelNumber','SubmitDay','ExpectedDay','Status','StaffIDSubmit','StaffIDHandle','StaffID','Description','StaffIDCheck','ExecutedDay',) form_layout = ( Fieldset(u'基本信息', Row('id','StaffID',), Row('PTitle','Type','Status',), Row('Priority','SubmitDay','ExpectedDay',), Row('StaffIDSubmit','StaffIDCheck'), Row('StaffIDHandle','ExecutedDay',), css_class = 'unsort ' ), Fieldset(u'问题描述', Row( 'AttachmentUrl1','AttachmentUrl2'), Row( 'AttachmentUrl3','AttachmentUrl4'), Row( 'AttachmentUrl5','AttachmentUrl6'), Row( 'Description',), css_class = 'unsort ' ), Fieldset(u'更新时间', Row('UpdateTime',), css_class = 'unsort ' ) ) def get_list_queryset(self): request = self.request qs = super(t_product_questions_Adimin, self).get_list_queryset() return qs.exclude(Status="已完成") logger = logging.getLogger('sourceDns.webdns.views') #def save_model(self, request, obj, form, change): def save_models(self): obj = self.new_obj request = self.request import datetime now = datetime.datetime.now() auth = oss2.Auth(ACCESS_KEY_ID, ACCESS_KEY_SECRET) bucket = oss2.Bucket(auth, ENDPOINT,BUCKETNAME_TORT) try: if obj.AttachmentUrl1 is not None and str(obj.AttachmentUrl1).strip() !='' : bucket.put_object(u'%s/%s/%s'%('questions',obj.id,str(obj.AttachmentUrl1)),obj.AttachmentUrl1) if obj.AttachmentUrl2 is not None and str(obj.AttachmentUrl2).strip() !='' : bucket.put_object(u'%s/%s/%s'%('questions',obj.id,str(obj.AttachmentUrl2)),obj.AttachmentUrl2) if obj.AttachmentUrl3 is not None and str(obj.AttachmentUrl3).strip() !='' : bucket.put_object(u'%s/%s/%s'%('questions',obj.id,str(obj.AttachmentUrl3)),obj.AttachmentUrl3) if obj.AttachmentUrl4 is not None and str(obj.AttachmentUrl4).strip() !='' : bucket.put_object(u'%s/%s/%s'%('questions',obj.id,str(obj.AttachmentUrl4)),obj.AttachmentUrl4) if obj.AttachmentUrl5 is not None and str(obj.AttachmentUrl5).strip() !='' : bucket.put_object(u'%s/%s/%s'%('questions',obj.id,str(obj.AttachmentUrl5)),obj.AttachmentUrl5) if obj.AttachmentUrl6 is not None and str(obj.AttachmentUrl6).strip() !='' : bucket.put_object(u'%s/%s/%s'%('questions',obj.id,str(obj.AttachmentUrl6)),obj.AttachmentUrl6) except: pass obj.StaffID = request.user.username obj.save() if request.method == 'POST': files = request.FILES.getlist('myfiles') for f in files : path = MEDIA_ROOT + 'questions_pic/' + str(obj.id) if not os.path.exists(path): os.mkdir(path) destination = open(path + '/' + f.name,'wb+') for chunk in f.chunks(): destination.write(chunk) destination.close() def get_list_queryset(self): request = self.request qs = super(t_product_questions_Adimin, self).get_list_queryset() return qs.filter(IT_IN_OUT='IN')
class PostInLine: form_layout = (Container(Row('title', 'desc'))) extra = 0 # 额外控制多少个 model = Post
class Equipmentmoel(Baseadminmodel): inlines = [Equipment_barInline] is_add_eb_persmodal = True mymodel = Equipment list_filter = mymodel.get_fields() + Prgsheet.get_fields( True) + Contract.get_fields(True) ordering = ['-updatetime'] model_icon = 'fa fa-list' form_layout = (Fieldset((u''), 'prgsheet', 'owner', 'contract', 'comment', Row('total_number', 'sc_total_number', 'total_money', 'isfinish'), Row('createtime', 'updatetime', 'finishtime'), 'finishtime_recorde', css_class='unsort notitle'), ) def get_btns(self): bnt1_per, bnt1_text = get_tupple(self.obj, messagesender.EP_FINISH_AND_FLOWTO_JF) bnt2_per, bnt2_text = get_tupple(self.obj, messagesender.DISPENSE_TO_LGYG) btns = [ { 'text': '点击已配齐', 'candialog': True, 'd_title': '手动更新配齐状态', 'd_hasper': bnt1_per, 'd_text': bnt1_text, 'd_url': self.get_submit_url(messagesender.EP_FINISH_AND_FLOWTO_JF), 'has_msg': True, }, { 'text': '分发配单人', 'candialog': True, 'd_title': '分发给当前配单人', 'd_hasper': bnt2_per, 'd_text': bnt2_text, 'd_url': self.get_submit_url(messagesender.DISPENSE_TO_LGYG), 'has_msg': True, }, { 'text': '返回列表页', 'candialog': False, 'd_url': self.obj.get_model_url('list'), }, ] return btns def save_models(self): # 保存时生成合同 obj = self.new_obj obj.contract = obj.prgsheet.contract obj.save() def get_media(self): path = self.request.get_full_path() media = super().get_media() if "add" in path or "update" in path: media = media + self.vendor('xadmin.utils.personnel_choose.js') return media
list_display_links = ('id',) list_display = ('campaign_state', 'show_pic', 'show_sku_detail', 'sales_price', 'bid', 'max_budget', 'spend', 'paid_impressions', 'sales', 'gmv', 'spend_gmv', 'sales_paid', 'show_campaign_date', 'show_keywords', 'survey_remark', 'operation_remark', 'show_product_detail',) list_editable = {'survey_remark', 'operation_remark', 'StoreName'} '''list_editable = ('product_id', 'keywords', 'bid', 'max_budget', 'start_time', 'end_time', 'auto_renew', 'survey_remark', 'operation_remark')''' fields = ('shopname', 'product_id', 'max_budget', 'bid', 'start_time', 'end_time', 'auto_renew', 'StoreName', 'keywords', 'survey_remark', 'operation_remark' ) form_layout = ( Fieldset(u'选填信息', Row('shopname') ), Fieldset(u'关键信息', Row('product_id'), Row('max_budget'), Row('bid'), Row('auto_renew', 'StoreName'), Row('start_time', 'end_time'), Row('survey_remark', 'operation_remark'), css_class='unsort' ), Fieldset(u'关键词建议', Row('keywords')) ) def getPid_byRating(self, rstart, rend): if not rstart and not rend:
class PostInline: form_layout = (Container(Row('title', 'desc'), )) extra = 1 # 控制额外多几个 model = Post
class Contractmodel(Baseadminmodel): mymodel = Contract required_fields = ['deadline', 'deadline_date'] required_update_or_add = "add" list_filter = mymodel.get_fields() + Custom.get_fields( True) + Prgsheet.get_fields(True) + Equipment.get_fields(True) ordering = ['-updatetime'] model_icon = 'fa fa-book' list_bookmarks = [{ "title": "合同截止日期提醒", "query": { "deadline_date__lt": (datetime.date.today() + datetime.timedelta(days=60)), 'contract_type__exact': '资质合同', 'prgsheet__isfinish__exact': 0 } }] form_layout = ( Fieldset((u'通用'), 'custom', "num", Row('name', 'status'), 'singman', 'signdate', 'year', 'total_price', 'contract_type', Row('file', 'file_to_pdf'), 'update_by', 'comment', 'founder', Row('createtime', 'updatetime', 'finishtime', 'propellingtime'), css_class='unsort'), Fieldset( '解除或补充合同', Row('bcfile', 'bcfile_to_pdf'), Row('jcfile', 'jcfile_to_pdf'), css_class='unsort', ), Fieldset( '收款单自动汇总', Row('Accepted', 'receivable'), 'isfinish', css_class='unsort', ), Fieldset('资质合同专项', Row('deadline', 'deadline_date'), Row('deadline_text', 'ispropelling'), 'itemcontent', 'payment', css_class='unsort'), ) def get_btns(self): bnt1_per, bnt1_text = get_tupple(self.obj, messagesender.CT_FINISH_AND_FLOWTO_CW) bnt2_per, bnt2_text = get_tupple(self.obj, messagesender.FLOW_TO_JFZJ) btns = [ { 'text': '点击已收结', 'candialog': True, 'd_title': '手动更新收结状态', 'd_hasper': bnt1_per, 'd_text': bnt1_text, 'd_url': self.get_submit_url(messagesender.CT_FINISH_AND_FLOWTO_CW), 'has_msg': False, }, { 'text': '推送给消化', 'candialog': True, 'd_title': '推送给消化进行办理', 'd_hasper': bnt2_per, 'd_text': bnt2_text, 'd_url': self.get_submit_url(messagesender.FLOW_TO_JFZJ), 'has_msg': True, }, { 'text': '返回列表页', 'candialog': False, 'd_url': self.obj.get_model_url('list'), }, ] return btns # def has_change_permission(self, obj=None): # perm = super().has_change_permission(obj) # if obj: # perm = self.user.is_superuser or (perm and not obj.isfinish) # return perm def save_models(self): # 保存时生成合同名称 obj = self.new_obj custom_name = obj.custom.name contract_name = custom_name + obj.contract_type + obj.num if obj.name != contract_name: obj.name = contract_name obj.save() def get_form_datas(self): params = super(Contractmodel, self).get_form_datas() if not self.org_obj and self.request.method != 'POST': year = time.strftime('%y') params['initial']['num'] = f"G{year}-" return params
class Prgsheetmoel(Baseadminmodel): list_select_related = ['owner', 'contract', 'contract__custom'] import_export_args = { 'import_resource_class': Prg_im_resource, 'export_resource_class': Prg_ex_resource } mymodel = Prgsheet list_filter = mymodel.get_fields() + Contract.get_fields( True) + Equipment.get_fields(True) model_icon = 'fa fa-circle' ordering = ['-updatetime'] required_fields = [ 'progress', 'approval_dep', 'approval_address', 'type', 'prg_explain', 'jianzaoshi', 'jsfzr', 'gongchengshi', 'jigong', 'sanleirenyuan', 'tezhonggong', 'ohter', ] form_layout = ( Fieldset((u'进度表'), 'contract', Row('ownerrecord', 'owner'), Row('approval_dep', 'approval_address'), Row( 'type', 'progress', ), 'totalcost', Row('file', 'file_to_pdf'), 'prg_explain', Row('createtime', 'updatetime', 'finishtime', 'propellingtime'), Row('isfinish', 'ispropelling'), css_class='unsort'), Fieldset( '人员配备相关', 'jianzaoshi', 'jsfzr', 'gongchengshi', 'jigong', 'sanleirenyuan', 'tezhonggong', 'ohter', css_class='unsort', ), ) def set_form_obj_requird(self): if self.required_update_or_add in self.request.get_full_path( ) and self.user.department != "交付总监": for field in self.required_fields: self.form_obj.fields[field].required = True def get_btns(self): bnt1_per, bnt1_text = get_tupple(self.obj, messagesender.PG_FINISH_AND_FLOWTO_KF) bnt2_per, bnt2_text = get_tupple(self.obj, messagesender.DISPENSE_TO_JFYG) bnt3_per, bnt3_text = get_tupple(self.obj, messagesender.FLOW_TO_LGZJ) d_text = "将手动修改该进度表收结状态,请核实后点击确认!" btns = [ { 'text': '点击已办结', 'candialog': True, 'd_title': '手动更新收结状态', 'd_hasper': bnt1_per, 'd_text': bnt1_text, 'd_url': self.get_submit_url(messagesender.PG_FINISH_AND_FLOWTO_KF), 'has_msg': False, }, { 'text': '分发做单人', 'candialog': True, 'd_title': '分发给当前做单人', 'd_hasper': bnt2_per, 'd_text': bnt2_text, 'd_url': self.get_submit_url(messagesender.DISPENSE_TO_JFYG), 'has_msg': True, }, { 'text': '推送给猎管', 'candialog': True, 'd_title': '推送给猎管部门进行办理', 'd_hasper': bnt3_per, 'd_text': bnt3_text, 'd_url': self.get_submit_url(messagesender.FLOW_TO_LGZJ), 'has_msg': True, }, { 'text': '返回列表页', 'candialog': False, 'd_url': self.obj.get_model_url('list'), }, ] return btns def has_change_permission(self, obj=None): codename = get_permission_codename('change', self.opts) perm = super().has_change_permission(obj) if obj: perm = self.user.is_superuser or (perm and not obj.isfinish) return perm
from django.utils.translation import ugettext as _ from xadmin.layout import Fieldset, Main, Side, Row StaffLayout = \ ( Main( Fieldset(_('职工状态'), 'at_post', ), Fieldset(_('个人信息'), 'personal_name', 'personal_gender', 'personal_id_num', 'personal_birth_date', 'personal_soc_ins', 'personal_soc_ins_id', Row('personal_folk', 'personal_reg_location'), 'personal_current_location', 'personal_is_marry', 'personal_status', Row('personal_phone', 'personal_phone_other'), Row('personal_emer_phone', 'personal_emer_people'), ), Fieldset(_('工作信息'), Row('work_enter_date', 'work_dismiss_date'), 'work_hire_method', 'personal_on_market', 'work_department', 'work_duty', 'work_duty_hire_date', ), Fieldset(_('职称信息'),
class PostInline: form_layout = (Container(Row("title", "desc"), )) extra = 1 # 控制额外多几个 model = Post
class HostAdmin(object): def open_web(self, instance): 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", "ip", ) list_display_links = ("name", ) raw_id_fields = ("idc", ) style_fields = {"system": "radio-inline"} search_fields = ["name", "ip", "description", "idc__name"] 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_quick_filter = ["idc_id"] list_bookmarks = [{ "title": "Need Guarantee", "query": { "status__exact": 2 }, "order": ("-guarantee_date", ), "cols": ("brand", "guarantee_date", "service_type"), }] show_detail_fields = ("idc", ) list_editable = ("name", "idc", "guarantee_date", "service_type", "description", "ip") save_as = True aggregate_fields = {"guarantee_date": "min"} grid_layouts = ("table", "thumbnails") form_layout = (Main( TabHolder( Tab( "Comm Fields", Fieldset( "Company data", "name", "idc", description="some comm fields, required", ), 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"), )) 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 } }, "xaxis": { "aggregate": "count", "mode": "categories" }, }, }, }