Esempio n. 1
0
class CourseRunGradeAuditAdmin(TimestampedModelAdmin):
    """Admin for CourseRunGradeAudit"""

    model = CourseRunGradeAudit
    include_created_on_in_list = True
    list_display = (
        "id",
        "course_run_grade_id",
        "get_user_email",
        "get_run_courseware_id",
    )
    readonly_fields = get_field_names(CourseRunGradeAudit)

    def get_user_email(self, obj):
        """Returns the related User email"""
        return obj.course_run_grade.user.email

    get_user_email.short_description = "User Email"
    get_user_email.admin_order_field = "course_run_grade__user__email"

    def get_run_courseware_id(self, obj):
        """Returns the related CourseRun courseware_id"""
        return obj.course_run_grade.course_run.courseware_id

    get_run_courseware_id.short_description = "Course Run"
    get_run_courseware_id.admin_order_field = (
        "course_run_grade__course_run__courseware_id")

    def has_add_permission(self, request):
        return False

    def has_delete_permission(self, request, obj=None):
        return False
Esempio n. 2
0
class OrderAdmin(AuditableModelAdmin, TimestampedModelAdmin):
    """Admin for Order"""

    model = Order
    include_created_on_in_list = True
    list_filter = ("status", )
    list_display = ("id", "purchaser", "status", "created_on")
    search_fields = ("purchaser__username", "purchaser__email")

    readonly_fields = [
        name for name in get_field_names(Order) if name != "status"
    ]

    def has_add_permission(self, request):
        return False

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

    def save_model(self, request, obj, form, change):
        """
        Saves object and logs change to object
        """
        super().save_model(request, obj, form, change)
        sync_hubspot_deal(obj)
Esempio n. 3
0
class ProgramEnrollmentAuditAdmin(TimestampedModelAdmin):
    """Admin for ProgramEnrollmentAudit"""

    model = ProgramEnrollmentAudit
    include_created_on_in_list = True
    list_display = ("id", "enrollment_id", "get_program_readable_id",
                    "get_user")
    readonly_fields = get_field_names(ProgramEnrollmentAudit)

    def get_program_readable_id(self, obj):
        """Returns the related Program readable_id"""
        return obj.enrollment.program.readable_id

    get_program_readable_id.short_description = "Program"
    get_program_readable_id.admin_order_field = "enrollment__program__readable_id"

    def get_user(self, obj):
        """Returns the related User's email"""
        return obj.enrollment.user.email

    get_user.short_description = "User"
    get_user.admin_order_field = "enrollment__user__email"

    def has_add_permission(self, request):
        return False

    def has_delete_permission(self, request, obj=None):
        return False
Esempio n. 4
0
class LineRunSelectionAdmin(admin.ModelAdmin):
    """Admin for LineRunSelection"""

    model = LineRunSelection
    list_display = ("id", "line", "get_order", "get_run_courseware_id")
    readonly_fields = get_field_names(LineRunSelection)

    def has_add_permission(self, request):
        return False

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

    def get_order(self, obj):
        """Returns the related Order"""
        return obj.line.order

    get_order.short_description = "Order"
    get_order.admin_order_field = "line__order"

    def get_run_courseware_id(self, obj):
        """Returns the courseware_id of the associated CourseRun"""
        return obj.run.courseware_id

    get_run_courseware_id.short_description = "Run Courseware Id"
    get_run_courseware_id.admin_order_field = "run__courseware_id"
Esempio n. 5
0
class ProductVersionInline(admin.StackedInline):
    """Inline form for ProductVersion"""

    model = ProductVersion
    readonly_fields = get_field_names(ProductVersion)
    extra = 0
    show_change_link = True
    can_delete = False
    ordering = ("-created_on", )
    min_num = 0
Esempio n. 6
0
class CouponPaymentVersionInline(admin.StackedInline):
    """Admin Inline for CouponPaymentVersion objects"""

    model = CouponPaymentVersion
    readonly_fields = get_field_names(CouponPaymentVersion)
    extra = 0
    show_change_link = True
    can_delete = False
    ordering = ("-created_on", )
    min_num = 0
Esempio n. 7
0
def test_get_field_names():
    """
    Assert that get_field_names does not include related fields
    """
    assert set(get_field_names(Order)) == {
        "purchaser",
        "status",
        "created_on",
        "updated_on",
        "total_price_paid",
    }
Esempio n. 8
0
class ExportsInquiryLogAdmin(admin.ModelAdmin):
    """Admin for ExportsInquiryLog"""

    model = ExportsInquiryLog
    search_fields = [
        "user__email", "computed_result", "info_code", "reason_code"
    ]
    list_filter = [
        "computed_result",
        "info_code",
        "reason_code",
        "user__legal_address__country",
    ]
    list_display = [
        "user", "computed_result", "info_code", "reason_code", "country"
    ]
    list_select_related = ["user__legal_address"]
    readonly_fields = [] if settings.DEBUG else get_field_names(
        ExportsInquiryLog)
    actions = ["manually_approve_inquiry"]

    def country(self, instance):
        """Get country name from ISO Alpha-2 country code"""
        country = pycountry.countries.get(
            alpha_2=instance.user.legal_address.country)
        return country.name if country else "N/A"

    def manually_approve_inquiry(self, request, queryset):
        """Admin action to manually approve export compliance inquiry records"""
        eligible_objects = queryset.exclude(
            computed_result__in=[RESULT_MANUALLY_APPROVED, RESULT_SUCCESS])
        for obj in eligible_objects:
            ensure_active_user(obj.user)
        eligible_objects.update(computed_result=RESULT_MANUALLY_APPROVED)

    manually_approve_inquiry.short_description = "Manually approve selected records"

    def has_add_permission(self, request):
        # We want to allow this while debugging
        return settings.DEBUG

    def has_delete_permission(self, request, obj=None):
        # We want to allow this while debugging
        return settings.DEBUG
Esempio n. 9
0
class OrderAuditAdmin(TimestampedModelAdmin):
    """Admin for OrderAudit"""

    model = OrderAudit
    include_created_on_in_list = True
    list_display = ("id", "order_id", "get_order_user")
    readonly_fields = get_field_names(OrderAudit)

    def get_order_user(self, obj):
        """Returns the related Order's user email"""
        return obj.order.purchaser.email

    get_order_user.short_description = "User"
    get_order_user.admin_order_field = "order__purchaser__email"

    def has_add_permission(self, request):
        return False

    def has_delete_permission(self, request, obj=None):
        return False
Esempio n. 10
0
class ProgramRunLineAdmin(admin.ModelAdmin):
    """Admin for ProgramRunLine"""

    model = ProgramRunLine
    list_display = ("id", "line", "get_order", "program_run")

    readonly_fields = get_field_names(ProgramRunLine)

    def has_add_permission(self, request):
        return False

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

    def get_order(self, obj):
        """Returns the related Order"""
        return obj.line.order

    get_order.short_description = "Order"
    get_order.admin_order_field = "line__order"
Esempio n. 11
0
class LineAdmin(admin.ModelAdmin):
    """Admin for Line"""

    model = Line
    list_display = ("id", "order", "get_product_version_text_id", "quantity")
    search_fields = ("order__id", "product_version__text_id")

    readonly_fields = get_field_names(Line)

    def has_add_permission(self, request):
        return False

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

    def get_product_version_text_id(self, obj):
        """Returns the related ProductVersion text_id"""
        return obj.product_version.text_id

    get_product_version_text_id.short_description = "Product Object Text Id"
    get_product_version_text_id.admin_order_field = "product_version__text_id"
Esempio n. 12
0
def filter_for_model_fields(model_cls, dict_to_filter):
    """Filters a dict to return only the keys that match fields in a model class"""
    model_field_names = get_field_names(model_cls)
    return filter_dict_by_key_set(dict_to_filter, model_field_names)