Esempio n. 1
0
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')
Esempio n. 2
0
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})
Esempio n. 3
0
    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'])
Esempio n. 4
0
    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
Esempio n. 5
0
 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)