Exemplo n.º 1
0
class ProjectAdmin(PaymentSystemModelAdmin):
    def get_expiring_date(self, obj: Project):
        return obj.active_p2s.expiring_date

    get_expiring_date.short_description = 'Expiring date'

    def get_is_paid(self, obj: Project):
        return obj.active_p2s.is_paid

    get_is_paid.short_description = 'Is paid'

    list_display = (
        'id',
        'name',
        'owner',
        'disabled_at',
        'active_subscription',
        'get_expiring_date',
        'get_is_paid',
    )
    list_display_links = ('name', )
    list_filter = (
        'disabled_at',
        input_filter('owner', 'owner (name, email)', [
            'owner__email',
            'owner__first_name',
            'owner__last_name',
        ]),
        input_filter('name', 'name', ['name']),
    )
    search_fields = (
        'owner__email',
        'owner__first_name',
        'owner__last_name',
        'name',
    )
    readonly_fields = (
        'id',
        'name',
        'owner',
        'description',
        'disabled_at',
        'active_subscription',
        'get_expiring_date',
        'get_is_paid',
    )
    form = ProjectForm

    inlines = [UserProjectInline, ProjectSubscriptionInline]

    def save_model(self, request, obj, form, change):
        return obj

    def has_delete_permission(self, request, obj=None):
        return False

    def has_add_permission(self, request):
        return False
Exemplo n.º 2
0
class PersonSanctionAdmin(RegisterModelAdmin):
    def get_countries(self, obj: PersonSanction):
        return ', '.join(
            obj.countries_of_citizenship.values_list('name', flat=True))

    get_countries.short_description = 'Countries of citizenship'

    save_as = True
    form = get_sanction_form(PersonSanction)
    list_display = (
        'id',
        'full_name',
        'date_of_birth',
        'start_date',
        'end_date',
        'taxpayer_number',
        'get_countries',
    )
    filter_horizontal = ('types_of_sanctions', 'countries_of_citizenship')
    autocomplete_fields = [
        'pep', 'countries_of_citizenship', 'types_of_sanctions'
    ]
    search_fields = (
        'full_name',
        'full_name_original',
        'taxpayer_number',
        'address',
        'place_of_birth',
        'types_of_sanctions__name',
    )
    ordering = ('start_date', )
    list_filter = (
        input_filter('id', 'id', ['id'], 'exact'),
        input_filter('types_of_sanctions', 'types of sanctions',
                     ['types_of_sanctions__name']),
        input_filter('countries_of_citizenship',
                     'countries of citizenship name',
                     ['countries_of_citizenship__name']),
        input_filter('taxpayer_number', 'taxpayer number',
                     ['taxpayer_number']),
        input_filter('occupation', 'occupation', ['occupation']),
        input_filter('id_card', 'id card', ['id_card']),
        ('date_of_birth', DateRangeFilter),
        ('start_date', DateRangeFilter),
        ('end_date', DateRangeFilter),
        ('reasoning_date', DateRangeFilter),
        input_filter('reasoning', 'reasoning', ['reasoning']),
        input_filter('additional_info', 'additional_info',
                     ['additional_info']),
    )

    def has_change_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_add_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_module_permission(request)
Exemplo n.º 3
0
class CountrySanctionAdmin(RegisterModelAdmin):
    save_as = True
    form = get_sanction_form(CountrySanction)
    list_display = (
        'id',
        'country',
    )
    search_fields = (
        'country__name',
        'types_of_sanctions__name',
    )
    filter_horisontal = ('types_of_sanctions', )
    autocomplete_fields = [
        'types_of_sanctions',
    ]
    ordering = ('start_date', )
    list_filter = (input_filter('types_of_sanctions', 'types of sanctions',
                                ['types_of_sanctions__name']), )

    def has_change_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_add_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_module_permission(request)
Exemplo n.º 4
0
class InvitationAdmin(PaymentSystemModelAdmin):
    change_form_template = 'admin/change_invitation_form.html'

    list_display = (
        'id',
        'email',
        'project',
        'deleted_at',
    )
    autocomplete_fields = ('project', )
    list_filter = (
        input_filter('email', 'Email', ['email']),
        input_filter('project_name', 'project name', ['project__name']),
        input_filter('project_owner', 'project owner (name or email)', [
            'project__owner__first_name',
            'project__owner__last_name',
            'project__owner__email',
        ]),
    )
    search_fields = ('email', 'project__name')

    def response_change(self, request, obj: Invitation):
        res = super().response_change(request, obj)
        if 'save-send-email' in request.POST:
            obj.send()
            self.message_user(request, "Email was sent")
        return res

    def get_readonly_fields(self, request, obj=None):
        readonly_fields = []
        if obj:
            readonly_fields += [
                'project',
                'created_at',
                'deleted_at',
            ]
        return readonly_fields

    def get_queryset(self, request):
        return Invitation.include_deleted_objects.order_by('-deleted_at')

    def delete_model(self, request, obj):
        obj.soft_delete()
Exemplo n.º 5
0
class CompanySanctionAdmin(RegisterModelAdmin):
    save_as = True
    form = get_sanction_form(CompanySanction)
    list_display = (
        'id',
        'name',
        'start_date',
        'end_date',
        'registration_number',
        'taxpayer_number',
        'country_of_registration',
    )
    filter_horisontal = ('types_of_sanctions', 'country_of_registration')
    autocomplete_fields = ('company', 'country_of_registration',
                           'types_of_sanctions')
    search_fields = (
        'name',
        'name_original',
        'registration_number',
        'address',
        'country_of_registration__name',
        'types_of_sanctions__name',
    )
    ordering = ('start_date', )
    list_filter = (
        input_filter('id', 'id', ['id'], 'exact'),
        input_filter('name', 'name', ['name']),
        input_filter('registration_number', 'registration number',
                     ['registration_number']),
        input_filter('taxpayer_number', 'taxpayer number',
                     ['taxpayer_number']),
        input_filter('types_of_sanctions', 'types of sanctions',
                     ['types_of_sanctions__name']),
        input_filter('country_of_registration',
                     'countries of registration name',
                     ['country_of_registration__name']),
        ('start_date', DateRangeFilter),
        ('end_date', DateRangeFilter),
        ('reasoning_date', DateRangeFilter),
        input_filter('reasoning', 'reasoning', ['reasoning']),
        input_filter('additional_info', 'additional_info',
                     ['additional_info']),
    )

    def has_change_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_add_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_module_permission(request)
Exemplo n.º 6
0
class SanctionTypeAdmin(RegisterModelAdmin):
    save_as = True
    list_display = ('id', 'name', 'law')
    search_fields = ('name', 'law')
    ordering = ('created_at', )
    list_filter = (
        input_filter('id', 'id', ['id'], 'exact'),
        'law',
    )

    def has_change_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_add_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_module_permission(request)
Exemplo n.º 7
0
class CountrySanctionAdmin(RegisterModelAdmin):
    api = '/api/sanction/country/'
    save_as = True
    form = get_sanction_form(CountrySanction)
    list_display = ('id', 'country', 'decree', 'start_date', 'end_date')
    search_fields = (
        'decree',
        'country__name',
        'types_of_sanctions__name',
    )
    filter_horisontal = ('types_of_sanctions', )
    autocomplete_fields = [
        'types_of_sanctions',
    ]
    ordering = ('start_date', )
    list_filter = (
        input_filter('types_of_sanctions', 'types of sanctions',
                     ['types_of_sanctions__name']),
        is_empty_filter('decree', 'decree number'),
        is_empty_filter('initial_data', 'initial data'),
    )
    actions = [
        'actualize',
    ]

    def actualize(self, request, queryset):
        actualize_action(self, request)

    actualize.short_description = 'ACTUALIZE COUNTRY SANCTIONS'

    def changelist_view(self, request, extra_context=None):
        self.request = request
        actualize_noqs(self)
        return super().changelist_view(self.request, extra_context)

    def has_change_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_add_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_module_permission(request)
Exemplo n.º 8
0
class CompanySanctionAdmin(RegisterModelAdmin):
    api = '/api/sanction/company/'
    save_as = True
    form = get_sanction_form(CompanySanction)
    list_display = (
        'id',
        'name',
        'decree',
        'start_date',
        'end_date',
        'registration_number',
        'taxpayer_number',
        'country_of_registration',
    )
    filter_horisontal = ('types_of_sanctions', 'country_of_registration')
    autocomplete_fields = ('company', 'country_of_registration',
                           'types_of_sanctions')
    search_fields = (
        'name',
        'name_original',
        'decree',
        'registration_number',
        'address',
        'country_of_registration__name',
        'types_of_sanctions__name',
    )
    ordering = ('start_date', )
    list_filter = (
        input_filter('id', 'id', ['id'], 'exact'),
        input_filter('name', 'name', ['name']),
        input_filter('registration_number', 'registration number',
                     ['registration_number']),
        input_filter('taxpayer_number', 'taxpayer number',
                     ['taxpayer_number']),
        input_filter('types_of_sanctions', 'types of sanctions',
                     ['types_of_sanctions__name']),
        input_filter('country_of_registration',
                     'countries of registration name',
                     ['country_of_registration__name']),
        ('start_date', DateRangeFilter),
        ('end_date', DateRangeFilter),
        ('reasoning_date', DateRangeFilter),
        input_filter('reasoning', 'reasoning', ['reasoning']),
        input_filter('additional_info', 'additional_info',
                     ['additional_info']),
        is_empty_filter('decree', 'decree number'),
        is_empty_filter('initial_data', 'initial data'),
    )
    actions = [
        'actualize',
    ]

    def actualize(self, request, queryset):
        actualize_action(self, request)

    actualize.short_description = 'ACTUALIZE COMPANY SANCTIONS'

    def changelist_view(self, request, extra_context=None):
        self.request = request
        actualize_noqs(self)
        return super().changelist_view(self.request, extra_context)

    def has_change_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_add_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_module_permission(request)
Exemplo n.º 9
0
class PersonSanctionAdmin(RegisterModelAdmin):
    api = '/api/sanction/person/'

    def get_countries(self, obj: PersonSanction):
        return ', '.join(
            obj.countries_of_citizenship.values_list('name', flat=True))

    get_countries.short_description = 'Countries of citizenship'

    save_as = True
    form = get_sanction_form(PersonSanction)
    list_display = (
        'id',
        'full_name',
        'date_of_birth',
        'decree',
        'start_date',
        'end_date',
        'taxpayer_number',
        'get_countries',
    )
    filter_horizontal = ('types_of_sanctions', 'countries_of_citizenship')
    autocomplete_fields = [
        'pep', 'countries_of_citizenship', 'types_of_sanctions'
    ]
    search_fields = (
        'decree',
        'full_name',
        'full_name_original',
        'taxpayer_number',
        'address',
        'place_of_birth',
        'types_of_sanctions__name',
    )
    ordering = ('start_date', )
    list_filter = (
        input_filter('id', 'id', ['id'], 'exact'),
        input_filter('types_of_sanctions', 'types of sanctions',
                     ['types_of_sanctions__name']),
        input_filter('countries_of_citizenship',
                     'countries of citizenship name',
                     ['countries_of_citizenship__name']),
        input_filter('taxpayer_number', 'taxpayer number',
                     ['taxpayer_number']),
        input_filter('occupation', 'occupation', ['occupation']),
        input_filter('id_card', 'id card', ['id_card']),
        ('date_of_birth', DateRangeFilter),
        ('start_date', DateRangeFilter),
        ('end_date', DateRangeFilter),
        ('reasoning_date', DateRangeFilter),
        input_filter('reasoning', 'reasoning', ['reasoning']),
        input_filter('additional_info', 'additional_info',
                     ['additional_info']),
        is_empty_filter('decree', 'decree number'),
        is_empty_filter('initial_data', 'initial data'),
    )
    actions = [
        'actualize',
    ]

    def actualize(self, request, queryset):
        actualize_action(self, request)

    actualize.short_description = 'ACTUALIZE PERSON SANCTIONS'

    def changelist_view(self, request, extra_context=None):
        self.request = request
        actualize_noqs(self)
        return super().changelist_view(self.request, extra_context)

    def has_change_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_add_permission(self, request, obj=None):
        return self.has_module_permission(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_module_permission(request)
Exemplo n.º 10
0
class InvoiceAdmin(PaymentSystemModelAdmin):
    def get_owner(self, obj: Invoice):
        return obj.project_subscription.project.owner

    get_owner.short_description = 'Owner'
    get_owner.admin_order_field = 'project_subscription__project__owner'

    def get_project(self, obj: Invoice):
        return obj.project_subscription.project

    get_project.short_description = 'Project'
    get_project.admin_order_field = 'project_subscription__project__name'

    def get_subscription(self, obj: Invoice):
        return obj.project_subscription.subscription

    get_subscription.short_description = 'Subscription'
    get_subscription.admin_order_field = 'project_subscription__subscription__name'

    def get_expiring_date(self, obj: Invoice):
        return obj.project_subscription.expiring_date

    get_expiring_date.short_description = 'Expiring date'
    get_expiring_date.admin_order_field = 'project_subscription__expiring_date'

    def get_invoice_number(self, obj: Invoice):
        return f'#{obj.id}'

    get_invoice_number.short_description = 'Invoice #'
    get_invoice_number.admin_order_field = 'id'

    def get_invoice_date(self, obj: Invoice):
        return obj.created_at.date()

    get_invoice_date.short_description = 'Invoice date'
    get_invoice_date.admin_order_field = 'created_at'

    list_display = (
        'get_invoice_number',
        'get_invoice_date',
        'get_owner',
        # 'get_project',
        'project_name',
        'get_subscription',
        # 'is_paid',
        'get_expiring_date',
        'paid_at',
        'grace_period_block',
        # 'note',
    )
    list_filter = (
        input_filter('id', 'invoice #', ['id'], 'exact'),
        input_filter('project_name', 'project name',
                     ['project_subscription__project__name']),
        input_filter('project_owner', 'project owner (name, email)', [
            'project_subscription__project__owner__email',
            'project_subscription__project__owner__first_name',
            'project_subscription__project__owner__last_name',
        ]),
        'project_subscription__subscription',
        ('paid_at', DateRangeFilter),
        ('project_subscription__expiring_date', DateRangeFilter),
        'grace_period_block',
    )
    search_fields = (
        'id',
        'project_subscription__project__owner__email',
        'project_subscription__project__owner__first_name',
        'project_subscription__project__owner__last_name',
        'project_subscription__project__name',
    )
    exclude = ('deleted_at', 'token')

    def get_readonly_fields(self, request, obj=None):
        readonly_fields = {
            'project_subscription',
            'start_date',
            'end_date',
            'requests_limit',
            'subscription_name',
            'project_name',
            'price',
            'is_custom_subscription',
        }
        if obj:
            if timezone.localdate() < obj.project_subscription.expiring_date:
                readonly_fields.add('grace_period_block')
            else:
                readonly_fields.add('paid_at')
            if obj.is_paid or not obj.grace_period_block:
                readonly_fields.add('paid_at')
                readonly_fields.add('grace_period_block')
            if obj.project_subscription.status == ProjectSubscription.PAST:
                readonly_fields.add('paid_at')
        return list(readonly_fields)

    def get_form(self, request, obj=None, change=False, **kwargs):
        form = super().get_form(request, obj=obj, change=change, **kwargs)
        form.base_fields['note'].widget.attrs['rows'] = 2
        return form

    def has_add_permission(self, request):
        return False

    def has_delete_permission(self, request, obj=None):
        return False