def _parse_data(self, data): if self._validate_filetype(data.get('formato')): if data.get('tamanho') in [None, ""]: msg = u"Defina o tamanho do arquivo (em bytes)." raise serializers.ValidationError(msg) if data.get('nome_arquivo') in [None, ""]: msg = u"Defina o nome do arquivo." raise serializers.ValidationError(msg) if data.get('formato') in [None, ""]: msg = u"Defina o formato válido, no padrão MIME." raise serializers.ValidationError(msg) if data.get('base64') in [None, ""]: msg = u"Envie o arquivo no formato base64." raise serializers.ValidationError(msg) # Validando o formato base64 base64_pattern = r'(?:[A-Za-z0-9+/]{4}){2,}(?:[A-Za-z0-9+/]{2}' \ '[AEIMQUYcgkosw048]=|[A-Za-z0-9+/][AQgw]==)' if re.search(base64_pattern, data.get('base64')) is None: msg = u"Envie um arquivo com formato base64 válido." raise serializers.ValidationError(msg) if isinstance(data, dict): id = uuid.uuid4() content, ext = data.get('formato').split("/") data = ContentFile(base64.b64decode(data.get('base64')), name=id.urn[9:] + '.' + ext) return data else: msg = u"Arquivo no formato {0} inválido.".format(data.get('formato')) raise serializers.ValidationError(msg)
def _parse_data(self, data): if self._validate_filetype(data.get('formato')): if data.get('tamanho') in [None, ""]: msg = u"Defina o tamanho do arquivo (em bytes)." raise serializers.ValidationError(msg) if data.get('nome_arquivo') in [None, ""]: msg = u"Defina o nome do arquivo." raise serializers.ValidationError(msg) if data.get('formato') in [None, ""]: msg = u"Defina o formato válido, no padrão MIME." raise serializers.ValidationError(msg) if data.get('base64') in [None, ""]: msg = u"Envie o arquivo no formato base64." raise serializers.ValidationError(msg) # Validando o formato base64 base64_pattern = r'(?:[A-Za-z0-9+/]{4}){2,}(?:[A-Za-z0-9+/]{2}' \ '[AEIMQUYcgkosw048]=|[A-Za-z0-9+/][AQgw]==)' if re.search(base64_pattern, data.get('base64')) is None: msg = u"Envie um arquivo com formato base64 válido." raise serializers.ValidationError(msg) if isinstance(data, dict): id = uuid.uuid4() content, ext = data.get('formato').split("/") data = ContentFile(base64.b64decode(data.get('base64')), name=id.urn[9:] + '.' + ext) return data else: msg = u"Arquivo no formato {0} inválido.".format( data.get('formato')) raise serializers.ValidationError(msg)
def validate(self, data): business_id = data.get("business_id", "") category_name = data.get("category_name", "") user_id = data.get("user_id", "") post_id = data.get("post_id", "") force_to_vote = data.get("force_to_vote", "") comment = data.get("comment", "") if force_to_vote == "": # Check vote forcefully or not. force_to_vote = False if User.objects.filter( id=user_id).exists(): # Check user exist or not. user_instance = get_object_or_404(User, id=user_id) else: mes = "User not exists." # Message if user not exist. raise exceptions.APIException( mes) # Call message if user not exist. if Business_Details.objects.filter(business_id=business_id).exists( ): # Check business exist or not. business_instance = get_object_or_404(Business_Details, business_id=business_id) else: mes = "Business not exists." # Message if business not exist. raise exceptions.APIException( mes) # Call message if business not exist. category_name = category_name.lower( ) # Convert category name into lower case. if Category.objects.filter( name=category_name).exists(): # Check Category exist or not. category_instance = get_object_or_404(Category, name=category_name) else: category_instance = Category( name=category_name, created_by=user_instance) # If category not exist. category_instance.save() # Save category into table. if not force_to_vote: # If vote is not forcefully. post_data = Post_Activity.objects.filter( User_id=user_instance).filter( Vote=True) # Get user voting list. for get_data in post_data: if category_instance == get_data.Post_id.Category_id: # Check user already voted on same category. mes = "Already voted on another post." # Message if already voted. raise exceptions.APIException( mes) # Call message if already voted. if post_id: # Check post id given or not. if Business_Posts.objects.filter( id=post_id).exists(): # check business post available. business_post_instance = get_object_or_404( Business_Posts, id=post_id) # get post instance. Post_Set = Business_Posts( Business_id=business_post_instance.Business_id, Category_id=business_post_instance.Category_id, comment=business_post_instance.comment, image=business_post_instance.image, owner_id=str(user_instance.id), created_by=user_instance, update_by=user_instance, ) # Insert value in business post table according to filed name. Post_Set.save() # Save post data into table. Post_Activity_Set = Post_Activity( Post_id=business_post_instance, User_id=user_instance, Vote=True, created_by=user_instance, update_by=user_instance, ) # Insert value in post activity table according to filed name. Post_Activity_Set.save() # Save post activity into table. Notification_Set = Notification( message=user_instance.full_name + " vote your post.", user_name=user_instance.full_name, user=user_instance, post=business_post_instance, owner=business_post_instance.created_by, ) Notification_Set.save() count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Vote=True).count() Business_Details.objects.filter( business_id=business_id).update(total_vote=count) cat_count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Post_id__Category_id=category_instance).filter( Vote=True).count() Business_Posts.objects.filter( Business_id=business_instance).filter( Category_id=category_instance).update( total_vote=cat_count) else: # If post id not given. image = data.get("image", "") Post_Set = Business_Posts( Business_id=business_instance, Category_id=category_instance, comment=comment, owner_id=str(user_instance.id), created_by=user_instance, update_by=user_instance, ) # Insert value in business post table according to filed name. Post_Set.save() # Save post data into table. if image: # If post image avilable. # image upload function data = ContentFile(base64.b64decode(image)) get_image = Image.open(data) filetype = get_image.format ext = filetype.lower() today_date = date.today() set_file_name = str(business_id) + str( today_date.day) + "_" + str( today_date.month) + "_" + str(today_date.year) file_name = set_file_name + "." + ext data = ContentFile(base64.b64decode(image), name=file_name) Post_Set.image = data Post_Set.save() # --------------------------------------- photos_info = Business_Photos( url=settings.IMAGE_BASE_URL + Post_Set.image.url, Business_id=business_instance) photos_info.save() # -------------------------------------------- Post_Activity_Set = Post_Activity( Post_id=Post_Set, User_id=user_instance, Vote=True, created_by=user_instance, update_by=user_instance, ) # Insert value in post activity table according to filed name. Post_Activity_Set.save() # Save post activity into table. # Notification_Set = Notification( # message= user_instance.full_name + " vote your post.", # user_name=user_instance.full_name, # user=user_instance, # post=Post_Set, # owner=Post_Set.created_by, # ) # Notification_Set.save() count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Vote=True).count() Business_Details.objects.filter( business_id=business_id).update(total_vote=count) cat_count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Post_id__Category_id=category_instance).filter( Vote=True).count() Business_Posts.objects.filter( Business_id=business_instance).filter( Category_id=category_instance).update( total_vote=cat_count) else: # If vote is forcefully. post_data = Post_Activity.objects.filter( User_id=user_instance).filter( Vote=True) # Get user voting list. for get_data in post_data: if category_instance == get_data.Post_id.Category_id: # Check user already voted on same category. Post_Activity.objects.filter(id=get_data.id).update( Vote=False) # Remove vote from post. post_activity_instance = get_object_or_404(Post_Activity, id=get_data.id) Notification_Set = Notification( message=user_instance.full_name + " remove vote from your post.", user_name=user_instance.full_name, user=user_instance, post=post_activity_instance.Post_id, owner=post_activity_instance.Post_id.created_by, ) Notification_Set.save() Remove_Set = Remove_Activity( Post_id=post_activity_instance.Post_id, User_id=post_activity_instance.Post_id.created_by, type="Vote", ) Remove_Set.save() count = Post_Activity.objects.filter( Post_id__Business_id=post_activity_instance.Post_id. Business_id).filter(Vote=True).count() Business_Details.objects.filter( business_id=post_activity_instance.Post_id.Business_id. business_id).update(total_vote=count) cat_count = Post_Activity.objects.filter( Post_id__Business_id=post_activity_instance.Post_id. Business_id).filter( Post_id__Category_id=post_activity_instance. Post_id.Category_id).filter(Vote=True).count() Business_Posts.objects.filter( Business_id=post_activity_instance.Post_id.Business_id ).filter(Category_id=post_activity_instance.Post_id. Category_id).update(total_vote=cat_count) if post_id: # Check post id given or not. if Business_Posts.objects.filter( id=post_id).exists(): # check business post available. business_post_instance = get_object_or_404( Business_Posts, id=post_id) # get post instance. Post_Set = Business_Posts( Business_id=business_post_instance.Business_id, Category_id=business_post_instance.Category_id, comment=business_post_instance.comment, image=business_post_instance.image, owner_id=str(user_instance.id), created_by=user_instance, update_by=user_instance, ) # Insert value in business post table according to filed name. Post_Set.save() # Save post data into table. Post_Activity_Set = Post_Activity( Post_id=business_post_instance, User_id=user_instance, Vote=True, created_by=user_instance, update_by=user_instance, ) # Insert value in post activity table according to filed name. Post_Activity_Set.save( ) # Save post activity data into table. Notification_Set = Notification( message=user_instance.full_name + " vote your post.", user_name=user_instance.full_name, user=user_instance, post=business_post_instance, owner=business_post_instance.created_by, ) Notification_Set.save() count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Vote=True).count() Business_Details.objects.filter( business_id=business_id).update(total_vote=count) cat_count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Post_id__Category_id=category_instance).filter( Vote=True).count() Business_Posts.objects.filter( Business_id=business_instance).filter( Category_id=category_instance).update( total_vote=cat_count) else: # If post id not given. image = data.get("image", "") Post_Set = Business_Posts( Business_id=business_instance, Category_id=category_instance, comment=comment, owner_id=str(user_instance.id), created_by=user_instance, update_by=user_instance, ) # Insert value in business post table according to filed name. Post_Set.save() # Save post data into table. if image: # If post image avilable. # image upload function data = ContentFile(base64.b64decode(image)) get_image = Image.open(data) filetype = get_image.format ext = filetype.lower() today_date = date.today() set_file_name = str(business_id) + str( today_date.day) + "_" + str( today_date.month) + "_" + str(today_date.year) file_name = set_file_name + "." + ext data = ContentFile(base64.b64decode(image), name=file_name) Post_Set.image = data Post_Set.save() # --------------------------------------- photos_info = Business_Photos( url=settings.IMAGE_BASE_URL + Post_Set.image.url, Business_id=business_instance) photos_info.save() # -------------------------------------------- Post_Activity_Set = Post_Activity( Post_id=Post_Set, User_id=user_instance, Vote=True, created_by=user_instance, update_by=user_instance, ) # Insert value in post activity table according to filed name. Post_Activity_Set.save() # Save post activity into table. # Notification_Set = Notification( # message=user_instance.full_name + " vote your post.", # user_name=user_instance.full_name, # user=user_instance, # post=Post_Set, # owner=Post_Set.created_by, # ) # Notification_Set.save() # --------------------------------- count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Vote=True).count() # business_instance.update(total_vote=count) Business_Details.objects.filter( business_id=business_id).update(total_vote=count) cat_count = Post_Activity.objects.filter( Post_id__Business_id=business_instance).filter( Post_id__Category_id=category_instance).filter( Vote=True).count() Business_Posts.objects.filter( Business_id=business_instance).filter( Category_id=category_instance).update( total_vote=cat_count) return user_id