[docs]classCommand(BaseCommand):help="Imports photos from yearbook data export"defadd_arguments(self,parser):parser.add_argument("directory")parser.add_argument("--staff",action="store_true",dest="staff",default=False,help='Import staff photos in the format "Last-First.jpg"')defhandle(self,*args,**options):PHOTO_ROOT_DIRECTORY=options["directory"]IS_STAFF=options["staff"]PHOTO_ROOT_PATH=Path(PHOTO_ROOT_DIRECTORY)sys.stdout.write(f"Preparing to import photos from directory {PHOTO_ROOT_DIRECTORY}\n")messages=[]all_photos=list(PHOTO_ROOT_PATH.glob("*.jpg"))forpathinall_photos:user=NoneifIS_STAFF:if"-"inpath.stem:last_name,first_name=path.stem.rsplit("-",1)user=get_user_model().objects.filter(first_name=first_name,last_name=last_name,user_type__in=["teacher","counselor"]).first()else:try:int(path.stem)user=get_user_model().objects.user_with_student_id(path.stem)exceptValueError:passifuserisNone:print(f"IGNORING {path.name}")continuegrade_number=user.grade.numberimg=Image.open(path)img_arr=io.BytesIO()img.save(img_arr,format="JPEG")value=img_arr.getvalue()message=f"Creating photo for {user} grade {grade_number}"print(message)messages.append(message)Photo.objects.create(user=user,grade_number=grade_number,_binary=value)withopen("photos_created.txt","w",encoding="utf-8")asf:f.write("\n".join(messages))sys.stdout.write("Completed photo import.\n")