示例#1
0
                           '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
#
#
示例#2
0
    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)
示例#3
0
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)
示例#4
0
    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)
示例#5
0
        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)
示例#6
0
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.
示例#7
0
    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)
示例#8
0
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",
示例#9
0
        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)
示例#10
0
            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)
示例#11
0
    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)
示例#12
0
                    "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)
示例#13
0
        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)
示例#14
0
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 = (