예제 #1
0
파일: tasks.py 프로젝트: wuxxin/ecs
def send_vote_expired(vote):
    sf = vote.get_submission().current_submission_form
    recipients = sf.get_presenting_parties().get_users()
    recipients.add(get_office_user())

    subject = _('Vote for Submission {ec_number} has expired')
    send_vote_reminder(vote, subject, 'expired.txt', recipients)
예제 #2
0
파일: tasks.py 프로젝트: wuxxin/ecs
def send_temporary_vote_reminder(vote):
    sf = vote.get_submission().current_submission_form
    recipients = sf.get_presenting_parties().get_users()
    recipients.add(get_office_user())

    subject = _('Temporary vote for Submission {ec_number}')
    send_vote_reminder(vote, subject, 'temporary_reminder.txt', recipients)
예제 #3
0
파일: forms.py 프로젝트: wuxxin/ecs
    def __init__(self, submission, *args, **kwargs):
        self.to_user = kwargs.pop('to', None)
        super().__init__(*args, **kwargs)

        self.submission = submission

        receiver_type_choices = [
            ('ec',
             '{0} ({1})'.format(ugettext('Ethics Commission'),
                                get_office_user(submission=self.submission))),
        ]
        receiver_type_initial = 'ec'

        if submission and get_current_user(
        ) not in submission.current_submission_form.get_presenting_parties():
            receiver_type_choices += [
                ('involved', _('Involved Party')),
            ]
            receiver_type_initial = 'involved'
            self.fields['receiver_involved'].set_submission(submission)

        user = get_current_user()
        if user.profile.is_internal:
            receiver_type_choices += [('person', _('Person'))]
            self.fields['receiver_person'].queryset = User.objects.filter(
                is_active=True).exclude(pk=user.pk)

        self.fields['receiver'].queryset = User.objects.filter(
            is_active=True).exclude(pk=user.pk)

        self.fields['receiver_type'].choices = receiver_type_choices
        self.fields['receiver_type'].initial = receiver_type_initial

        if self.to_user:
            self.fields['receiver_type'].required = False
예제 #4
0
파일: triggers.py 프로젝트: wuxxin/ecs
def on_initial_review(sender, **kwargs):
    submission, submission_form = kwargs['submission'], kwargs['form']

    if submission_form.is_acknowledged:
        send_submission_message(submission, submission.presenter,
                                _('Acknowledgement of Receipt'),
                                'submissions/acknowledge_message.txt')
        if not submission.current_submission_form == submission_form:
            pending_vote = submission.current_pending_vote
            if pending_vote and pending_vote.is_draft:
                pending_vote.submission_form = submission_form
                pending_vote.save()
            submission_form.mark_current()
            vote = submission.current_published_vote
            if vote and vote.is_recessed:
                receivers = submission_form.get_presenting_parties().get_users(
                )
                with sudo():
                    for task in Task.objects.for_submission(submission).filter(
                            task_type__workflow_node__uid__in=[
                                'categorization', 'internal_vote_review'
                            ],
                            assigned_to__isnull=False):
                        receivers.add(task.assigned_to)
                    for task in Task.objects.for_submission(submission).filter(
                            task_type__workflow_node__uid='specialist_review',
                            assigned_to__isnull=False).open():
                        receivers.add(task.assigned_to)
            else:
                receivers = submission_form.get_involved_parties().get_users()
            receivers = receivers.difference(
                [submission_form.presenter,
                 get_current_user()])
            for u in receivers:
                send_submission_message(
                    submission,
                    u,
                    _('Changes to study EC-Nr. {ec_number}'),
                    'submissions/change_message.txt',
                    reply_receiver=get_office_user(submission=submission))
    else:
        send_submission_message(submission, submission.presenter,
                                _('Submission not accepted'),
                                'submissions/decline_message.txt')
예제 #5
0
파일: tasks.py 프로젝트: wuxxin/ecs
def send_download_warnings():
    now = timezone.now()

    hist = (
        DownloadHistory.objects
            .filter(user__profile__is_internal=False,
                downloaded_at__range=(now - timedelta(days=7), now))
            .order_by('user_id')
            .values_list('user_id')
            .annotate(Count('id'))
            .filter(id__count__gt=WEEKLY_DOWNLOAD_THRESHOLD)
    )

    sender = get_user('*****@*****.**')
    receiver = get_office_user()

    for user_id, count in hist:
        user = User.objects.get(id=user_id)
        subject = _('Large number of downloads by {user}').format(user=user)
        send_message_template(sender, receiver, subject,
            'documents/messages/download_warning.txt',
            {'user': user,'count': count})
예제 #6
0
파일: forms.py 프로젝트: wuxxin/ecs
    def clean_receiver(self):
        cd = self.cleaned_data

        if self.to_user:
            cd['receiver'] = self.to_user
            return self.to_user

        receiver = None
        receiver_type = cd.get('receiver_type', None)

        if receiver_type == 'ec':
            receiver = get_office_user(submission=self.submission)
        elif receiver_type == 'involved':
            require_fields(self, [
                'receiver_involved',
            ])
            receiver = cd.get('receiver_involved')
        elif receiver_type == 'person':
            require_fields(self, [
                'receiver_person',
            ])
            receiver = cd.get('receiver_person')

        return receiver
예제 #7
0
파일: tasks.py 프로젝트: wuxxin/ecs
def send_vote_reminder_office(vote):
    recipients = [get_office_user()]

    subject = _('Vote for Submission {ec_number} will expire in one week')
    send_vote_reminder(vote, subject, 'reminder_office.txt', recipients)