예제 #1
0
    def test_permissions(self):
        """
        Make sure the basic permission things are as-expected.
        """
        c = Client()

        # a role reminder: users with the role, but not others
        r = Reminder(
            reminder_type='ROLE',
            role='ADVS',
            unit=Unit.objects.get(slug='cmpt'),
            date_type='SEM',
            week=4,
            weekday=0,
            person=Person.objects.get(userid='ggbaker'),
            title='Advisor reminder',
            content='foo',
        )
        r.save()

        url = reverse('reminders:view', kwargs={'reminder_slug': r.slug})
        c.login_user('ggbaker')
        resp = c.get(url)
        self.assertEqual(resp.status_code, 404)

        c.login_user('dzhao')
        resp = c.get(url)
        self.assertEqual(resp.status_code, 200)

        # a personal reminder: that person only
        r = Reminder(reminder_type='PERS',
                     date_type='YEAR',
                     month='5',
                     day=31,
                     person=Person.objects.get(userid='ggbaker'),
                     title='Personal reminder',
                     content='### Heading\n\nfoo *bar*',
                     config={'markup': 'markdown'})
        r.save()

        url = reverse('reminders:view', kwargs={'reminder_slug': r.slug})
        c.login_user('ggbaker')
        resp = c.get(url)
        self.assertEqual(resp.status_code, 200)

        c.login_user('dzhao')
        resp = c.get(url)
        self.assertEqual(resp.status_code, 404)

        # test the HTML generation while we're here
        self.assertEqual(r.html_content().replace('\n', ''),
                         '<h3>Heading</h3><p>foo <em>bar</em></p>')
예제 #2
0
def create_reminders():
    from reminders.models import Reminder
    person = find_person('ggbaker')
    offering = CourseOffering.objects.get(slug=TEST_COURSE_SLUG)
    r1 = Reminder(title='New Year',
                  reminder_type='PERS',
                  person=person,
                  content="Happy new year! It's Jan 1.",
                  date_type='YEAR',
                  month=1,
                  day=1)
    r1.save()

    r2 = Reminder(
        title='Start of semester',
        reminder_type='ROLE',
        role='SYSA',
        unit=Unit.objects.get(slug='univ'),
        content=
        "The new semester started a while ago, in case you weren't paying attention.",
        date_type='SEM',
        week=2,
        weekday=1,
        person=person)
    r2.save()

    r3 = Reminder(
        title='Create an exam',
        reminder_type='INST',
        course=offering.course,
        content=
        "It's probably *almost* time for the final exam.\r\n\r\nCreate it.",
        date_type='SEM',
        week=12,
        weekday=4,
        person=person)
    r3.markup = 'markdown'
    r3.save()

    r4 = Reminder(title='Deleted reminder',
                  reminder_type='PERS',
                  person=person,
                  content="This has been deleted and shouldn't be visible.",
                  date_type='SEM',
                  week=5,
                  weekday=2,
                  status='D')
    r4.save()

    return Reminder.all_objects.all()
 def create(validated_data):
     reminder = Reminder()
     reminder.customer = validated_data['customer']
     reminder.message = validated_data.get('message')
     reminder.scheduled_datetime = validated_data.get('scheduled_datetime')
     reminder.save()
     if validated_data.get('phone_number'):
         customer = validated_data['customer']
         customer.phone = validated_data.get('phone_number', customer.phone)
         customer.save()
     return reminder
def set_user_updates(user, chat_id, hour, lang):
    logger.info(_("User updating", chat_id=chat_id))

    reminder = Reminder.objects.filter(chat_id=chat_id).first()

    if reminder is None:
        reminder = Reminder(chat_id=chat_id)
        if lang is not None:
            reminder.lang = lang

    reminder.hour = hour
    reminder.save()

    return
예제 #5
0
    def test_message_generation(self):
        """
        Make sure ReminderMessage objects are generated as expected.
        """
        kwargs = {
            'reminder_type': 'PERS',
            'person': Person.objects.get(userid='ggbaker'),
            'title': 'Test reminder',
            'content': 'foo'
        }

        m, d = self._month_day_offset(
            3)  # near future: remindermessage should generate
        r0 = Reminder(date_type='YEAR', month=m, day=d, **kwargs)
        r0.save()

        m, d = self._month_day_offset(
            -30)  # distant past: remindermessage should not generate
        r1 = Reminder(date_type='YEAR', month=m, day=d, **kwargs)
        r1.save()

        m, d = self._month_day_offset(
            90)  # far future: remindermessage should not generate
        r2 = Reminder(date_type='YEAR', month=m, day=d, **kwargs)
        r2.save()

        Reminder.create_all_reminder_messages()

        rms = list(ReminderMessage.objects.all())
        self.assertTrue(
            len(rms) >= 1
        )  # may be other reminders from fixture objects, depending on run date
        rm = rms[0]
        self.assertEqual(rm.reminder, r0)
        self.assertEqual(rm.sent, False)
        ReminderMessage.send_all()
        self.assertEqual(rm.sent, False)  # shouldn't send: still in the future
예제 #6
0
def save_reminder(request):
    name = request.GET.get('reminder_name')
    phone_number = request.GET.get('reminder_phone_number')
    date = request.GET.get('reminder_date')
    time = request.GET.get('reminder_time')
    url = request.GET.get('reminder_url')
    date_combined = date + ' ' + time
    print(name, phone_number, date_combined, url)
    reminder = Reminder(name=name,
                        phone_number=phone_number,
                        time=date_combined,
                        link=url)
    reminder.save()
    print(reminder.phone_number)
    return redirect('/main')
예제 #7
0
파일: views.py 프로젝트: hg242322/subrem
def cloudStorage(request):

    if request.method == "POST":
        company_name = request.POST['company_name']
        expire_date =request.POST['expire_date']

        if Reminder.objects.filter(user=request.user, company_name=company_name).exists():
            storage = messages.get_messages(request)
            storage.used = True

            messages.error(request, 'You have already set a reminder for this.You can view it in your dashboard')
            return redirect('cloudStorage')

        reminder = Reminder(company_name=company_name, expire_date=expire_date, user=request.user)
        reminder.save()
        storage = messages.get_messages(request)
        storage.used = True

        messages.success(request, 'Reminder was added successfully')
        return redirect('cloudStorage')

    return render(request, 'pages/cloudStorage.html')
예제 #8
0
def send_period_reminders(event_ids, sendsms=False, turn_off_reminders=False, mailgun_campaign_id=None):
    """
    takes a Period object
    uses the Period to get appointments and then send reminders
    """
    appointments = Appointment.objects.filter(event__id__in=event_ids).exclude(no_reminders=True).distinct()

    if appointments:
        for appointment in appointments:
            sent_email = False
            sent_sms = False
            if appointment.client.phone and sendsms and getattr(settings, 'SENDSMS', False):
                if appointment.customer.send_sms:
                    if appointment.venue.send_sms:
                        send_sms_reminder(appointment)
                        sent_sms = True
            if appointment.client.email:
                if appointment.customer.send_email:
                    if appointment.venue.send_email:
                        send_email_reminder(appointment, mailgun_campaign_id)
                        sent_email = True
            if True in [sent_email, sent_sms]:
                if turn_off_reminders:
                    appointment.no_reminders = True
                    appointment.save()
                if appointment.status != Appointment.CONFIRMED and appointment.status != Appointment.CANCELED:
                    appointment.status = Appointment.NOTIFIED
                    appointment.save()
                reminder = Reminder(
                    customer=appointment.customer,
                    appointment=appointment,
                    client_name=appointment.client.get_full_name(),
                    appointment_time=timezone.localtime(appointment.event.start),
                    sent_email=sent_email,
                    sent_sms=sent_sms
                )
                reminder.save()