Exemplo n.º 1
0
def create_poll(request):
    if request.method == 'POST':
        organization = get_organization(request)
        if not _is_smsc_configured(organization):
            return HttpResponse(
                json.dumps({
                    'success':
                    False,
                    'error_message':
                    _("Your message could not be sent.")
                }))

        manager = get_database_manager(request.user)
        is_active, project_id, project_name = get_active_form_model_name_and_id(
            manager)
        if not is_active:
            response_dict = _create_response_dict(request)
            return HttpResponse(json.dumps(response_dict))

        else:
            return HttpResponse(
                json.dumps({
                    'success': False,
                    'error_message': 'Another poll is active',
                    'project_name_unique': project_name
                }))
Exemplo n.º 2
0
def _create_reponse_for_activated_poll(manager, questionnaire, request):
    is_active, question_id_active, question_name_active = get_active_form_model_name_and_id(
        manager)
    is_current_active = _is_same_questionnaire(question_id_active,
                                               questionnaire)
    end_date = datetime.strptime(request.POST.get('end_date'),
                                 '%Y-%m-%dT%H:%M:%S')
    if is_current_active:
        _change_questionnaire_end_date(questionnaire, end_date)
        UserActivityLog().log(request,
                              action=EDITED_END_DATE_POLL,
                              project=questionnaire.name,
                              detail=questionnaire.name)
        return {'success': True}
    elif not is_active and not is_current_active:
        _change_questionnaire_status(questionnaire, "active")
        _change_questionnaire_end_date(questionnaire, end_date)
        UserActivityLog().log(request,
                              action=ACTIVATE_POLL,
                              project=questionnaire.name,
                              detail=questionnaire.name)
        return {'success': True}
    message = _(
        "To activate the Poll you must first deactivate your current Poll %s. You may only have one active Poll at a time."
    ) % question_name_active
    return {
        'success': False,
        'message': message,
        'question_id_active': question_id_active,
        'question_name_active': question_name_active
    }
Exemplo n.º 3
0
def create_project(request):
    manager = get_database_manager(request.user)
    org = get_organization(request)
    is_active, project_active_id, project_active_name = get_active_form_model_name_and_id(
        manager)
    has_permission_on_active_project = True
    ngo_admin_email = get_ngo_admin_user_profiles_for(org)[0].user.email
    if is_active:
        user_permission = get_user_permission(user_id=request.user.id,
                                              dbm=manager)
        if user_permission is not None and project_active_id not in user_permission.project_ids:
            has_permission_on_active_project = False

    if request.method == 'GET':
        cancel_link = reverse('dashboard') if request.GET.get(
            'prev', None) == 'dash' else reverse('alldata_index')
        return render_to_response('project/create_project.html', {
            'preview_links':
            get_preview_and_instruction_links(),
            'questionnaire_code':
            helper.generate_questionnaire_code(manager),
            'is_edit':
            'false',
            'is_pro_sms':
            org.is_pro_sms,
            'active_language':
            request.LANGUAGE_CODE,
            'post_url':
            reverse(create_project),
            'unique_id_types':
            json.dumps([
                unique_id_type.capitalize()
                for unique_id_type in get_unique_id_types(manager)
            ]),
            'has_permission_on_active_project':
            has_permission_on_active_project,
            'ngo_admin_email':
            ngo_admin_email,
            'cancel_link':
            cancel_link,
            'is_active':
            is_active,
            'project_active_id':
            project_active_id,
            'project_active_name':
            project_active_name
        },
                                  context_instance=RequestContext(request))

    if request.method == 'POST':
        response_dict = _create_project_post_response(request, manager)
        return HttpResponse(json.dumps(response_dict))
Exemplo n.º 4
0
def get_poll_info(request, project_id):
    manager = get_database_manager(request.user)
    questionnaire = Project.get(manager, project_id)
    project_links = get_project_link(questionnaire)
    questionnaire_active, active_poll_id, active_poll_name = get_active_form_model_name_and_id(
        manager)
    from_date = questionnaire.modified.date()
    to_date = questionnaire.end_date.date()
    languages_list = get_available_project_languages(manager)
    current_project_language = questionnaire.language
    num_of_recipients = _get_number_of_recipients_(project_id)
    return render_to_response(
        'project/poll.html',
        RequestContext(
            request, {
                'project':
                questionnaire,
                'message_text':
                questionnaire.form_fields[0]['label'],
                'project_links':
                project_links,
                'is_active':
                questionnaire.active,
                'from_date':
                from_date,
                'is_pro_sms':
                get_organization(request).is_pro_sms,
                'to_date':
                to_date,
                'questionnaire_id':
                active_poll_id,
                'questionnaire_name':
                active_poll_name,
                'languages_list':
                json.dumps(languages_list),
                'languages_link':
                reverse('languages'),
                'current_project_language':
                current_project_language,
                'post_url':
                reverse("project-language", args=[questionnaire.id]),
                'get_poll_sent_messages':
                reverse("get_poll_sent_messages", args=[questionnaire.id]),
                'questionnaire_code':
                questionnaire.form_code,
                'num_of_recipients':
                num_of_recipients,
            }))
Exemplo n.º 5
0
def activate_poll(request, project_id):
    if request.method == 'POST':
        manager = get_database_manager(request.user)
        questionnaire = Project.get(manager, project_id)
        if questionnaire:
            is_active, question_id_active, question_name_active = get_active_form_model_name_and_id(
                manager)
            is_current_active = _is_same_questionnaire(question_id_active,
                                                       questionnaire)
            end_date = datetime.strptime(request.POST.get('end_date'),
                                         '%Y-%m-%dT%H:%M:%S')
            if is_current_active:
                _change_questionnaire_end_date(questionnaire, end_date)
                return HttpResponse(json.dumps({'success': True}))
            elif not is_active and not is_current_active:
                _change_questionnaire_status(questionnaire, "active")
                _change_questionnaire_end_date(questionnaire, end_date)
                UserActivityLog().log(request,
                                      action=ACTIVATE_POLL,
                                      project=questionnaire.name,
                                      detail=questionnaire.name)
                return HttpResponse(json.dumps({'success': True}))
            message = _(
                "To activate the Poll you must first deactivate your current Poll %s. You may only have one active Poll at a time."
            ) % question_name_active
            return HttpResponse(
                json.dumps({
                    'success': False,
                    'message': message,
                    'question_id_active': question_id_active,
                    'question_name_active': question_name_active
                }))
        return HttpResponse(
            json.dumps({
                'success': False,
                'message': "No Such questionnaire"
            }))