def make_event(title=None, location=None, description=None, begin_date=None, begin_time=None, end_date=None, end_time=None, organizer=None, attendees=[]): if title is None: raise Exception("make_event: a title parameter is required") if begin_date is None: raise Exception("make_event: a begin_date parameter is required") if begin_time is None: raise Exception("make_event: a begin_time parameter is required") if end_date is None: raise Exception("make_event: an end_date parameter is required") if end_time is None: raise Exception("make_event: an end_time parameter is required") c = Calendar() e = Event() if organizer is not None: e.organizer = Organizer(common_name=organizer.name.full(), email=organizer.email) if len(attendees) > 0: e.attendees = [ Attendee(common_name=attendee.name.full(), email=attendee.email) for attendee in attendees ] e.name = str(title) e.begin = as_datetime( begin_date.replace_time(begin_time), timezone='UTC').format_datetime('yyyy-MM-dd hh:mm:ss') e.end = as_datetime(end_date.replace_time(end_time), timezone='UTC').format_datetime('yyyy-MM-dd hh:mm:ss') if location not in (None, ''): e.location = str(location) if description not in (None, ''): e.description = str(description) c.events.add(e) c.events ics_file = DAFile('ics_file') ics_file.set_random_instance_name() ics_file.initialize(filename="event.ics", mimetype="text/calendar") with open(ics_file.path(), 'w') as f: f.write(str(c)) ics_file.commit() return ics_file
def invite_event(self, request, *args, **kwargs): """ a)Request Event uuid, Room uuid, Email - Array b)Identify user type and send relevant emails with link to Registered and Unregistered user """ serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) event_uuid = request.data['event_uuid'] room_uuid = request.data['room_uuid'] emails = request.data['emails'] event_name = request.data['event_name'] organization_name = request.data['organization_name'] start_date_time = request.data['start_date_time'] end_date_time = request.data['end_date_time'] invitation_link_list = [] c = Calendar() e = Event() e.name = str(event_name) e.begin = str(start_date_time) e.end = str(end_date_time) e.uid = event_uuid e.organizer = Organizer(common_name=str(organization_name), email=DEFAULT_FROM_EMAIL) c.events.add(e) for email in emails: user = CoreUser.objects.filter(email=email).first() # if the user is registered if user: """ for registered users send them a test email "Registered Users! Welcome to a new event at organization". """ email_address = email organization = str(user.organization) reg_location = urljoin(settings.FRONTEND_URL, settings.EVENT_LOGIN_URL_PATH) reg_location = reg_location + '?token={}' token = create_invitation_token_event(email_address, organization, room_uuid, event_uuid) invitation_link = self.request.build_absolute_uri( reg_location.format(token)) invitation_link_list.append(invitation_link) subject = 'Welcome to event {} at {}'.format( event_name, organization) context = { 'organization_name': organization, 'event_link': invitation_link, 'event_uuid': event_uuid, 'room_uuid': room_uuid, 'event_name': event_name } template_name = 'email/coreuser/invite_event.txt' html_template_name = 'email/coreuser/invite_event.html' send_email(email_address, subject, context, template_name, html_template_name, str(c)) # if the user is not registered else: """ for unregistered users send them a test email "Unregistered Users! Welcome to a new event at organization'". """ email_address = email organization = organization_name reg_location = urljoin(settings.FRONTEND_URL, settings.EVENT_REGISTRATION_URL_PATH) reg_location = reg_location + '?token={}' token = create_invitation_token_event(email_address, organization, room_uuid, event_uuid) # build the invitation link invitation_link = self.request.build_absolute_uri( reg_location.format(token)) invitation_link_list.append(invitation_link) subject = 'Welcome to event {} at {}'.format( event_name, organization) context = { 'organization_name': organization, 'event_link': invitation_link, 'event_uuid': event_uuid, 'room_uuid': room_uuid, 'event_name': event_name } template_name = 'email/coreuser/invite_event.txt' html_template_name = 'email/coreuser/invite_event.html' send_email(email_address, subject, context, template_name, html_template_name, str(c)) return Response( { 'detail': 'The invitations were sent successfully.', 'event_link': [invitation_link_list], }, status=status.HTTP_200_OK)