Spaces:
Runtime error
Runtime error
from datetime import timedelta | |
import operator | |
import functools | |
import collections | |
from collections import OrderedDict | |
from datetime import datetime | |
from rest_framework.views import APIView | |
from rest_framework.response import Response | |
from rest_framework.permissions import AllowAny | |
from rest_framework.generics import CreateAPIView | |
from rest_framework import status | |
from rest_framework.authtoken.models import Token | |
from django.core.exceptions import ObjectDoesNotExist | |
from django.contrib.auth import get_user_model | |
from django.utils import timezone | |
from . import models, serializers | |
from . import RemoveBg, PaperLayout | |
import json | |
from PIL import Image | |
import base64 | |
def write_file_from_object_file(object_file, file_path): | |
file_data = base64.b64decode(object_file) | |
with open(file_path, 'wb') as file: | |
file.write(file_data) | |
class CreateUserApiView(CreateAPIView): | |
permission_classes = [AllowAny] | |
serializer_class = serializers.CreateUserSerializer | |
def post(self, request): | |
print('posteed') | |
print(request.data) | |
serializers = self.get_serializer(data=request.data) | |
serializers.is_valid(raise_exception=True) | |
self.perform_create(serializers) | |
headers = self.get_success_headers(serializers.data) | |
# Create a token than will be used for future auth | |
token = Token.objects.create(user=serializers.instance) | |
token_data = {'token': token.key} | |
return Response( | |
{**serializers.data, **token_data}, | |
status=status.HTTP_201_CREATED, | |
headers=headers) | |
class SendImage(APIView): | |
def get(self,request): | |
return Response(status=status.HTTP_200_OK) | |
def post(self,request): | |
print(request.data) | |
image = request.data['image'] | |
qty = request.data['qty'] | |
size = request.data['img_size'] # img size | |
bw = request.data['bw'] # img is black or white | |
paper = request.data['paper_size'] # paper size to print out | |
bgcolor = request.data['bg_color'] | |
try: | |
PPD = models.PassportDetail.objects.get(is_done=False) | |
except ObjectDoesNotExist: | |
#the passport detail dnexist create one | |
PPD = models.PassportDetail.objects.create(size=size,paper=paper,bgcolor=bgcolor) | |
if bw == "true": | |
PPD.bw = True | |
PPD.save() | |
models.Images.objects.create(image=image,img_qty=qty,ppd=PPD) | |
# models.Images.objects.create(image=image,img_qty=qty) | |
return Response(PPD.id) | |
class GenerateImage(APIView): | |
def get(self,request): | |
PDDID = request.GET.get('pdid') | |
PD = models.PassportDetail.objects.get(id=PDDID) | |
PD.is_done = True | |
PD.save() | |
images_list = models.Images.objects.filter(ppd=PD) | |
images = [] | |
for img in images_list: | |
print(img) | |
images.append((img.image.url[1:],img.img_qty)) | |
paper_size = tuple(int(x) for x in PD.paper.split(",")) | |
img_size = tuple(float(x) for x in PD.size.split(",")) | |
bg_color = tuple(int(x) for x in PD.bgcolor.split(",")) | |
gap = 40; # gap between images; | |
img_max_width = img_size[0] * 300 | |
img_max_height = img_size[1] * 300 | |
aspect_ratio = img_max_width / img_max_height | |
output_di = 'img/' | |
print("Start Removing",PD.bw) | |
RemoveBg.RemoveBackground(images,aspect_ratio,bg_color,output_di,PD.bw).remove() | |
PaperLayout.GeneratePhoto(paper_size,gap,images,img_max_width,img_max_height,raw_export=output_di).export() | |
print("end Removing") | |
return Response(status=status.HTTP_200_OK) | |
# const token = '5499662958:AAEAoWy0khLJMf238ZwvvEoBV1FKfaVF6S0'; | |
# const chatid = '-618629809'; | |
# | |
# 'https://api.telegram.org/bot' + | |
# token + | |
# '/sendDocument?chat_id=' + | |
# chatid; | |
# class SalesTwoDigits(APIView): | |
# # permission_classes = [AllowAny]P | |
# def get(self, request): | |
# user = get_user_model().objects.get(username=request.user,is_plan=True, | |
# is_salesDigits=True) | |
# try: | |
# G = models.TwoDigitsGroup.objects.get(user=user, is_done=False) | |
# print('Group M Exists') | |
# except ObjectDoesNotExist: | |
# print('Group M Not Exits') | |
# G = models.TwoDigitsGroup.objects.create(user=user) | |
# print('Group M Created') | |
# data = models.SalesTwoDigits.objects.filter(user=user,group=G) | |
# ser = serializers.SalesTwoDigitSerializer(data,many=True) | |
# return Response(ser.data) | |
# def post(self, request): | |
# name = request.data['customername'] | |
# phoneno = request.data['phoneno'] | |
# digits = request.data['digits'] | |
# totalamount = request.data['totalamount'] | |
# print(request.user) | |
# user = get_user_model().objects.get(username=request.user,is_plan=True, | |
# is_salesDigits=True) | |
# try: | |
# G = models.TwoDigitsGroup.objects.get(user=user, is_done=False) | |
# print('Group M Exists') | |
# except ObjectDoesNotExist: | |
# print('Group M Not Exits') | |
# G = models.TwoDigitsGroup.objects.create(user=user) | |
# print('Group M Created') | |
# # print(str(name) +'\n') | |
# # print(str(phoneno) + '\n') | |
# # print(digits) | |
# # print(int(totalamount)) | |
# Sales = models.SalesTwoDigits.objects.create(customername=name,phoneno=phoneno,totalprice=totalamount,user=user,group=G) | |
# # Sales1 = models.SalesTwoDigits.objects.create(customername=name,phoneno=phoneno,totalprice=totalamount,user=user,group=G1) | |
# print('Sales Objects Created') | |
# ds = json.loads(digits) | |
# # print(p) | |
# for d in ds: | |
# print(d) | |
# d1 = models.TwoDigits.objects.create(number=d['digits'],amount=d['amount'],user=user,sales=Sales) | |
# print('D1 Create') | |
# print('Finished All') | |
# # product = models.Product.objects.get(id=b['name'], user=user) | |
# # product.qty = int(product.qty) - int(b['qty']) | |
# # product.save() | |
# # a = models.SoldProduct.objects.create( | |
# # name=product, price=b['price'], qty=b['qty'], sales=S) | |
# # print(a) | |
# # S.save() | |
# return Response(status=status.HTTP_201_CREATED) | |