#! python3 # noqa: E265 # noqa E265
"""
Application in administration panel.
"""
# #############################################################################
# ########## Libraries #############
# ##################################
from django.contrib import admin
# Django
from django.db import models
from django.forms import Textarea, TextInput
from django.utils.html import format_html
# application
from elgeopaso.jobs.models import (
Contract,
ContractVariations,
GeorezoRSS,
JobPosition,
JobPositionVariations,
Offer,
Place,
PlaceVariations,
Source,
Technology,
TechnologyVariations,
)
# #############################################################################
# ########### Classes ##############
# ##################################
# OFFERS
[docs]class OfferAdmin(admin.ModelAdmin):
# FOREIGN KEY FIELDS
[docs] def show_raw_offer(self, obj):
return format_html(
"<a href='/admin/jobs/georezorss/{rss_id}/change/'>"
" Corriger l'offre {rss_id}</a>",
rss_id=obj.id_rss,
)
show_raw_offer.short_description = "Offre brute"
# FIELDS DISPLAY and FILTERS
readonly_fields = (
"content",
"contract",
"created",
"jobs_positions",
"place",
"pub_date",
"show_raw_offer",
"source",
"technologies",
"title",
"updated",
"yearweek",
)
list_display = ("id_rss", "title", "short_content", "contract", "place", "pub_date")
list_select_related = True
list_filter = (
"raw_offer__to_update",
"pub_date",
"contract",
"technologies",
"place",
)
search_fields = ("title", "content")
date_hierarchy = "pub_date"
ordering = ("-pub_date",)
fieldsets = (
("Contenu", {"fields": ("title", "content")}),
("Date", {"fields": ("pub_date", "yearweek", "created", "updated")}),
(
"Informations extraites",
{"fields": ("contract", "technologies", "place", "jobs_positions")},
),
("Autres", {"fields": ("show_raw_offer", "source")}),
)
# TECHNOLOGIES
[docs]class TechnoVariationsInline(admin.TabularInline):
list_display = ("name", "label")
model = TechnologyVariations
[docs]class TechnologyAdmin(admin.ModelAdmin):
readonly_fields = ("created", "updated")
list_display = (
"name",
"license",
"type_soft",
)
list_filter = ("name", "license", "type_soft")
search_fields = ("name",)
ordering = ("name",)
inlines = (TechnoVariationsInline,)
[docs]class TechnologyVariationsAdmin(admin.ModelAdmin):
list_display = ("label", "name")
list_filter = ("name",)
search_fields = ("label",)
model = TechnologyVariations
# PLACES
[docs]class PlaceVariationsInline(admin.TabularInline):
list_display = ("name", "label")
model = PlaceVariations
[docs]class PlaceAdmin(admin.ModelAdmin):
readonly_fields = ("created", "updated")
list_display = ("name", "code", "scale")
list_filter = ("scale",)
search_fields = ("name", "code")
ordering = ("code",)
inlines = (PlaceVariationsInline,)
[docs]class PlaceVariationsAdmin(admin.ModelAdmin):
list_display = ("label", "name")
list_filter = ("name",)
search_fields = ("label",)
model = PlaceVariations
# JOBS POSITIONS
[docs]class JobPositionVariationsInline(admin.TabularInline):
list_display = ("name", "label")
model = JobPositionVariations
[docs]class JobPositionAdmin(admin.ModelAdmin):
readonly_fields = ("created", "updated")
list_display = ("name", "comment")
list_filter = ("name",)
search_fields = ("name",)
inlines = (JobPositionVariationsInline,)
[docs]class JobPositionVariationsAdmin(admin.ModelAdmin):
list_display = ("label", "name")
list_filter = ("name",)
search_fields = ("label",)
model = JobPosition
# CONTRACT TYPES
[docs]class ContractVariationsInline(admin.TabularInline):
list_display = ("name", "label")
model = ContractVariations
[docs]class ContractsAdmin(admin.ModelAdmin):
# FIELDS DISPLAY and FILTERS
readonly_fields = ("created", "updated")
list_display = ("abbrv", "name", "comment")
list_filter = ("abbrv",)
search_fields = ("name", "abbrv")
ordering = ("abbrv",)
inlines = (ContractVariationsInline,)
[docs]class ContractVariationsAdmin(admin.ModelAdmin):
list_display = ("label", "name")
list_filter = ("name",)
search_fields = ("label",)
model = ContractVariations
# SOURCES
[docs]class SourcesAdmin(admin.ModelAdmin):
# FIELDS DISPLAY and FILTERS
readonly_fields = ("created", "updated")
list_display = ("name", "url", "comment")
list_filter = ("name",)
ordering = ("name",)
# GEOREZO
# #############################################################################
# ########## REGISTER ##############
# # ##################################
admin.site.register(Offer, OfferAdmin)
admin.site.register(Technology, TechnologyAdmin)
admin.site.register(TechnologyVariations, TechnologyVariationsAdmin)
admin.site.register(Place, PlaceAdmin)
admin.site.register(PlaceVariations, PlaceVariationsAdmin)
admin.site.register(JobPosition, JobPositionAdmin)
admin.site.register(JobPositionVariations, JobPositionVariationsAdmin)
admin.site.register(GeorezoRSS, GeorezoRSSAdmin)
admin.site.register(Contract, ContractsAdmin)
admin.site.register(ContractVariations, ContractVariationsAdmin)
admin.site.register(Source, SourcesAdmin)