Example #1
0
def update_trav_batiment(id_trav):
    """
    Met à jour une demande de travaux
    """
    dem = request.json

    trav = _db.session.query(TravauxBatiment).get(id_trav)
    try:
        TravauxBatimentFullSerializer(trav).populate(dem)
        _db.session.commit()

        send_mail(
                ['tizoutis-travaux-batiments-admin', 'admin-tizoutis'],
                "Mise à jour de la fiche n°%s" % trav.id,
                '''
                La fiche n°{0} a été modifiée.
                Vous pouvez vous connecter sur http://tizoutis.pnc.int/#/batiments?fiche={0} pour voir les détails de cette demande.
                '''.format(trav.id),
                add_dests=trav.dmdr_contact_email.split(','),
                sendername='travaux-batiments'
                )

        return {'id': trav.id}
    except ValidationError as e:
        return e.errors, 400
Example #2
0
def create_trav_batiment():
    """
    Crée une nouvelle demande de travaux
    """
    dem = request.json
    dem['dem_date'] = datetime.datetime.now()

    demande = TravauxBatiment()
    try:
        TravauxBatimentFullSerializer(demande).populate(dem)
        _db.session.add(demande)
        _db.session.commit()

        send_mail(['tizoutis-travaux-batiments-admin', 'admin-tizoutis'],
                  "Création de la demande de travaux n°%s" % demande.id,
                  '''
            Une nouvelle demande de travaux a été créée.
            Vous pouvez vous connecter sur
            http://tizoutis.pnc.int/#/batiments?fiche=%s
            pour voir les détails de cette demande.
            ''' % demande.id,
                  add_dests=demande.dmdr_contact_email.split(','),
                  sendername='travaux-batiments')
        return {'id': demande.id}
    except ValidationError as e:
        return e.errors, 400
Example #3
0
def update_trav_batiment(id_trav):
    """
    Met à jour une demande de travaux
    """
    dem = request.json

    trav = _db.session.query(TravauxBatiment).get(id_trav)
    try:
        TravauxBatimentFullSerializer(trav).populate(dem)
        _db.session.commit()

        send_mail(['tizoutis-travaux-batiments-admin', 'admin-tizoutis'],
                  "Mise à jour de la fiche n°%s" % trav.id,
                  '''
            La fiche n°{0} a été modifiée.
            Vous pouvez vous connecter sur
            http://tizoutis.pnc.int/#/batiments?fiche={0}
            pour voir les détails de cette demande.
            '''.format(trav.id),
                  add_dests=trav.dmdr_contact_email.split(','),
                  sendername='travaux-batiments')

        return {'id': trav.id}
    except ValidationError as e:
        return e.errors, 400
Example #4
0
def create_trav_batiment():
    """
    Crée une nouvelle demande de travaux
    """
    dem = request.json
    dem['dem_date'] = datetime.datetime.now()

    demande = TravauxBatiment()
    try:
        TravauxBatimentFullSerializer(demande).populate(dem)
        _db.session.add(demande)
        _db.session.commit()


        send_mail(
                ['tizoutis-travaux-batiments-admin', 'admin-tizoutis'],
                "Création de la demande de travaux n°%s" % demande.id,
                '''
                Une nouvelle demande de travaux a été créée.
                Vous pouvez vous connecter sur http://tizoutis.pnc.int/#/batiments?fiche=%s pour voir les détails de cette demande.
                ''' % demande.id,
                add_dests=demande.dmdr_contact_email.split(','),
                sendername='travaux-batiments'
                )
        return {'id': demande.id}
    except ValidationError as e:
        return e.errors, 400
Example #5
0
def create_intervention():
    """
    crée une nouvelle demande d'intervention
    """
    dem = request.json
    dem['dem_date'] = datetime.date.today()
    ref_chrono = '{}I'.format(str(dem['dem_date'].year)[2:4])

    demande = Demande()
    try:
        chrono = get_chrono(ref_chrono)
        dem['num_intv'] = chrono
        DemandeFullSerializer(demande).load(dem)
        _db.session.add(demande)
        _db.session.commit()

        dem_loc = _db.session.query(Thesaurus).get(
            demande.dem_localisation).label
        dem_objet = _db.session.query(Thesaurus).get(demande.dem_objet).label
        send_mail(['tizoutis-interventions', 'admin-tizoutis'],
                  "Création de la demande d'intervention n°%s - %s %s" %
                  (demande.id, dem_objet, dem_loc),
                  '''
            Une nouvelle demande d'intervention a été créée.
            Vous pouvez vous connecter sur
            http://tizoutis.pnc.int/#/interventions?fiche=%s
            pour voir les détails de cette demande.
            ''' % demande.id,
                  add_dests=demande.dmdr_contact_email.split(','),
                  sendername='interventions')

        return {'id': demande.id}
    except ValidationError as e:
        amend_chrono(ref_chrono)
        return e.errors, 400
Example #6
0
def update_intervention(id_intervention):
    """
    met à jour une demande d'intervention identifée par id_intervention
    """
    dem = request.json

    demande = _db.session.query(Demande).get(id_intervention)
    try:
        DemandeFullSerializer(demande).load(dem)
        _db.session.commit()

        dem_loc = _db.session.query(Thesaurus).get(
            demande.dem_localisation).label
        dem_objet = _db.session.query(Thesaurus).get(demande.dem_objet).label

        send_mail(['tizoutis-interventions', 'admin-tizoutis'],
                  "Mise à jour de la demande d'intervention n°%s - %s %s" %
                  (demande.id, dem_objet, dem_loc),
                  '''
            La demande d'intervention n°%s a été modifiée.
            Vous pouvez vous connecter sur
            http://tizoutis.pnc.int/#/interventions?fiche=%s
            pour voir les détails de cette demande.
            ''' % (demande.id, demande.id),
                  add_dests=demande.dmdr_contact_email.split(','),
                  sendername='interventions')

        return {'id': demande.id}
    except ValidationError as e:
        return e.errors, 400
    except Exception:
        import traceback
        print(traceback.format_exc())
        _db.session.rollback()
        return {}, 400
Example #7
0
    def post(self, request):
        user = request.user
        update_form = UpdateForm(request.POST,
                                 instance=user,
                                 initial={'new_email': user.username})
        delete_user_form = DeleteUserForm()
        change_password_form = CustomPasswordChangeForm(user)
        changed = False

        if update_form.has_changed():
            if update_form.is_valid():
                upd_user = update_form.save()
                if 'new_email' in update_form.changed_data:
                    send_mail(request, upd_user, register=False)

                    context = {
                        'msg':
                        'Проверьте почту',
                        'text':
                        'На указанную вами электронную почту выслано письмо с инструкциями для подтверждения учётной записи'
                    }

                    return render(request, 'users/activate.html', context)

                changed = True

        context = {
            'delete_user_form': delete_user_form,
            'change_password_form': change_password_form,
            'changed': changed,
            'update_form': update_form,
        }

        return render(request, 'users/profile.html', context)
Example #8
0
    def post(self, request):
        register_form = RegisterForm(request.POST)
        field_errors = register_form.errors.as_json()
        success = False
        email_error = None
        success_message = None

        if register_form.is_valid():
            user = register_form.save(commit=False)
            user.is_active = False

            try:
                send_mail(request, user)
                user.save()
                success = True
                success_message = 'На указанную вами электронную почту выслано письмо с инструкциями для подтверждения учётной записи'
            except Exception as e:
                email_error = 'Ошибка! Перезагрузите страницу и попробуйте заново.'
                print(e)

        context = {
            'success': success,
            'errors': field_errors,
            'email_error': email_error,
            'success_message': success_message
        }

        return JsonResponse(context)
Example #9
0
def delete_intervention(id_intervention):
    """
    supprime une demande d'intervention identifiée par id_intervention
    """
    demande = _db.session.query(Demande).get(id_intervention)
    _db.session.delete(demande)
    _db.session.commit()

    dem_loc = _db.session.query(Thesaurus).get(demande.dem_localisation).label
    dem_objet = _db.session.query(Thesaurus).get(demande.dem_objet).label

    send_mail(
            ['tizoutis-interventions', 'admin-tizoutis'],
            "Annulation de la demande d'intervention n°%s - %s %s" % (
                    demande.id,
                    dem_objet,
                    dem_loc
                    ),
            '''
            La demande d'intervention n°%s a été annulée.
            Vous pouvez vous connecter sur http://tizoutis.pnc.int/#/interventions/ pour voir la liste des demandes en cours.
            ''',
            add_dests=demande.dmdr_contact_email.split(','),
            sendername='interventions')

    return {'id': demande.id}
Example #10
0
def delete_agent(id_agent):
    '''
    annule un recrutement en cours
    '''
    agent = _db.session.query(AgentDetail).get(id_agent)
    if not agent:
        return [], 404
    """
    rels_fichiers = _db.session.query(RelAgentFichier).filter(
        RelAgentFichier.id_agent == id_agent
    ).all()
    for rel in rels_fichiers:
        delete_uploaded_file(rel.id_fichier, _db)
    """
    _db.session.delete(agent)
    _db.session.commit()
    send_mail(['tizoutis-recrutement', 'admin-tizoutis'],
              "Suppression d'une fiche de recrutement : %s %s" %
              (agent.prenom or '', agent.nom),
              '''
        La fiche de recrutement de %s %s a été supprimée le %s.
        Vous pouvez vous connecter à
        http://tizoutis.pnc.int/#/recrutement
        pour voir la liste des recrutements en cours.
        ''' % (agent.prenom or '', agent.nom,
               datetime.datetime.today().strftime('%d/%m/%Y')),
              add_dests=agent.notif_list.split(','))
    return []
Example #11
0
def delete_agent(id_agent):
    '''
    annule un recrutement en cours
    '''
    agent = _db.session.query(AgentDetail).get(id_agent)
    if not agent:
        return [], 404
    rels_fichiers = _db.session.query(RelAgentFichier).filter(
            RelAgentFichier.id_agent == id_agent).all()
    for rel in rels_fichiers:
        delete_uploaded_file(rel.id_fichier, _db)
        #_db.session.delete(rel)
    _db.session.delete(agent)
    _db.session.commit()
    send_mail(
        ['tizoutis-recrutement', 'admin-tizoutis'],
        "Suppression d'une fiche de recrutement : %s %s" % (
            agent.prenom or '',
            agent.nom
            ),
        '''
        La fiche de recrutement de %s %s a été supprimée le %s.
        Vous pouvez vous connecter à http://tizoutis.pnc.int/#/recrutement pour voir la liste des recrutements en cours.
        ''' % (
            agent.prenom or '',
            agent.nom,
            datetime.datetime.today().strftime('%d/%m/%Y')
            ),
        add_dests=agent.notif_list.split(',')
        )
    return []
Example #12
0
def send_welcome_email(user):
    """
    Send a new User a welcome email.
    """
    subject = 'Welcome to Code Atlas'
    body = 'Welcome to Code Atlas'
    template = 'email/welcome.html'
    
    send_mail(subject, body, template, [user])
Example #13
0
    def reset(self, request, *args, **kwargs):
        email = request.data.get('email')
        user = self.get_queryset().filter(email=email).first()
        if not user:
            raise ValidationError('Пользователь с указзанным email-ом не найдет')

        key = "{}:{}".format(md5(user.username).hexdigest(), user.pk)
        message = render_to_string('auth/password_reset_email.html', context={"key": key})
        try:
            send_mail('*****@*****.**', user.email, 'Восстановление пароля', message)
        except Exception as e:
            raise ValidationError('Ошибка при отправке письма: {}'.format(e))
        return Response(status=status.HTTP_200_OK)
Example #14
0
    def deactivate(self, request, *args, **kwargs):
        user = self.get_object()
        if not user.is_active:
            raise ValidationError('Пользователь уже деактивирован')

        user.is_active = False
        user.save()

        message = render_to_string('auth/account_deactivate_email.html')
        try:
            send_mail('*****@*****.**', user.email, 'Ваш аккаунт отключен', message)
        except Exception as e:
            raise ValidationError('Ошибка при отправке письма: {}'.format(e))
        return Response(status=status.HTTP_200_OK)
Example #15
0
 def confirm_close_claim(self, request, *args, **kwargs):
     deposit = self.get_object()
     if deposit.status != deposit.STATUS_REQUESTED_CLOSING:
         raise ValidationError('Заявка на закрытие депозита не подана.')
     if deposit.close_confirm():
         message = render_to_string('deposit/create_confirm_email.html')
         try:
             send_mail('*****@*****.**', deposit.client.email,
                       'Ваша заявка на закрытие депозита одобрена.', message)
         except Exception as e:
             raise ValidationError('Ошибка при отправке письма: {}'.format(e))
         return Response('Закрытие подтверждено, деньги переведены.', status=status.HTTP_200_OK)
     else:
         raise ValidationError('Заявка на закрытие не была подана.')
Example #16
0
def update_agent(id_agent):
    '''
    met à jour un agent
    '''
    try:
        ag = request.json
        agent = _db.session.query(AgentDetail).get(id_agent)
        if not agent:
            return [], 404

        ag['materiel'] = [
                _db.session.query(Thesaurus).get(item_id)
                for item_id in ag.get('materiel', [])]

        ag['meta_update'] = datetime.datetime.now()
        notif = ag.pop('ctrl_notif', False)

        AgentDetailSerializer(agent).populate(ag)

        _db.session.commit()

        out = AgentDetailSerializer(agent).serialize()
        if notif:
            send_mail(
                ['tizoutis-recrutement', 'admin-tizoutis'],
                "Modification d'une fiche de recrutement : %s %s" % (
                    agent.prenom or '',
                    agent.nom
                    ),
                '''
                La fiche de recrutement de %s %s a été modifiée le %s.
                Vous pouvez vous connecter à http://tizoutis.pnc.int/#/recrutement?annee=%s&fiche=%s pour voir les détails de cette fiche.
                ''' % (
                    agent.prenom or '',
                    agent.nom,
                    datetime.datetime.today().strftime('%d/%m/%Y'),
                    agent.arrivee.year,
                    agent.id
                    ),
                add_dests=ag['notif_list']
                )

        return out
    except Exception as exc:
        import traceback
        print(exc)
        print(traceback.format_exc())
        return [{'msg': traceback.format_exc()}], 400
Example #17
0
 def reject_create_claim(self, request, *args, **kwargs):
     """
     """
     account = self.get_object()
     cause = ''
     if account.status != account.STATUS_REQUESTED_CREATING:
         raise ValidationError('Заявка на создание счета была обработана ранее.')
     else:
         message = render_to_string('account/create_reject_email.html')
         try:
             send_mail('*****@*****.**', account.client.email,
                       'Ваша заявка на создание счета отклонена.', message)
         except Exception as e:
             raise ValidationError('Ошибка при отправке письма: {}'.format(e))
         account.reject(cause)
         return Response('Создание счета отклонено')
Example #18
0
 def confirm_create_claim(self, request, *args, **kwargs):
     account = self.get_object()
     if account.status == account.STATUS_ACTIVE:
         raise ValidationError('Заявка на создание счета уже была обработана ранее.')
     if account.status != account.STATUS_REQUESTED_CREATING:
         raise ValidationError('Операции со счетом невозможны')
     else:
         if account.confirm():
             message = render_to_string('account/create_confirm_email.html')
             try:
                 send_mail('*****@*****.**', account.client.email,
                           'Ваша заявка на создание счета одобрена.', message)
             except Exception as e:
                 raise ValidationError('Ошибка при отправке письма: {}'.format(e))
             return Response('Создание счета подтверждено', status=status.HTTP_200_OK)
         raise ValidationError('Создание счета отклонено банком')
Example #19
0
def create_agent():
    '''
    crée un nouvel agent
    '''
    try:
        ag = request.json
        ag['meta_create'] = datetime.datetime.now()
        ag['materiel'] = [
                _db.session.query(Thesaurus).get(item_id)
                for item_id in ag.get('materiel', [])]
        notif = ag.pop('ctrl_notif', False)

        # agent = AgentDetail(**ag)
        agent = AgentDetail()
        AgentDetailSerializer(agent).populate(ag)
        _db.session.add(agent)
        _db.session.commit()

        out = AgentDetailSerializer(agent).serialize()
        if notif:
            send_mail(
                ['tizoutis-recrutement', 'admin-tizoutis'],
                'Nouvelle fiche de recrutement : %s %s' % (
                    agent.prenom or '',
                    agent.nom
                    ),
                '''
                La fiche de recrutement de %s %s a été créée le %s.
                Vous pouvez vous connecter sur http://tizoutis.pnc.int/#/recrutement?annee=%s&fiche=%s pour voir les détails de cette fiche.
                ''' % (
                    agent.prenom or '',
                    agent.nom,
                    datetime.datetime.today().strftime('%d/%m/%Y'),
                    agent.arrivee.year,
                    agent.id
                    ),
                add_dests=ag['notif_list']
                )

        return out

    except Exception:
        import traceback
        return [{'msg': traceback.format_exc()}], 400
Example #20
0
 def confirm_create_claim(self, request, *args, **kwargs):
     credit = self.get_object()
     if credit.status != credit.STATUS_REQUESTED:
         raise ValidationError(
             'Заявка на создание кредита была обработана ранее.')
     else:
         if credit.confirm():
             message = render_to_string('credit/create_confirm_email.html')
             try:
                 send_mail('*****@*****.**', credit.client.email,
                           'Ваша заявка на создание кредита одобрена.',
                           message)
             except Exception as e:
                 raise ValidationError(
                     'Ошибка при отправке письма: {}'.format(e))
             return Response('Создание кредита подтверждено',
                             status=status.HTTP_200_OK)
         else:
             raise ValidationError('Отклонено банком')
Example #21
0
def update_agent(id_agent):
    '''
    met à jour un agent
    '''
    try:
        ag = request.json
        agent = _db.session.query(AgentDetail).get(id_agent)
        if not agent:
            return [], 404

        ag['materiel'] = [
            _db.session.query(Thesaurus).get(item_id)
            for item_id in ag.get('materiel', [])
        ]

        ag['meta_update'] = str(datetime.date.today())
        notif = ag.pop('ctrl_notif', False)

        AgentDetailSerializer(agent).load(ag)

        _db.session.commit()

        out = AgentDetailSerializer(agent).dump()
        if notif:
            send_mail(['tizoutis-recrutement', 'admin-tizoutis'],
                      "Modification d'une fiche de recrutement : %s %s" %
                      (agent.prenom or '', agent.nom),
                      '''
                La fiche de recrutement de %s %s a été modifiée le %s.
                Vous pouvez vous connecter à
                http://tizoutis.pnc.int/#/recrutement?annee=%s&fiche=%s
                pour voir les détails de cette fiche.
                ''' % (agent.prenom or '', agent.nom,
                       datetime.datetime.today().strftime('%d/%m/%Y'),
                       agent.arrivee.year, agent.id),
                      add_dests=ag['notif_list'])

        return out
    except Exception as exc:
        import traceback
        print(exc)
        print(traceback.format_exc())
        return [{'msg': traceback.format_exc()}], 400
Example #22
0
def delete_trav_batiment(id_trav):
    """
    Supprime une demande de travaux
    """
    trav = _db.session.query(TravauxBatiment).get(id_trav)
    _db.session.delete(trav)
    _db.session.commit()

    send_mail(['tizoutis-travaux-batiments-admin', 'admin-tizoutis'],
              "Suppression de la fiche n°%s" % trav.id,
              '''
        La fiche n°{0} a été supprimée.
        Vous pouvez vous connecter sur
        http://tizoutis.pnc.int/#/batiments
        pour voir la liste des travaux en cours.
        '''.format(trav.id),
              add_dests=trav.dmdr_contact_email.split(','),
              sendername='travaux-batiments')
    return {'id': id_trav}
Example #23
0
def delete_trav_batiment(id_trav):
    """
    Supprime une demande de travaux
    """
    trav = _db.session.query(TravauxBatiment).get(id_trav)
    _db.session.delete(trav)
    _db.session.commit()

    send_mail(
            ['tizoutis-travaux-batiments-admin', 'admin-tizoutis'],
            "Suppression de la fiche n°%s" % trav.id,
            '''
            La fiche n°{0} a été supprimée.
            Vous pouvez vous connecter sur http://tizoutis.pnc.int/#/batiments pour voir la liste des travaux en cours.
            '''.format(trav.id),
            add_dests=trav.dmdr_contact_email.split(','),
            sendername='travaux-batiments'
            )
    return {'id': id_trav}
Example #24
0
 def reject_create_claim(self, request, *args, **kwargs):
     """
     :param request:
     {
         "cause", cause of rejection
     }
     """
     deposit = self.get_object()
     cause = request.data['cause']
     if deposit.status != deposit.STATUS_REQUESTED_CREATING:
         raise ValidationError('Заявка на создание депозита уже была обработана.')
     else:
         message = render_to_string('deposit/create_reject_email.html')
         try:
             send_mail('*****@*****.**', deposit.client.email,
                       'Ваша заявка на создание депозита отклонена.', message)
         except Exception as e:
             raise ValidationError('Ошибка при отправке письма: {}'.format(e))
         deposit.reject(cause)
         return Response('Создание депозита отклонено')
Example #25
0
 def reject_close_claim(self, request, *args, **kwargs):
     """
     :param request:
     {
         "cause", cause of rejection
     }
     """
     deposit = self.get_object()
     if deposit.status != deposit.STATUS_REQUESTED_CLOSING:
         raise ValidationError('Заявка на закрытие депозита не подана.')
     cause = request.data['cause']
     if deposit.close_reject(cause):
         message = render_to_string('deposit/close_reject_email.html')
         try:
             send_mail('*****@*****.**', deposit.client.email,
                       'Ваша заявка на закрытие депозита отклонена.', message)
         except Exception as e:
             raise ValidationError('Ошибка при отправке письма: {}'.format(e))
         return Response('Закрытие отклонено.', status=status.HTTP_200_OK)
     else:
         raise ValidationError('Заявка на закрытие не была подана.')
Example #26
0
def password_reset_token_created(sender, reset_password_token, *args,
                                 **kwargs):
    user_email = reset_password_token.user.email
    context = {
        'current_user': reset_password_token.user,
        'email': user_email,
        'protocol': 'https'
    }

    to_email = user_email.lower()
    first_location = Location.objects.filter(musers__email=to_email). \
        select_related('branding').first()
    branding = first_location.branding if first_location else \
        MUser.objects.filter(
            email=to_email,
            has_access_to_all_locations=True
        ).exists() and Branding.objects.first()
    if not branding:
        log.error(
            'PasswordResetForm: Either email %s does not have location '
            'assigned or does not have access to all locations or does '
            'not exists', to_email)
        return
    context['branding'] = branding
    context['imprint'] = branding.imprint
    context['site_name'] = context['domain'] = branding.my_portal_domain
    context['reset_password_path'] = f'/password-reset/check/?token=' \
        f'{reset_password_token.key}'
    template = branding.email_template_my_portal_password_reset
    send_mail(
        render_template_from_db(template.subject, context),
        render_template_from_db(template.txt, context),
        from_email=template.get_email_sender(
            settings.TIGAELEVEN_MYPORTAL_EMAIL_FROM),
        recipient_list=[
            to_email,
        ],
        html_message=render_template_from_db(template.html, context),
        allow_unverified_recipient=True,
    )
Example #27
0
def create_agent():
    '''
    crée un nouvel agent
    '''
    try:
        ag = request.json
        ag['materiel'] = [
            _db.session.query(Thesaurus).get(item_id)
            for item_id in ag.get('materiel', [])
        ]
        notif = ag.pop('ctrl_notif', False)

        # agent = AgentDetail(**ag)
        agent = AgentDetail()
        AgentDetailSerializer(agent).load(ag)
        _db.session.add(agent)
        _db.session.commit()

        out = AgentDetailSerializer(agent).dump()
        if notif:
            send_mail(['tizoutis-recrutement', 'admin-tizoutis'],
                      'Nouvelle fiche de recrutement : %s %s' %
                      (agent.prenom or '', agent.nom),
                      '''
                La fiche de recrutement de %s %s a été créée le %s.
                Vous pouvez vous connecter sur
                http://tizoutis.pnc.int/#/recrutement?annee=%s&fiche=%s
                pour voir les détails de cette fiche.
                ''' % (agent.prenom or '', agent.nom,
                       datetime.datetime.today().strftime('%d/%m/%Y'),
                       agent.arrivee.year, agent.id),
                      add_dests=ag['notif_list'])

        return out

    except Exception:
        import traceback
        return [{'msg': traceback.format_exc()}], 400
Example #28
0
def update_intervention(id_intervention):
    """
    met à jour une demande d'intervention identifée par id_intervention
    """
    dem = request.json

    demande = _db.session.query(Demande).get(id_intervention)
    try:
        DemandeFullSerializer(demande).populate(dem)
        #_db.session.add(demande)
        _db.session.commit()

        dem_loc = _db.session.query(Thesaurus).get(demande.dem_localisation).label
        dem_objet = _db.session.query(Thesaurus).get(demande.dem_objet).label

        send_mail(
                ['tizoutis-interventions', 'admin-tizoutis'],
                "Mise à jour de la demande d'intervention n°%s - %s %s" % (
                    demande.id,
                    dem_objet,
                    dem_loc
                    ),
                '''
                La demande d'intervention n°%s a été modifiée.
                Vous pouvez vous connecter sur http://tizoutis.pnc.int/#/interventions?fiche=%s pour voir les détails de cette demande.
                ''' % (demande.id, demande.id),
                add_dests=demande.dmdr_contact_email.split(','),
                sendername='interventions'
                )

        return {'id': demande.id}
    except ValidationError as e:
        return e.errors, 400
    except:
        import traceback
        print(traceback.format_exc())
        _db.session.rollback()
        return {}, 400
Example #29
0
def create_intervention():
    """
    crée une nouvelle demande d'intervention
    """
    dem = request.json
    dem['dem_date'] = datetime.datetime.now()
    ref_chrono = '{}-INTV-'.format(dem['dem_date'].year)

    demande = Demande()
    try:
        chrono = get_chrono(ref_chrono)
        dem['num_intv'] = chrono
        DemandeFullSerializer(demande).populate(dem)
        _db.session.add(demande)
        _db.session.commit()

        dem_loc = _db.session.query(Thesaurus).get(demande.dem_localisation).label
        dem_objet = _db.session.query(Thesaurus).get(demande.dem_objet).label
        send_mail(
                ['tizoutis-interventions', 'admin-tizoutis'],
                "Création de la demande d'intervention n°%s - %s %s" % (
                    demande.id,
                    dem_objet,
                    dem_loc
                    ),
                '''
                Une nouvelle demande d'intervention a été créée.
                Vous pouvez vous connecter sur http://tizoutis.pnc.int/#/interventions?fiche=%s pour voir les détails de cette demande.
                ''' % demande.id,
                add_dests=demande.dmdr_contact_email.split(','),
                sendername='interventions'
                )

        return {'id': demande.id}
    except ValidationError as e:
        amend_chrono(ref_chrono)
        return e.errors, 400
Example #30
0
def delete_intervention(id_intervention):
    """
    supprime une demande d'intervention identifiée par id_intervention
    """
    demande = _db.session.query(Demande).get(id_intervention)
    _db.session.delete(demande)
    _db.session.commit()

    dem_loc = _db.session.query(Thesaurus).get(demande.dem_localisation).label
    dem_objet = _db.session.query(Thesaurus).get(demande.dem_objet).label

    send_mail(['tizoutis-interventions', 'admin-tizoutis'],
              "Annulation de la demande d'intervention n°%s - %s %s" %
              (demande.id, dem_objet, dem_loc),
              '''
        La demande d'intervention n°%s a été annulée.
        Vous pouvez vous connecter sur
        http://tizoutis.pnc.int/#/interventions/
        pour voir la liste des demandes en cours.
        ''',
              add_dests=demande.dmdr_contact_email.split(','),
              sendername='interventions')

    return {'id': demande.id}
Example #31
0
def create_result(sender, instance, created, *args, **kwargs):
    """
    add docs..
    """
    try:
        if not instance:
            return

        if instance.status in ["STARTED", "REVOKED"]:
            return

        if not EMAIL_RECEIVE_HOSTS:
            raise ValueError("EMAIL_RECEIVE_HOSTS configuration not found")

        if not EMAIL_SENDER:
            raise ValueError("EMAIL_HOST_USER configuration not found")

        EMAIL_RECEIVE_HOSTS_LIST = EMAIL_RECEIVE_HOSTS.split(',')

        res = json.loads(instance.result)
        if instance.status == 'SUCCESS':
            # save a new timeseries record
            active_amplifiers_count = res["active_amplifiers_count"]
            scan_name = res["scan_name"]

            private_amplifiers_count = 0
            public_amplifiers_count = 0

            for ip, details in res["amplifiers"].items():
                if details["private_address"]:
                    private_amplifiers_count += 1
                else:
                    public_amplifiers_count += 1

            periodic_task = PeriodicTask.objects.get(name=res["scan_name"])
            scan_result_obj = ScanTimeSeriesResult(
                scan_name=scan_name,
                active_amplifiers_count=active_amplifiers_count,
                private_amplifiers_count=private_amplifiers_count,
                public_amplifiers_count=public_amplifiers_count,
                scan_result=instance,
                status=instance.status,
                periodic_task=periodic_task)
            scan_result_obj.save()

            for ip, details in res["amplifiers"].items():
                amp_obj = Amplifier(
                    address=ip,
                    destination_address=details["destination_address"],
                    total_response_size=details["total_response_size"],
                    amplification_factor=details["amplification_factor"],
                    unsolicited_response=details["unsolicited_response"],
                    private_address=details["private_address"],
                    scan=scan_result_obj)
                amp_obj.save()

                for response in details["responses"]:
                    res_obj = Response(
                        response_hex_data=response["response_hex_data"],
                        response_size=response["response_size"],
                        response_ipid=response["response_ipid"],
                        response_ttl=response["response_ttl"],
                        response_sport=response["response_sport"],
                        response_dport=response["response_dport"],
                        amplifier=amp_obj)
                    res_obj.save()

            # send email to administrator
            if active_amplifiers_count < 1:
                return

            table = PrettyTable()
            table.field_names = [
                "Amplifier", "Response Size", "Amplification Factor",
                "Unsolicited Response", "Address Type"
            ]

            for ip, details in res["amplifiers"].items():
                table.add_row([
                    ip, details["total_response_size"],
                    details["amplification_factor"],
                    details["unsolicited_response"], details["private_address"]
                ])

            table.sortby = "Amplification Factor"
            # sort in descending order
            table.reversesort = True

            subject = "%d amplifiers found for scan '%s'" % (
                active_amplifiers_count, scan_name)
            html_content = table.get_html_string()
            send_mail(subject,
                      EMAIL_SENDER,
                      EMAIL_RECEIVE_HOSTS_LIST,
                      html_content=html_content)

        elif instance.status == 'FAILURE':
            scan_name = instance.task_kwargs['scan_name']

            periodic_task = PeriodicTask.objects.get(name=scan_name)
            scan_result_obj = ScanTimeSeriesResult(scan_name=scan_name,
                                                   active_amplifiers_count=0,
                                                   scan_result=instance,
                                                   status=instance.status,
                                                   periodic_task=periodic_task)
            scan_result_obj.save()

            subject = "Scan '%s' has failed " % scan_name

            content = "Exception Type: %s\n" % res["exc_type"]
            content += "Exception Message: %s\n" % res["exc_message"]
            content += "Exception Module: %s\n" % res["exc_module"]
            content += instance.traceback
            send_mail(subject,
                      EMAIL_SENDER,
                      EMAIL_RECEIVE_HOSTS_LIST,
                      txt_content=content)

    except Exception as err:
        # log exception
        logger.error("%s" % err)
Example #32
0
def user_order_done(request):

    cart = request.session['cart']
    display_order_items = []
    total_price = 0

    # メールの本文に表示する、注文商品情報をまとめる
    for item in cart:
        product_id = item['product_id']
        qty = int(item['qty'])
        product = get_object_or_404(Product, id=product_id)
        # 各商品の小計
        subtotal_price = product.price * qty
        item_dict = {
            'product_name': product.name,
            'price': product.price,
            'qty': qty,
            'subtotal_price': subtotal_price,
        }
        display_order_items.append(item_dict)
        # 合計金額(税抜き)
        total_price += subtotal_price
    # 合計金額(税込み)
    calc_total_price = calc_price_tax(total_price)

    # メールの本文に表示する注文者情報
    prefecture = Prefecture.objects.get(id=request.POST['prefecture'])
    name = request.POST['name']
    name_kana = request.POST['name_kana']
    email_address = request.POST['email_address']
    phone_number = request.POST['phone_number']
    postal_code = request.POST['postal_code']
    address = prefecture.prefecture_name + request.POST[
        'municipality'] + request.POST['address']

    context = {
        'name': name,
        'phone_number': phone_number,
        'postal_code': postal_code,
        'address': address,
        'display_order_items': display_order_items,
        'total_price': total_price,  # 税抜き合計
        'calc_total_price': calc_total_price,  # 税込み合計
    }
    to_list = [email_address]

    send_mail_result = send_mail(
        request,
        '【d_shopping】ご注文ありがとうございます。',
        'email_txt/user_order_done_email.txt',
        context,
        to_list,
    )
    sales = Sales.objects.create(name=name,
                                 name_kana=name_kana,
                                 email_address=email_address,
                                 phone_number=phone_number,
                                 postal_code=postal_code,
                                 prefecture=prefecture,
                                 municipality=request.POST['municipality'],
                                 address=request.POST['address'],
                                 member_code=0)
    for item in cart:
        product_id = item['product_id']
        qty = int(item['qty'])
        product = get_object_or_404(Product, id=product_id)

        sales_details = SalesDetails.objects.create(sales=sales,
                                                    product_id=product.pk,
                                                    price=product.price,
                                                    quantity=qty)

    # セッションのカート情報をクリア
    del request.session['cart']

    return render(request,
                  'user/user_order_done.html',
                  context={
                      'name': name,
                      'email_address': email_address,
                  })