'transform_status','reciver_address'), }],['客户信息',{ 'fields': ('partner', 'partner_company', 'partner_phone','partner_email', 'saler'), }],['收货信息',{ 'fields': ( 'man_to_upload','sample_receiver','sample_checker', 'sample_diwenzhuangtai'), }],['服务信息',{ 'fields': ( 'project_type','arrive_time','sample_species','sample_diwenzhuangtai', 'sample_num','extract_to_pollute_DNA', 'management_to_rest','file_teacher', "sampleinfoformid","time_to_upload"), }]) return fieldsets list_filter = ("sample_status",'time_to_upload') BMS_admin_site.register(SampleInfoForm,SampleInfoFormAdmin) # admin.site.register(Realbio_User, UserAdmin) #全站范围内禁用删权限 # admin.site.disable_action('delete_selected') # admin.site.register(SampleInfo) # admin.site.register(Product,ProAdmin) # admin.site.site_header = '杭州锐翌BMS系统' # admin.site.site_title = '杭州锐翌' # class SampleInfoAdmin(ImportExportActionModelAdmin): # resource_class = SampleInfoResource # #
def get_readonly_fields(self, request, obj=None): self.readonly_fields = ( "chat_name", "chat_id", "chat_owner", "create_at", "is_valid") if not request.user.is_superuser else () return self.readonly_fields def get_changeform_initial_data(self, request): initial = super().get_changeform_initial_data(request) initial["chat_owner"] = request.user.id initial["chat_id"] = "12345678" initial["members"] = [ request.user.id, ] return initial class ChatTemplatesAdmin(admin.ModelAdmin): list_per_page = 30 list_display = ("name", "sign", "text", "link", "create_at", "is_valid") list_display_links = ("name", ) search_fields = ( "name", "sign", "text", ) list_filter = ("is_valid", "sign") BMS_admin_site.register(ChatTemplates, ChatTemplatesAdmin) BMS_admin_site.register(DingtalkChat, DingtalkChatAdmin)
class Libsampleadmin(admin.ModelAdmin): list_display = [ "sample_number", "sample_name", "unique_code", "libExecute", "lib_code", "lib_note", "is_rebuild" ] list_display_links = ["sample_number"] search_fields = [ "is_rebuild", ] class Seqsampleadmin(admin.ModelAdmin): list_display = [ "sample_number", "sample_name", "unique_code", "seqExecute", "seq_note", "is_rebuild" ] list_display_links = ["sample_number"] search_fields = [ "is_rebuild", ] BMS_admin_site.register(Extmethod, ExtmothodAdmin) BMS_admin_site.register(Testmethod, TestmothodAdmin) BMS_admin_site.register(ExtExecute, ExtExecuteAdmin) BMS_admin_site.register(LibExecute, LibExecuteAdmin) BMS_admin_site.register(SeqExecute, SeqExecuteAdmin) BMS_admin_site.register(SampleInfoExt, Extsampleadmin) BMS_admin_site.register(SampleInfoLib, Libsampleadmin) BMS_admin_site.register(SampleInfoSeq, Seqsampleadmin)
def get_actions(self, request): actions = super(LibTaskAdmin, self).get_actions(request) if not request.user.has_perm('lims.delete_libtask'): actions = None return actions def get_readonly_fields(self, request, obj=None): if not request.user.has_perm('lims.delete_libtask'): return [ 'contract', 'contract_name', 'project', 'customer', 'sample_name', 'receive_date', 'type', 'sample_code', 'lib_code', 'index', 'length', 'volume', 'concentration', 'total', 'result', 'note' ] return [ 'contract', 'contract_name', 'project', 'customer', 'sample_name', 'receive_date' ] # admin.site.register(SampleInfo, SampleInfoAdmin) # admin.site.register(ExtTask, ExtTaskAdmin) # # admin.site.register(QcTask, QcTaskAdmin) # admin.site.register(LibTask, LibTaskAdmin) BMS_admin_site.register(SampleInfo, SampleInfoAdmin) BMS_admin_site.register(ExtTask, ExtTaskAdmin) # admin.site.register(QcTask, QcTaskAdmin) BMS_admin_site.register(LibTask, LibTaskAdmin)
extra_context = extra_context or {} if not request.user.has_perm('crm.add_intention'): extra_context['show_save'] = False extra_context['show_save_as_new'] = False # extra_context['show_save_and_add_another'] = False extra_context['show_save_and_continue'] = False return super(IntentionAdmin, self).change_view(request, object_id, form_url, extra_context=extra_context) def save_formset(self, request, form, formset, change): # 历史记录禁止修改 instances = formset.save(commit=False) for obj in formset.deleted_objects: obj.delete() if instances: for instance in instances: if instance.record_date < date.today(): self.message_user(request, '%s 历史进展记录未被允许修改' % instance.record_date, level=messages.WARNING) continue instance.save() formset.save_m2m() BMS_admin_site.register(Intention, IntentionAdmin) BMS_admin_site.register(Customer, CustomerAdmin)
from django.contrib import admin from BMS.admin_bms import BMS_admin_site from .models import Notification class NotificationAdmin(admin.ModelAdmin): list_display = ('recipient', 'actor', 'level', 'target', 'unread', 'public') list_filter = ( 'level', 'unread', 'public', 'timestamp', ) BMS_admin_site.register(Notification, NotificationAdmin) # Register your models here.
raw_id_fields = ['invoice'] date_hierarchy = 'date' list_per_page = 50 def get_changelist(self, request): return BillChangeList def save_model(self, request, obj, form, change): """ 1、无发票单号不能登记 2、进账必须大于0 3、进账总额不能超过开票金额 """ invoice_amount = obj.invoice.invoice.invoice.invoice.amount current_invoice_amounts = Bill.objects.filter(invoice=obj.invoice).exclude(id=obj.id).values_list('income', flat=True) sum_income = obj.income + sum(current_invoice_amounts) if not obj.invoice.invoice_code: messages.set_level(request, messages.WARNING) self.message_user(request, '不能对无单号发票登记进账', level=messages.WARNING) elif obj.income <= 0: messages.set_level(request, messages.ERROR) self.message_user(request, '进账登记必须大于零', level=messages.ERROR) elif invoice_amount < sum_income: messages.set_level(request, messages.ERROR) self.message_user(request, '进账总额 %.2f 超过开票金额 %.2f' % (sum_income, invoice_amount), level=messages.ERROR) else: obj.save() BMS_admin_site.register(Invoice, InvoiceAdmin) admin.site.register(Bill, BillAdmin)
from django.utils import timezone from django.utils.html import format_html from import_export.admin import ImportExportModelAdmin from BMS.admin_bms import BMS_admin_site from BMS.notice_mixin import NotificationMixin from BMS.settings import DINGTALK_APPKEY, DINGTALK_SECRET, DINGTALK_AGENT_ID class UserForAutocompleteAdmin(UserAdmin): """User define user admin for the queryset filtration""" def autocomplete_view(self, request): return AnaAutocompleteJsonView.as_view(model_admin=self)(request) BMS_admin_site.unregister(User) BMS_admin_site.register(User, UserForAutocompleteAdmin) class AnaExecuteAdmin(ImportExportModelAdmin, NotificationMixin): appkey = DINGTALK_APPKEY appsecret = DINGTALK_SECRET autocomplete_fields = ("analyst", ) change_list_template = "admin/am/change_list_am.html" fields = ( "ana_submit", "analyst", "end_date", "baidu_link", "is_submit", "notes" ) form = AnaExecuteModelForm list_per_page = 30 list_display = ( "ana_submit", "contract_name", "analyst", "notes", "end_date",
if obj and obj.is_submit: return ['slug', 'date', 'sample', 'is_submit'] return ['slug', 'date'] def save_model(self, request, obj, form, change): # 选中提交复选框时自动记录提交时间 if obj.is_submit and not obj.date: obj.date = date.today() projects = [] for i in set(projects): if not i.due_date: cycle = i.lib_cycle + i.seq_cycle + i.ana_cycle i.due_date = add_business_days(date.today(), cycle) i.save() obj.save() # admin.site.register(Project, ProjectAdmin) # # admin.site.register(QcSubmit, QcSubmitAdmin) # admin.site.register(ExtSubmit, ExtSubmitAdmin) # admin.site.register(LibSubmit, LibSubmitAdmin) # admin.site.register(SeqSubmit, SeqSubmitAdmin) # admin.site.register(AnaSubmit, AnaSubmitAdmin) BMS_admin_site.register(Project, ProjectAdmin) # admin.site.register(QcSubmit, QcSubmitAdmin) BMS_admin_site.register(ExtSubmit, ExtSubmitAdmin) BMS_admin_site.register(LibSubmit, LibSubmitAdmin) BMS_admin_site.register(SeqSubmit, SeqSubmitAdmin) BMS_admin_site.register(AnaSubmit, AnaSubmitAdmin)
sales_users = User.objects.filter( Q(groups__id=3) | Q(groups__id=7)) kwargs["queryset"] = sales_users return super().formfield_for_foreignkey(db_field, request, **kwargs) class BzContractAdmin(admin.ModelAdmin): ''' 报账合同的Admin ''' list_display = [ 'contract_number', 'name', 'send_date', 'receive_date', 'file_link' ] list_per_page = 50 filter_horizontal = [ "contract", ] autocomplete_fields = ('salesman', ) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "salesman": sales_users = User.objects.filter( Q(groups__id=3) | Q(groups__id=7)) kwargs["queryset"] = sales_users return super().formfield_for_foreignkey(db_field, request, **kwargs) BMS_admin_site.register(BzContract, BzContractAdmin) BMS_admin_site.register(Contract, ContractAdmin) BMS_admin_site.register(Invoice, InvoiceAdmin) BMS_admin_site.register(InvoiceTitle, InvoiceTitleAdmin)
model = TrainingCourse fields = ("saler", "partner", "issuingUnit", "registration_fee", "content", "amount", "invoice_date", "amount_in", "amount_in_date", "trainingcourse", "note", "is_submit") list_display = ("saler", "partner","issuingUnit", "registration_fee", "trainingcourse", "is_submit") list_display_links = ("saler",) resource_class = TrainingCourseResource def get_readonly_fields(self, request, obj=None): try: if obj.is_submit: self.readonly_fields = ("saler", "partner", "issuingUnit", "registration_fee", "content", "amount", "invoice_date", "amount_in", "amount_in_date", "trainingcourse", "note", "is_submit") return self.readonly_fields except: return self.readonly_fields return self.readonly_fields def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == "saler": saler_ = User.objects.filter(Q(groups__id=3) | Q(groups__id=6)) kwargs["queryset"] = saler_ return super().formfield_for_foreignkey(db_field, request, **kwargs) BMS_admin_site.register(TrainingCourse, TrainingCourseAdmin)
"contract_type", "contract_num", "contract_name", "type", "contract_contacts", "contract_contacts_phone", "contract_contacts_email", "price", "price_total", "send_num", "date", "contract_file", "contract_scan", "note", "submit" ] else: return [] else: return [] def save_model(self, request, obj, form, change): obj.save() if obj.submit: content = "【上海锐翌生物科技有限公司-BMS通知】:新增外包合同操作,合同名称:{},合同编号:{}".format( obj.contract_name, obj.contract_num) self.send_group_message( content, DingtalkChat.objects.get(chat_name="项目管理钉钉群-BMS").chat_id) call_back = self.send_dingtalk_result message = "提交成功,已钉钉项目管理群" if call_back else "钉钉通知失败" self.message_user(request, message) BMS_admin_site.register(OutSourceContract, OutSourceContractAdmin) BMS_admin_site.register(BzContract, BzContractAdmin) BMS_admin_site.register(Contract, ContractAdmin) BMS_admin_site.register(Invoice, InvoiceAdmin) BMS_admin_site.register(InvoiceTitle, InvoiceTitleAdmin) BMS_admin_site.register(Contract_execute, ContractExecuteAdmin)
aa = {a.union_id: a.analysis_name for a in obj.analyses_aa.all()} pa = {a.union_id: a.analysis_name for a in obj.analyses_pa.all()} paragraph_context.update(extra_fields) paragraph_context.update(aa) paragraph_context.update(pa) paragraph_context.update(clauses) contract = DocxProduce( template_text=template_text, template_docx=template_docx, paragraph_context=paragraph_context, table_context=TABLE_CONTEXT, ) contract_name = "{}-{}".format( obj.contract_name, self.date_format(obj.signed_date) ) contract.save(to_path=TEMPLATE_TO_PATH, file_name=contract_name) obj.contract_file = "uploads/{}.docx".format(contract_name) obj.save() def save_model(self, request, obj, form, change): super().save_model(request, obj, form, change) obj.analyses_aa.add(*form.cleaned_data["analyses_aa"]) obj.analyses_pa.add(*form.cleaned_data["analyses_pa"]) obj.save() form.save_m2m() self.contract_produce(obj) BMS_admin_site.register(Analyses, AnalysesAdmin) BMS_admin_site.register(ContractApplications, ContractApplicationsAdmin) BMS_admin_site.register(Intention, IntentionAdmin) BMS_admin_site.register(Customer, CustomerAdmin)
from BMS.notice_mixin import NotificationMixin from BMS.settings import DINGTALK_APPKEY, DINGTALK_SECRET, DINGTALK_AGENT_ID from em.models import Employees from nm.models import DingtalkChat from rangefilter.filter import DateRangeFilter class UserForAutocompleteAdmin(UserAdmin): """User define user admin for the queryset filtration""" def autocomplete_view(self, request): return AnaAutocompleteJsonView.as_view(model_admin=self)(request) BMS_admin_site.unregister(User) BMS_admin_site.register(User, UserForAutocompleteAdmin) class AnaExecuteAdmin(ImportExportModelAdmin, NotificationMixin): appkey = DINGTALK_APPKEY appsecret = DINGTALK_SECRET autocomplete_fields = ("analyst", ) change_list_template = "admin/am/change_list_am.html" fields = ( "ana_submit", "analyst", "sample_count", "ana_start_date", "end_date", "depart_data_path", "baidu_link", "is_submit", "notes", ) form = AnaExecuteModelForm list_per_page = 30 list_display = (