def create_game_request(request): """Create a game request from calendar ajax post.""" sender = request.user tz = sender.get_timezone() if request.method == 'POST': users_list = json.loads(request.POST.get('users')) date = datetime.strptime(request.POST.get('date'), '%Y-%m-%dT%H:%M:%S') date = make_aware(date, tz) receivers = User.objects.filter(username__in=users_list) # a game request should last 1h30 end = date + timedelta(hours=1, minutes=30) # create the instance request = GameRequestEvent(start=date, end=end, sender=sender) request.save() request.receivers = receivers request.save() # send a message to all receivers subject = 'Game request from ' + sender.username \ + ' on ' + date.strftime('%d %b') plaintext = loader.get_template( 'fullcalendar/messages/game_request.txt') context = {'sender': sender, 'date': date} message = plaintext.render(context) pm_broadcast(sender=sender, recipients=list(receivers), subject=subject, body=message, skip_notification=True) return HttpResponse('success')
def send_broadcast(request): if request.method == 'POST': form = BroadcastForm(request.POST) # validation checking... if form.is_valid(): sender = request.user subject = request.POST['subject'] text = request.POST['body'] encrypted = request.POST.get('encrypted', False) enc_key = request.POST['enc_key'] raw_b = b"" if enc_key == "": enc_key = "N/A" else: #encrypt #encrypt raw_b = encrypt(enc_key, text) text=str(raw_b) pm_broadcast(sender,"", subject, encrypted, raw=raw_b, body=text) return render(request, 'postman/inbox.html', ) else: return render(request, 'broadcast.html', {'message_form': form}) else: form = BroadcastForm() return render(request, 'broadcast.html', {'message_form': form})
def post_notification(self, user): if self.cleaned_data['notification_type'] == 'public': # create public notification logger.debug("Creating public notification") notifications = get_page_by_slug('notifications') if not notifications: #create Notification page notifications = create_page("Notifications", "cms/notifications.html", settings.LANGUAGE_CODE, reverse_id='notifications', published=True) slug = '' x = 1 while slug == '': if not notifications.children.filter(title_set__slug="notification-{}".format(x)): slug = "notification-{}".format(x) x = x + 1 notification = create_page(self.cleaned_data['title'], 'cms/notification.html', settings.LANGUAGE_CODE, parent=notifications, published=True, slug=slug) placeholder = notification.placeholders.get(slot='content') add_plugin(placeholder, 'TextPlugin', 'en', body=self.cleaned_data['content']) notification.publish(settings.LANGUAGE_CODE) else: logger.debug("Creating private notification") recipients = [] recipients = [User.objects.get(username=x) for x in self.cleaned_data['recipients'] if x != 'schools'] if 'schools' in self.cleaned_data['recipients']: for school_type in self.cleaned_data['schools']: recipients = recipients + get_recipients_for_school_type(school_type) # send private notification if recipients: pm_broadcast(sender=user, recipients=recipients, subject=self.cleaned_data['title'], body=self.cleaned_data['content'])
def form_valid(self,form): superadmins = User.objects.all().filter(is_staff = True) if self.request.method == 'POST': # user = self.request.POST['user'] RequestType = self.request.POST['RequestType'] content_type = ContentType.objects.get_for_id(self.request.POST['content_type']) object_id = self.request.POST['object_id'] RequestStatus = get_display(int(self.request.POST['subscriptionStatus']),SUBSCRIPTION_STATUS) RequestMessage = self.request.POST['RequestMessage'] # get subscription object from submited subscription type subscriptionOption = subscriptionType.objects.get(pk=self.request.POST['subscriptionType']) validity = subscriptionOption.validity eula_version = self.request.POST['EULA_version'] message = 'Request from UID:%(username)s Type:%(requestType)s \ Status: %(status)s SKU: %(Type)s Validity: %(Validity)s' % { 'username' : self.request.user.username, 'requestType' : RequestType, 'status' : RequestStatus, 'Type' : subscriptionOption.description, 'Validity' : validity, } try: eula_accepted = self.request.POST['EULA_accepted'] except: messages.error(self.request, 'ATTENTION: Your subscription request could not be submitted:\ You MUST Accept the End User License Agreement (EULA).') instance = form.save(commit=False) instance.user = self.request.user instance.status = self.request.POST['subscriptionStatus'] instance.object_id = object_id instance.subscriptionType = subscriptionOption instance.subscriptionGracePeriod = validity instance.save() eula_object = eula.objects.get(version = eula_version) for admin in superadmins: pm_broadcast( sender = self.request.user, recipients = admin, subject = RequestMessage, body = message ) messages.success(self.request, 'Subscription request successfully submitted.') try: trial_subscription = subscriptionOption.sku if trial_subscription == u'3000000': messages.success(self.request,'Trial Subscription Accepted.') except: messages.error(self.request,'Didn\'t work: %s' %(type(trial_subscription))) return HttpResponseRedirect(reverse('account_profile', args=(self.request.user.username,))) # Redirect after POST
def notify_create(self, sender, receiver): """ Called once at the creation of the game request. Sends a message to inform the receiver. """ subject = 'Game request from ' + sender.username \ + ' on ' + self.start.strftime('%d %b') plaintext = loader.get_template( 'fullcalendar/messages/game_request.txt') context = {'sender': sender, 'date': self.start} message = plaintext.render(context) pm_broadcast(sender=sender, recipients=receiver, subject=subject, body=message, skip_notification=False)