Merge branch 'development' of https://github.com/WDI-Ideas/goodtimes into development

This commit is contained in:
bobbyvish
2024-09-24 18:57:47 +05:30
5 changed files with 83 additions and 5 deletions

View File

@@ -1210,7 +1210,7 @@ class CustomerImportView(LoginRequiredMixin, generic.View):
register_complete=True,
principal_type=principal_type,
business_name=business_name,
phone_no=str(phone_no),
phone_no=phone_no,
address_line1=address,
city=region,
country=country,

View File

@@ -141,4 +141,6 @@ urlpatterns = [
views.EventListView.as_view(),
name="event_filter",
),
path("post-to-social-media/<int:id>/", views.SocialMediaPostView.as_view(), name="social_media_post")
]

View File

@@ -13,7 +13,7 @@ from django.db.models import Q, Count
from taggit.models import Tag
from django.utils.dateparse import parse_date
from goodtimes import services
from goodtimes.services import GoogleMapsservice
from goodtimes.services import FacebookAPI, FacebookPoster, GoogleMapsservice, InstagramAPI, InstagramPoster, TwitterAPI, TwitterPoster
from goodtimes.utils import ApiResponse, CapacityError
from rest_framework.permissions import IsAuthenticated
from rest_framework_simplejwt.authentication import JWTAuthentication
@@ -1125,3 +1125,79 @@ class EventListView(generics.ListAPIView):
serializer = self.get_serializer(queryset, many=True)
return ApiResponse.success(message=constants.SUCCESS, data=serializer.data)
from rest_framework.response import Response
class SocialMediaPostView(APIView):
def get(self, request, *args, **kwargs):
platform = request.query_params.get("platform", "")
event_id = kwargs.get("id")
print(platform, event_id)
errors = []
success_messages = []
try:
event = Event.objects.get(id=event_id)
except Event.DoesNotExist:
errors.append("Event does not exist")
return Response({
'message': "Error in posting to social media",
'errors': errors,
'success_messages': success_messages
}, status=400)
if not event.active:
errors.append("Event is not active")
return Response({
'message': "Error in posting to social media",
'errors': errors,
'success_messages': success_messages
}, status=400)
caption = f"{event.title}\nDuration: {event.start_date} to {event.end_date}\nAddress: {event.venue.address}"
if platform in ['instagram', 'facebook', 'twitter', 'all']:
if platform in ['twitter', 'all']:
image_url = event.image.path
twitter_api = TwitterAPI()
twitter_poster = TwitterPoster(twitter_api)
result = twitter_poster.post_image_with_caption(image_url, caption)
if result['success']:
success_messages.append("Posted to Twitter successfully")
else:
errors.append("Fail to post on Twitter")
image_url = request.build_absolute_uri(event.image.url)
if platform in ['facebook', 'all']:
facebook_api = FacebookAPI()
facebook_poster = FacebookPoster(facebook_api)
result = facebook_poster.post_photo(image_url, caption)
if result["success"]:
success_messages.append("Posted to Facebook successfully")
else:
errors.append("Fail to post on Facebook")
if platform in ['instagram', 'all']:
instagram_api = InstagramAPI()
instagram_poster = InstagramPoster(instagram_api)
result = instagram_poster.post_image_with_caption(image_url, caption)
if result["success"]:
success_messages.append("Posted to Instagram successfully")
else:
errors.append("Fail to post on Instagram")
if not errors:
return Response({'message': 'Post Successful', 'errors': errors, 'success_messages': success_messages})
if errors and success_messages:
return Response({
'message': 'Some posts succeeded while others failed',
'errors': errors,
'success_messages': success_messages
}, status=200)
return Response({
'message': 'Error in posting to social media',
'errors': errors,
'success_messages': success_messages
}, status=400)

View File

@@ -60,7 +60,7 @@
</div>
{% endif %}
{% if field.errors %}
<div id="{{ field.id_for_label }}_Feedback" class="invalid-feedback">
<div id="{{ field.id_for_label }}-error" class="error invalid-feedback">
{% for error in field.errors %}
<p>{{ error }}</p>
{% endfor %}