admin.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. from django.contrib import admin
  2. from newsroom.models import *
  3. from newsroom.forms import *
  4. from django.contrib.contenttypes import generic
  5. # from genericadmin.admin import GenericAdminModelAdmin
  6. from markitup.widgets import AdminMarkItUpWidget
  7. class AuthorAdmin(admin.ModelAdmin):
  8. prepopulated_fields = {"slug": ("name",)}
  9. list_display = (
  10. "type",
  11. "name",
  12. "created",
  13. "user",
  14. )
  15. admin.site.register(Author, AuthorAdmin)
  16. class DatelineAdmin(admin.ModelAdmin):
  17. prepopulated_fields = {"slug": ("title",)}
  18. admin.site.register(Dateline, DatelineAdmin)
  19. class EditorialTypeAdmin(admin.ModelAdmin):
  20. prepopulated_fields = {"slug": ("name",)}
  21. admin.site.register(EditorialType, EditorialTypeAdmin)
  22. class EditorialAdmin(admin.ModelAdmin):
  23. prepopulated_fields = {"slug": ("print_hed",)}
  24. admin.site.register(Editorial, EditorialAdmin)
  25. class ArchiveSectionAdmin(admin.ModelAdmin):
  26. save_on_top = True
  27. prepopulated_fields = {"slug": ("title",)}
  28. filter_horizontal = (
  29. "stories",
  30. "galleries",
  31. "photos",
  32. "pdf_documents",
  33. "editorials",
  34. )
  35. date_hierarchy = "published_on"
  36. list_filter = (
  37. "paper",
  38. "dateline",
  39. )
  40. search_fields = (
  41. "title",
  42. "body",
  43. )
  44. admin.site.register(ArchiveSection, ArchiveSectionAdmin)
  45. admin.site.register(ArchiveStory)
  46. admin.site.register(ArchiveDocument)
  47. admin.site.register(ArchiveMovie)
  48. admin.site.register(ArchiveSlideshow)
  49. class AttachedLinkInline(generic.GenericStackedInline):
  50. extra = 1
  51. model = AttachedLink
  52. class AttachedDocumentInline(generic.GenericStackedInline):
  53. extra = 1
  54. model = AttachedDocument
  55. class AttachedGraphicInline(generic.GenericStackedInline):
  56. extra = 1
  57. model = AttachedGraphic
  58. class AttachedGalleryInline(generic.GenericStackedInline):
  59. extra = 1
  60. model = AttachedGallery
  61. class StoryAdmin(admin.ModelAdmin):
  62. save_on_top = True
  63. raw_id_fields = ["lead_photo"]
  64. actions_selection_counter = True
  65. inlines = [
  66. AttachedGalleryInline,
  67. AttachedGraphicInline,
  68. AttachedLinkInline,
  69. AttachedDocumentInline,
  70. ]
  71. prepopulated_fields = {"slug": ("web_hed",)}
  72. list_display = (
  73. "web_hed",
  74. "dateline",
  75. "created",
  76. "published",
  77. "created_by",
  78. "view_count",
  79. )
  80. date_hierarchy = "published_on"
  81. filter_horizontal = (
  82. "authors",
  83. "towns",
  84. "sites",
  85. "paper_editions",
  86. )
  87. list_filter = (
  88. "dateline",
  89. "published",
  90. "sites",
  91. )
  92. search_fields = (
  93. "web_hed",
  94. "body",
  95. "authors__name",
  96. )
  97. fieldsets = [
  98. (
  99. None,
  100. {
  101. "fields": [
  102. ("web_hed", "print_hed"),
  103. ("slug", "standing_hed"),
  104. ("kicker", "subhed"),
  105. "authors",
  106. "dateline",
  107. "body",
  108. "markup",
  109. "lead_photo",
  110. ]
  111. },
  112. ),
  113. ("Meta", {"fields": ["summary", ("auto_tag", "tags")]}),
  114. (
  115. "Placement",
  116. {
  117. "fields": [
  118. "weight",
  119. "paper_editions",
  120. "status",
  121. ("published", "published_on"),
  122. "towns",
  123. "sites",
  124. ]
  125. },
  126. ),
  127. ]
  128. def formfield_for_dbfield(self, db_field, **kwargs):
  129. if db_field.name == "body":
  130. kwargs["widget"] = AdminMarkItUpWidget()
  131. return super(StoryAdmin, self).formfield_for_dbfield(db_field, **kwargs)
  132. def save_model(self, request, obj, form, change):
  133. if not change:
  134. obj.created_by = request.user
  135. obj.save()
  136. admin.site.register(Story, StoryAdmin)
  137. # class PageAdmin(admin.ModelAdmin):
  138. # save_on_top=True
  139. # search_fields=('ad_notes', 'ad_spec_pos',)
  140. # list_display = ('edition','number','type',)
  141. # list_filter = ('type', 'edition',)
  142. # admin.site.register(Page, PageAdmin)
  143. admin.site.register(Link)
  144. admin.site.register(Paper)
  145. class WebEditionAdmin(admin.ModelAdmin):
  146. list_display = ('paper', 'published_on', 'published', 'site')
  147. list_filter = ('paper', 'published', 'site')
  148. list_per_page = 12
  149. raw_id_fields = ["featured_story", "featured_photo"]
  150. filter_horizontal = (
  151. "stories",
  152. "photos",
  153. "galleries",
  154. "editorials",
  155. "remembrances",
  156. "death_announcements",
  157. "memorial_services",
  158. "inmemoriams",
  159. )
  160. fieldsets = [
  161. (None, {"fields": ["paper", ("published", "published_on"), "site"]}),
  162. (
  163. "Editorial",
  164. {
  165. "fields": [
  166. "featured_story",
  167. "featured_photo",
  168. "stories",
  169. "editorials",
  170. "pdfdocuments",
  171. ]
  172. },
  173. ),
  174. (
  175. "Multimedia",
  176. {
  177. "classes": ["collapse"],
  178. "fields": ["photos", "galleries"],
  179. },
  180. ),
  181. (
  182. "Obits",
  183. {
  184. "classes": ["collapse"],
  185. "fields": [
  186. "remembrances",
  187. "death_announcements",
  188. "memorial_services",
  189. "inmemoriams",
  190. ],
  191. },
  192. ),
  193. ]
  194. admin.site.register(WebEdition, WebEditionAdmin)
  195. admin.site.register(PaperEdition)
  196. admin.site.register(AuthorType)
  197. admin.site.register(StandingHed)
  198. # admin.site.register(PageType)