# ============================== file 'xlsx_group_parser.py' ==============================
from openpyxl import load_workbook
from posts.models import Group
def XLSXGroupParser(file):
wb = load_workbook(file)
ws = wb.active
rows = ws.values
headlines = next(rows)
index_of_headline = {'title': headlines.index('title'),
'slug': headlines.index('slug'),
'description': headlines.index('slug')}
groups = []
for row in rows:
group = Group(title=row[index_of_headline['title']],
slug=row[index_of_headline['slug']],
description=row[index_of_headline['description']])
if (not group.title or group.title.isspace() or
not group.slug or group.slug.isspace()):
continue
groups.append(group)
return groups
# ============================== file 'xlsx_group_import.py' ==============================
from django.core.management.base import BaseCommand
from posts.parsers.xlsx_group_parser import XLSXGroupParser
class Command(BaseCommand):
help = 'Import groups from xlsx file'
def add_arguments(self, parser):
parser.add_argument('file', type=str)
def handle(self, *args, **options):
file_path = options['file']
groups = XLSXGroupParser(file_path)
for group in groups:
group.save()
self.stdout.write(f'Группа {group.title} сохранена')