Skip to content

Instantly share code, notes, and snippets.

View bencleary's full-sized avatar

Ben Cleary bencleary

View GitHub Profile
from django.views.generic.base import View
from django.http import HttpResponse
import os
from .generate import Generate
class GenerateCSV(Generate):
model = None
download = False
class Csv(GenerateCSVMixin):
custom_headers = [(h.column) for h in Sales._meta.get_fields()]
queryset = Sales.objects.filter(id=27)
custom_queryset = queryset
class Csv(GenerateCSVMixin):
model = Sales
download_file = True
from random import randint
from django.db.models import QuerySet
from django.http import request
from django.views.generic.base import View
from django.http import HttpResponse
import os
from zipfile import ZipFile
from .generate import Generate
from django.db.utils import DEFAULT_DB_ALIAS
from django.contrib.admin.utils import NestedObjects
class ZipcodeStatesAdmin(admin.ModelAdmin):
list_display = ('zipcode', 'count', )
admin.site.register(ZipcodeStats, ZipcodeStatsAdmin)
def csv_file_custom_columns(self, headers: list, data: QuerySet, columns: list=None):
"""
Creates and stores a CSV, with a custom selection of columns
:param headers
:param data
:param columns
:return: list
"""
file_path = os.path.join(os.path.abspath(os.path.dirname("__file__")), "store", "csv", self.file_name)
with open(file_path, 'w') as file:
def generate_csv(self, request, columns: list=None):
"""
View to handle logic to determine if mixin properties are set and perform actions on said properties,
kept in seperate method to keep "method" methods cleaner
:param request:
:return:
"""
if self.custom_queryset:
if columns is None:
csv_props = Generate(request, cls=None).csv_file(headers=self.custom_headers, data=self.custom_queryset)
from django.views.generic.base import View
from django.db.models import QuerySet
from django.http import HttpResponse
from .generate import Generate
from io import BytesIO
from zipfile import ZipFile, ZIP_DEFLATED
from django.db.utils import DEFAULT_DB_ALIAS
from django.contrib.admin.utils import NestedObjects
from random import randint
import os
def csv_file_from_list(self, headers: list, data: list, single_record_indicator=False):
"""
Creates and stores a CSV, rather than use a queryset it uses a list
:param headers
:param data
:param single_record_indicator
:return: list
"""
file_path = os.path.join(os.path.abspath(os.path.dirname("__file__")), "store", "csv", self.file_name)
with open(file_path, 'w') as file:
from django.contrib import admin
from .models import *
class CustomerAdmin(admin.ModelAdmin):
list_display = ['first_name', 'last_name', 'email', 'welcome_email_sent']
list_display_links = ['first_name', 'last_name']
admin.site.register(Customer, CustomerAdmin)
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import *
import pika
import json
@receiver(post_save, sender=Customer)
def send_welcome_email(sender, instance, created, *args, **kwargs):
if created: