Skip to content
Snippets Groups Projects

Export bdd

Merged Hamza Touizrat requested to merge export_bdd into dev

Created by: chiahetcho

Add excel exportation option for Projets --> Participations and Utilisateurs --> Utilisateurs

Merge request reports

Approval is optional

Merged by avatar (Jul 17, 2025 3:12am UTC)

Merge details

  • Changes merged into dev with 1b60258c.
  • Did not delete the source branch.

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
128 actions = ["export_as_csv"]
129
130 def export_as_csv(self, request, queryset):
131 meta = self.model._meta
132 field_names = [field.name for field in meta.fields]
133
134 response = HttpResponse(content_type='text/csv')
135 response['Content-Disposition'] = 'attachment; filename={}.csv'.format(
136 meta)
137 writer = csv.writer(response)
138 writer.writerow(field_names)
139 for obj in queryset:
140 row = writer.writerow([getattr(obj, field)
141 for field in field_names])
142 return response
143 export_as_csv.short_description = "Exporter au format CSV"
  • Created by: florimondmanca

    Cette fonction n'a pas l'air d'être différente de celle pour UserAdmin. Une possibilité ce serait de créer une classe mixin, de ce genre :

    class CSVExportMixin:
    
        model = None
        
        def export_as_csv(self, request, queryset):
            meta = self.model._meta
            # ... mettre le contenu de l'action ici ...
    
        def get_actions(self, request):
            # on récupère les actions par défaut
            # (une liste vide si `actions` n'est pas défini)
            actions = super().get_actions(request)
            # on ajoute notre action d'export
            actions.append('export_as_csv')
            return actions

    (Voir get_actions().)

    Cette classe pourrait être dans core/mixins.py par exemple (vu que c'est réutilisable).

    Et on l'utiliserait comme ça:

    class ParticipationAdmin(CSVExportMixin, ModelAdmin):
        # ... le reste de la classe, sans ce qui est déjà défini par CSVExportMixin
  • Merged by: AuStrasser at 2018-12-09 16:00:03 UTC

  • Created by: florimondmanca

    @AuStrasser Quid des remarques que j'avais faites ? Enfin bon tant pis du coup x)

  • Please register or sign in to reply
    Loading