Beispiel #1
0
def delete_resource(request, resource_id):

    user = request.user
    resource = get_object_or_404(Resource, id=resource_id)
    c_type = ContentType.objects.get_for_model(Resource)
    output = {}

    user_data = additional_user_info(request)

    if resource.created_by_id != user.id:
        return HttpResponse('Unauthorized', status=401)

    resource.delete()

    # delete associated data
    Descriptor.objects.filter(object_id=resource_id,
                              content_type=c_type).delete()
    Keyword.objects.filter(object_id=resource_id, content_type=c_type).delete()
    ResourceThematic.objects.filter(object_id=resource_id,
                                    content_type=c_type).delete()

    output['alert'] = _("Resource deleted.")
    output['alerttype'] = "alert-success"

    return render_to_response('main/resources.html',
                              output,
                              context_instance=RequestContext(request))
Beispiel #2
0
def widgets(request):
    output = {}

    current_user = request.user
    user_data = additional_user_info(request)
    user_roles = ['']
    user_roles.extend([role for role in user_data['service_role'].values()])
    institution_id = ''

    # retrive text blocks
    text_blocks = TextBlock.objects.filter(
        slot='dashboard', user_profile__in=user_roles).order_by('order')

    if 'DirIns' in user_data['service_role']:
        try:
            institution_id = Institution.objects.get(
                cc_code=user_data['user_cc']).id
        except Institution.DoesNotExist:
            institution_id = None

    try:
        dedup_response = requests.get(settings.DEDUP_SERVICE_URL)
        output['dedup_is_unavailable'] = (dedup_response.status_code >= 400)
    except (ConnectionError, HTTPError, SSLError, Timeout):
        output['dedup_is_unavailable'] = True

    output['institution_id'] = institution_id
    output['text_blocks'] = text_blocks

    return render_to_response('dashboard/index.html',
                              output,
                              context_instance=RequestContext(request))
Beispiel #3
0
    def get_queryset(self):
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])


        # search filter
        search = self.actions['s']
        search_filter = Q(name__icontains=search) | Q(cc_code__icontains=search) | Q(acronym__icontains=search)

        object_list = self.model.objects.filter(search_filter)

        if self.actions['filter_status'] != '':
            object_list = object_list.filter(status=self.actions['filter_status'])

        if self.actions['order'] == "-":
            object_list = object_list.order_by("%s%s" % (self.actions["order"], self.actions["orderby"]))

        # filter by institution of user
        if self.actions['filter_owner'] != "*":
            object_list = object_list.filter(cc_code=user_data['user_cc'])

        return object_list
Beispiel #4
0
    def get_context_data(self, **kwargs):
        context = super(InstUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')
        user_id = self.request.user.id
        if self.object:
            user_data['is_owner'] = True if self.object.created_by == self.request.user else False

        context['user_data'] = user_data
        context['user_role'] = user_role

        # create flag that control if user have permission to edit the reference
        context['user_can_edit'] = True if not self.object or self.object.cooperative_center_code in ['BR1.1', user_data['user_cc']] else False
        if user_role == 'doc':
            context['user_can_change_status'] = False
        else:
            context['user_can_change_status'] = True

        context['settings'] = settings
        context['help_fields'] = get_help_fields('institution')

        if self.object:
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        if self.request.method == 'GET':
            context['formset_person'] = PersonFormSet(instance=self.object)
            context['formset_phone'] = PhoneFormSet(instance=self.object)
            context['formset_email'] = EmailFormSet(instance=self.object)
            context['formset_url'] = URLFormSet(instance=self.object)
            context['formset_adm'] = AdmFormSet(instance=self.object)
            context['formset_unitlevel'] = UnitLevelFormSet(instance=self.object)

        return context
Beispiel #5
0
    def get_context_data(self, **kwargs):
        context = super(MultimediaListView, self).get_context_data(**kwargs)
        cc_filter_list = []
        user_filter_list = []

        user_data = additional_user_info(self.request)

        thematic_list = ThematicArea.objects.all().order_by('name')
        user_list = User.objects.filter(
            is_superuser=False).order_by('username')
        # mantain in user filter list only users from the same CCS (CC's in the network) as request.user
        for user in user_list:
            user_cc = user.profile.get_attribute('cc')
            if user_cc == user_data['user_cc'] or user_cc in user_data['ccs']:
                user_filter_list.append(user)

        cc_filter_list = user_data['ccs']
        # remove duplications from list
        cc_filter_list = list(set(cc_filter_list))
        cc_filter_list.sort()

        show_advaced_filters = self.request.GET.get('apply_filters', False)

        context['cc_filter_list'] = cc_filter_list
        context['user_filter_list'] = user_filter_list
        context['thematic_list'] = thematic_list
        context['show_advaced_filters'] = show_advaced_filters
        context['actions'] = self.actions
        return context
Beispiel #6
0
    def get_form_kwargs(self):
        kwargs = super(OERUpdate, self).get_form_kwargs()

        user_data = additional_user_info(self.request)
        kwargs.update({'user': self.request.user, 'user_data': user_data})

        return kwargs
Beispiel #7
0
def create_resource_from_suggestion(request, suggestion_id):

    user = request.user
    suggestion = get_object_or_404(SuggestResource, id=suggestion_id)
    output = {}

    user_data = additional_user_info(request)

    resource = Resource(title=suggestion.title,
                        link=suggestion.link,
                        abstract=suggestion.abstract,
                        created_by=request.user)
    resource.save()

    for tag in suggestion.keywords.split(','):
        keyword = Keyword(content_object=resource,
                          text=tag.strip(),
                          user_recomendation=True)
        keyword.save()

    suggestion.status = 1
    suggestion.save()

    output['alert'] = _("Resource created.")
    output['alerttype'] = "alert-success"

    return redirect('main.views.create_edit_resource', resource_id=resource.id)
Beispiel #8
0
def list_events(request):

    user = request.user
    output = {}
    delete_id = request.POST.get('delete_id')

    if delete_id:
        delete_event(request, delete_id)

    # getting action parameters
    actions = {}
    for key in ACTIONS.keys():
        if request.REQUEST.get(key):
            actions[key] = request.REQUEST.get(key)
        else:
            actions[key] = ACTIONS[key]

    page = 1
    if actions['page'] and actions['page'] != '':
        page = actions['page']

    user_data = additional_user_info(request)
    events = Event.objects.filter(title__icontains=actions['s'])

    if actions['filter_status'] != '':
        events = events.filter(status=actions['filter_status'])

    if actions['filter_thematic'] != '':
        actions['filter_thematic'] = int(actions['filter_thematic'])
        events = events.filter(thematics__thematic_area=actions['filter_thematic'])


    events = events.order_by(actions["orderby"])
    if actions['order'] == "-":
        events = events.order_by("%s%s" % (actions["order"], actions["orderby"]))

    if actions['filter_owner'] == "network":        
        events = events.filter(cooperative_center_code__in=user_data['ccs'])
    elif actions['filter_owner'] != "*":
        events = events.filter(created_by=request.user)
    else:
        events = events.all()

    # populate thematic list for filter
    thematic_list = ThematicArea.objects.all().order_by('name')

    # pagination
    pagination = {}
    paginator = Paginator(events, settings.ITEMS_PER_PAGE)
    pagination['paginator'] = paginator
    pagination['page'] = paginator.page(page)
    events = pagination['page'].object_list

    output['events'] = events
    output['thematic_list'] = thematic_list
    output['actions'] = actions
    output['pagination'] = pagination
    output['user_data'] = user_data

    return render_to_response('events/events.html', output, context_instance=RequestContext(request))
Beispiel #9
0
    def get_queryset(self):
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])

        # search filter
        search = self.actions['s']
        search_filter = Q(name__icontains=search) | Q(
            cc_code__icontains=search) | Q(acronym__icontains=search)

        object_list = self.model.objects.filter(search_filter)

        if self.actions['filter_status'] != '':
            object_list = object_list.filter(
                status=self.actions['filter_status'])

        if self.actions['order'] == "-":
            object_list = object_list.order_by(
                "%s%s" % (self.actions["order"], self.actions["orderby"]))

        # filter by institution of user
        if self.actions['filter_owner'] != "*":
            object_list = object_list.filter(cc_code=user_data['user_cc'])

        return object_list
Beispiel #10
0
    def get_form_kwargs(self):
        kwargs = super(LeisRefUpdate, self).get_form_kwargs()

        user_data = additional_user_info(self.request)
        kwargs.update({'user': self.request.user, 'user_data': user_data})

        return kwargs
Beispiel #11
0
    def get_context_data(self, **kwargs):
        context = super(ReportsListView, self).get_context_data(**kwargs)
        cc_filter_list = []
        user_filter_list = []

        user_data = additional_user_info(self.request)

        report = self.request.GET.get('report', None)

        thematic_list = ThematicArea.objects.all().order_by('name')
        user_list = User.objects.filter(is_superuser=False).order_by('username')
        # mantain in user filter list only users from the same CCS (CC's in the network) as request.user
        for user in user_list:
            user_cc = user.profile.get_attribute('cc')
            if user_cc == user_data['user_cc'] or user_cc in user_data['ccs']:
                user_filter_list.append(user)

        cc_filter_list = user_data['ccs']
        # remove duplications from list
        cc_filter_list = list(set(cc_filter_list))
        cc_filter_list.sort()

        show_advaced_filters = self.request.GET.get('apply_filters', False)

        context['cc_filter_list'] = cc_filter_list
        context['user_filter_list'] = user_filter_list
        context['thematic_list'] = thematic_list
        context['show_advaced_filters'] = show_advaced_filters
        context['title'] = u'export'
        context['params'] = self.request.GET

        return context
Beispiel #12
0
    def get_context_data(self, **kwargs):
        context = super(BiblioRefGenericListView,
                        self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LILDBI')
        source_id = self.request.GET.get('source')

        # change defaults filter for indexed tab
        if self.actions['filter_owner'] == 'indexed':
            if self.actions['filter_status'] == '':
                self.actions['filter_status'] = '0'
            if self.actions['document_type'] == '':
                self.actions['document_type'] = 'Sas'

        context['actions'] = self.actions
        context['document_type'] = self.request.GET.get('document_type')
        context['source_id'] = self.request.GET.get('source')
        context['user_role'] = user_role
        context['indexed_database_list'] = Database.objects.all().order_by(
            'name')
        if source_id:
            context['reference_source'] = ReferenceSource.objects.get(
                pk=source_id)

        return context
Beispiel #13
0
    def form_valid(self, form):
        formset_person = PersonFormSet(self.request.POST, instance=self.object)
        formset_phone = PhoneFormSet(self.request.POST, instance=self.object)
        formset_email = EmailFormSet(self.request.POST, instance=self.object)
        formset_url = URLFormSet(self.request.POST, instance=self.object)
        formset_unitlevel = UnitLevelFormSet(self.request.POST,
                                             instance=self.object)
        formset_adm = AdmFormSet(self.request.POST, instance=self.object)

        # run all validation before for display formset errors at form
        form_valid = form.is_valid()

        formset_person_valid = formset_person.is_valid()
        formset_phone_valid = formset_phone.is_valid()
        formset_email_valid = formset_email.is_valid()
        formset_url_valid = formset_url.is_valid()
        formset_unitlevel_valid = formset_unitlevel.is_valid()
        formset_adm_valid = formset_adm.is_valid()

        user_data = additional_user_info(self.request)

        if (form_valid and formset_person_valid and formset_phone_valid
                and formset_email_valid and formset_url_valid
                and formset_unitlevel_valid and formset_adm_valid):

            self.object = form.save()

            formset_person.instance = self.object
            formset_person.save()

            formset_phone.instance = self.object
            formset_phone.save()

            formset_email.instance = self.object
            formset_email.save()

            formset_url.instance = self.object
            formset_url.save()

            formset_unitlevel.instance = self.object
            formset_unitlevel.save()

            formset_adm.instance = self.object
            formset_adm.save()

            # update solr index
            form.save()
            # save many-to-many relation fields
            form.save_m2m()

            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(
                self.get_context_data(form=form,
                                      formset_person=formset_person,
                                      formset_phone=formset_phone,
                                      formset_email=formset_email,
                                      formset_url=formset_url,
                                      formset_adm=formset_adm,
                                      formset_unitlevel=formset_unitlevel))
Beispiel #14
0
    def get_context_data(self, **kwargs):
        context = super(MediaUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('Multimedia')
        user_id = self.request.user.id
        if self.object:
            user_data[
                'is_owner'] = True if self.object.created_by == self.request.user else False
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        context['user_data'] = user_data
        context['role'] = user_role
        context['settings'] = settings
        context['help_fields'] = get_help_fields('multimedia')

        if self.request.method == 'GET':
            # special treatment for user of type documentalist is edit media from other user
            # add in the context list of descriptor, keyword and thematic already set for the media
            if user_role == 'doc' and self.object:
                c_type = ContentType.objects.get_for_model(self.get_object())

                context['descriptor_list'] = Descriptor.objects.filter(
                    object_id=self.object.id,
                    content_type=c_type).exclude(created_by_id=user_id,
                                                 status=0)
                context['keyword_list'] = Keyword.objects.filter(
                    object_id=self.object.id,
                    content_type=c_type).exclude(created_by_id=user_id,
                                                 status=0)
                context['thematic_list'] = ResourceThematic.objects.filter(
                    object_id=self.object.id,
                    content_type=c_type).exclude(created_by_id=user_id,
                                                 status=0)

                pending_descriptor_from_user = Descriptor.objects.filter(
                    created_by_id=self.request.user.id, status=0)
                pending_keyword_from_user = Keyword.objects.filter(
                    created_by_id=user_id, status=0)
                pending_thematic_from_user = ResourceThematic.objects.filter(
                    created_by_id=user_id, status=0)

                context['formset_descriptor'] = DescriptorFormSet(
                    instance=self.object,
                    queryset=pending_descriptor_from_user)
                context['formset_keyword'] = KeywordFormSet(
                    instance=self.object, queryset=pending_keyword_from_user)
                context['formset_thematic'] = ResourceThematicFormSet(
                    instance=self.object, queryset=pending_thematic_from_user)
            else:
                context['formset_descriptor'] = DescriptorFormSet(
                    instance=self.object)
                context['formset_keyword'] = KeywordFormSet(
                    instance=self.object)
                context['formset_thematic'] = ResourceThematicFormSet(
                    instance=self.object)

        return context
Beispiel #15
0
    def get_context_data(self, **kwargs):
        context = super(TitleUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('Title')
        user_id = self.request.user.id
        if self.object:
            user_data['is_owner'] = True if self.object.created_by == self.request.user else False

        context['user_data'] = user_data
        context['role'] = user_role
        context['settings'] = settings

        if Title.objects.count() > 0:
            context['next_id'] = Title.objects.latest('id').id + 1
        else:
            context['next_id'] = 1


        if self.request.method == 'GET':
            # special treatment for user of type documentalist is edit title from other user
            # add in the context list of descriptor already set for the title
            if user_role == 'doc' and self.object:
                c_type = ContentType.objects.get_for_model(self.get_object())

                context['descriptor_list'] = Descriptor.objects.filter(
                                                    object_id=self.object.id,
                                                    content_type=c_type).exclude(
                                                    created_by_id=user_id, status=0)
                context['keyword_list'] = Keyword.objects.filter(
                                                    object_id=self.object.id,
                                                    content_type=c_type).exclude(
                                                    created_by_id=user_id, status=0)

                pending_descriptor_from_user = Descriptor.objects.filter(
                                                    created_by_id=self.request.user.id, status=0)
                pending_keyword_from_user = Keyword.objects.filter(
                                                    created_by_id=user_id, status=0)

                context['formset_descriptor'] = DescriptorFormSet(instance=self.object,
                                                    queryset=pending_descriptor_from_user)
                context['formset_keyword']  = KeywordFormSet(instance=self.object,
                                                    queryset=pending_keyword_from_user)

                context['formset_links'] = OnlineResourcesFormSet(instance=self.object)
                context['formset_specialty'] = BVSSpecialtyFormSet(instance=self.object)
                context['formset_variance'] = TitleVarianceFormSet(instance=self.object)
                context['formset_indexrange'] = IndexRangeFormSet(instance=self.object)
                context['formset_audit'] = AuditFormSet(instance=self.object)
            else:
                context['formset_links'] = OnlineResourcesFormSet(instance=self.object)
                context['formset_specialty'] = BVSSpecialtyFormSet(instance=self.object)
                context['formset_variance'] = TitleVarianceFormSet(instance=self.object)
                context['formset_indexrange'] = IndexRangeFormSet(instance=self.object)
                context['formset_audit'] = AuditFormSet(instance=self.object)
                context['formset_descriptor'] = DescriptorFormSet(instance=self.object)
                context['formset_keyword'] = KeywordFormSet(instance=self.object)

        return context
Beispiel #16
0
    def get_context_data(self, **kwargs):
        context = super(BiblioRefUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LILDBI')
        user_id = self.request.user.id
        if self.object:
            user_data['is_owner'] = True if self.object.created_by == self.request.user else False

        context['user_data'] = user_data
        context['user_role'] = user_role

        # create flag that control if user have permission to edit the reference
        if user_role == 'editor_llxp':
            context['user_can_edit'] = True if not self.object or (self.object.status != 1 and self.object.cooperative_center_code == user_data['user_cc']) else False
            context['user_can_change_status'] = False
        elif user_role == 'doc':
            context['user_can_edit'] = True if not self.object or self.object.status < 1 or (self.object.status != 1 and self.object.cooperative_center_code == user_data['user_cc']) else False
            context['user_can_change_status'] = False
        else:
            context['user_can_edit'] = True
            context['user_can_change_status'] = True

        context['settings'] = settings
        context['help_fields'] = get_help_fields('biblioref')

        if self.object:
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        if self.request.method == 'GET':
            context['formset_descriptor'] = DescriptorFormSet(instance=self.object)
            context['formset_attachment'] = AttachmentFormSet(instance=self.object)
            context['formset_library'] = LibraryFormSet(instance=self.object,
                                                        queryset=ReferenceLocal.objects.filter(cooperative_center_code=user_data['user_cc']))
            context['formset_complement'] = ComplementFormSet(instance=self.object)

        # source/analytic edition
        if self.object:
            context['document_type'] = "{0}{1}".format(self.object.literature_type, self.object.treatment_level)
        # new source
        else:
            document_type = self.request.GET.get('document_type')
            source_id = self.request.GET.get('source')

            if document_type:
                context['document_type'] = document_type
            elif source_id:
                reference_source = ReferenceSource.objects.get(pk=source_id)
                literature_type = reference_source.literature_type
                if literature_type == 'S':
                    document_type = 'Sas'
                else:
                    document_type = "{0}am".format(literature_type)

                context['document_type'] = document_type


        return context
Beispiel #17
0
    def form_valid(self, form):
        formset_person = PersonFormSet(self.request.POST, instance=self.object)
        formset_phone = PhoneFormSet(self.request.POST, instance=self.object)
        formset_email = EmailFormSet(self.request.POST, instance=self.object)
        formset_url = URLFormSet(self.request.POST, instance=self.object)
        formset_unitlevel = UnitLevelFormSet(self.request.POST, instance=self.object)
        formset_adm = AdmFormSet(self.request.POST, instance=self.object)

        # run all validation before for display formset errors at form
        form_valid = form.is_valid()

        formset_person_valid = formset_person.is_valid()
        formset_phone_valid = formset_phone.is_valid()
        formset_email_valid = formset_email.is_valid()
        formset_url_valid = formset_url.is_valid()
        formset_unitlevel_valid = formset_unitlevel.is_valid()
        formset_adm_valid = formset_adm.is_valid()

        user_data = additional_user_info(self.request)

        if (form_valid and formset_person_valid and formset_phone_valid and
            formset_email_valid and formset_url_valid and formset_unitlevel_valid and
            formset_adm_valid):

                self.object = form.save()

                formset_person.instance = self.object
                formset_person.save()

                formset_phone.instance = self.object
                formset_phone.save()

                formset_email.instance = self.object
                formset_email.save()

                formset_url.instance = self.object
                formset_url.save()

                formset_unitlevel.instance = self.object
                formset_unitlevel.save()

                formset_adm.instance = self.object
                formset_adm.save()

                # update solr index
                form.save()
                # save many-to-many relation fields
                form.save_m2m()

                return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(
                           self.get_context_data(form=form,
                                                 formset_person=formset_person,
                                                 formset_phone=formset_phone,
                                                 formset_email=formset_email,
                                                 formset_url=formset_url,
                                                 formset_adm=formset_adm,
                                                 formset_unitlevel=formset_unitlevel))
Beispiel #18
0
    def dispatch(self, *args, **kwargs):
        user_data = additional_user_info(self.request)
        user_cc = user_data.get('user_cc')
        # restrict delete of institution to BIREME (BR1.1)
        if user_cc != 'BR1.1':
            return HttpResponseForbidden()

        return super(InstCreateView, self).dispatch(*args, **kwargs)
Beispiel #19
0
    def form_valid(self, form):
        formset_descriptor = DescriptorFormSet(self.request.POST,
                                               instance=self.object)
        formset_url = URLFormSet(self.request.POST, instance=self.object)
        formset_attachment = AttachmentFormSet(self.request.POST,
                                               self.request.FILES,
                                               instance=self.object)
        formset_relation = RelationFormSet(self.request.POST,
                                           instance=self.object)
        formset_thematic = ResourceThematicFormSet(self.request.POST,
                                                   instance=self.object)

        # run all validation before for display formset errors at form
        form_valid = form.is_valid()

        formset_descriptor_valid = formset_descriptor.is_valid()
        formset_attachment_valid = formset_attachment.is_valid()
        formset_thematic_valid = formset_thematic.is_valid()
        formset_relation_valid = formset_relation.is_valid()
        formset_url_valid = formset_url.is_valid()

        user_data = additional_user_info(self.request)

        if (form_valid and formset_descriptor_valid and formset_url_valid
                and formset_thematic_valid and formset_attachment_valid
                and formset_relation_valid):

            self.object = form.save()

            formset_descriptor.instance = self.object
            formset_descriptor.save()

            formset_attachment.instance = self.object
            formset_attachment.save()

            formset_url.instance = self.object
            formset_url.save()

            formset_relation.instance = self.object
            formset_relation.save()

            formset_thematic.instance = self.object
            formset_thematic.save()

            # save many-to-many relation fields
            form.save_m2m()
            # update solr index
            form.save()

            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(
                self.get_context_data(form=form,
                                      formset_descriptor=formset_descriptor,
                                      formset_attachment=formset_attachment,
                                      formset_url=formset_url,
                                      formset_relation=formset_relation,
                                      formset_thematic=formset_thematic))
Beispiel #20
0
    def get_context_data(self, **kwargs):
        context = super(LeisRefGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LeisRef')

        context['actions'] = self.actions
        context['user_role'] = user_role

        return context
Beispiel #21
0
    def get_context_data(self, **kwargs):
        context = super(InstGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')

        context['actions'] = self.actions
        context['user_role'] = user_role

        return context
Beispiel #22
0
    def get_queryset(self):

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LeisRef')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])

        search_field = self.search_field + '__icontains'

        # search by field
        search = self.actions['s']
        if ':' in search:
            search_parts = search.split(':')
            search_field = search_parts[0] + '__icontains'
            search = search_parts[1]

        filter_qs = Q(**{search_field: search})
        # if Act model search also by title and denomination fields
        if self.search_field == 'act_number':
            filter_qs = filter_qs | Q(title__icontains=search) | Q(
                denomination__icontains=search)

        object_list = self.model.objects.filter(filter_qs)
        # filter by status
        if self.actions['filter_status'] != '':
            object_list = object_list.filter(
                status=self.actions['filter_status'])
        # filter by scope region country
        if self.actions['filter_country'] != '':
            object_list = object_list.filter(
                scope_region=self.actions['filter_country'])
        # filter by indexed database
        if self.actions['filter_indexed_database'] != '':
            object_list = object_list.filter(
                indexed_database=self.actions['filter_indexed_database'])
        # filter by act_type
        if self.actions['filter_act_type'] != '':
            object_list = object_list.filter(
                act_type=self.actions['filter_act_type'])

        # order
        if self.actions['order'] == "-":
            object_list = object_list.order_by(
                "%s%s" % (self.actions["order"], self.actions["orderby"]))

        # filter by user
        if self.restrict_by_user and self.actions['filter_owner'] != "*":
            object_list = object_list.filter(created_by=self.request.user)

        if self.actions['results_per_page'] != '':
            self.paginate_by = self.actions['results_per_page']

        return object_list
Beispiel #23
0
    def get_form_kwargs(self):
        kwargs = super(BiblioRefUpdate, self).get_form_kwargs()
        document_type = ''
        reference_source = None

        source_id = self.request.GET.get('source', None)
        # new analytic
        if source_id:
            reference_source = ReferenceSource.objects.get(pk=source_id)
            literature_type = reference_source.literature_type
            treatment_level = reference_source.treatment_level
            # remove congress/project from literature_type
            literature_type = re.sub('[CP]', '', literature_type)

            if literature_type == 'S':
                document_type = 'Sas'
            else:
                if 'c' in treatment_level:
                    document_type = "{0}amc".format(literature_type)
                elif 's' in treatment_level:
                    document_type = "{0}ams".format(literature_type)
                else:
                    document_type = "{0}am".format(literature_type)

        # edition/new source
        else:
            # source/analytic edition
            if self.object:
                if hasattr(self.object, 'source'):
                    reference_source = self.object.source

                # remove congress/project from literature_type
                literature_type = re.sub('[CP]', '',
                                         self.object.literature_type)

                document_type = "{0}{1}".format(literature_type,
                                                self.object.treatment_level)
            # new source
            else:
                document_type = self.request.GET.get('document_type')

        # get list of fields allowed by document_type
        fieldsets = FIELDS_BY_DOCUMENT_TYPE.get(document_type, None)

        user_data = additional_user_info(self.request)

        additional_form_parameters = {}
        additional_form_parameters['user'] = self.request.user
        additional_form_parameters['user_data'] = user_data
        additional_form_parameters['fieldsets'] = fieldsets
        additional_form_parameters['document_type'] = document_type
        additional_form_parameters['reference_source'] = reference_source

        kwargs.update(additional_form_parameters)

        return kwargs
Beispiel #24
0
    def get_context_data(self, **kwargs):
        context = super(MediaUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('Multimedia')
        user_id = self.request.user.id
        if self.object:
            user_data['is_owner'] = True if self.object.created_by == self.request.user else False
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        context['user_data'] = user_data
        context['role'] = user_role
        context['settings'] = settings
        context['help_fields'] = get_help_fields('multimedia')

        if self.request.method == 'GET':
            # special treatment for user of type documentalist is edit media from other user
            # add in the context list of descriptor, keyword and thematic already set for the media
            if user_role == 'doc' and self.object:
                c_type = ContentType.objects.get_for_model(self.get_object())

                context['descriptor_list'] = Descriptor.objects.filter(
                                                    object_id=self.object.id,
                                                    content_type=c_type).exclude(
                                                    created_by_id=user_id, status=0)
                context['keyword_list'] = Keyword.objects.filter(
                                                    object_id=self.object.id,
                                                    content_type=c_type).exclude(
                                                    created_by_id=user_id, status=0)
                context['thematic_list'] = ResourceThematic.objects.filter(
                                                    object_id=self.object.id,
                                                    content_type=c_type).exclude(
                                                    created_by_id=user_id, status=0)

                pending_descriptor_from_user = Descriptor.objects.filter(
                                                    created_by_id=self.request.user.id, status=0)
                pending_keyword_from_user = Keyword.objects.filter(
                                                    created_by_id=user_id, status=0)
                pending_thematic_from_user = ResourceThematic.objects.filter(
                                                    created_by_id=user_id, status=0)

                context['formset_descriptor'] = DescriptorFormSet(instance=self.object,
                                                                  queryset=pending_descriptor_from_user)
                context['formset_keyword'] = KeywordFormSet(instance=self.object,
                                                            queryset=pending_keyword_from_user)
                context['formset_thematic'] = ResourceThematicFormSet(instance=self.object,
                                                                      queryset=pending_thematic_from_user)
            else:
                context['formset_descriptor'] = DescriptorFormSet(instance=self.object)
                context['formset_keyword'] = KeywordFormSet(instance=self.object)
                context['formset_thematic'] = ResourceThematicFormSet(instance=self.object)

            context['formset_attachment'] = AttachmentFormSet(instance=self.object)

        return context
Beispiel #25
0
    def get_success_url(self):
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LILDBI')

        if user_role == 'editor_llxp':
            redirect_url = "%s?document_type=S" % reverse_lazy('list_biblioref_sources')
        else:
            redirect_url = self.success_url

        return redirect_url
Beispiel #26
0
    def get_form_kwargs(self):
        kwargs = super(BiblioRefUpdate, self).get_form_kwargs()
        document_type = ''
        reference_source = None

        source_id = self.request.GET.get('source', None)
        # new analytic
        if source_id:
            reference_source = ReferenceSource.objects.get(pk=source_id)
            literature_type = reference_source.literature_type
            treatment_level = reference_source.treatment_level
            # remove congress/project from literature_type
            literature_type = re.sub('[CP]', '', literature_type)

            if literature_type == 'S':
                document_type = 'Sas'
            else:
                if 'c' in treatment_level:
                    document_type = "{0}amc".format(literature_type)
                elif 's' in treatment_level:
                    document_type = "{0}ams".format(literature_type)
                else:
                    document_type = "{0}am".format(literature_type)

        # edition/new source
        else:
            # source/analytic edition
            if self.object:
                if hasattr(self.object, 'source'):
                    reference_source = self.object.source

                # remove congress/project from literature_type
                literature_type = re.sub('[CP]', '', self.object.literature_type)

                document_type = "{0}{1}".format(literature_type, self.object.treatment_level)
            # new source
            else:
                document_type = self.request.GET.get('document_type')


        # get list of fields allowed by document_type
        fieldsets = FIELDS_BY_DOCUMENT_TYPE.get(document_type, None)

        user_data = additional_user_info(self.request)

        additional_form_parameters = {}
        additional_form_parameters['user'] = self.request.user
        additional_form_parameters['user_data'] = user_data
        additional_form_parameters['fieldsets'] = fieldsets
        additional_form_parameters['document_type'] = document_type
        additional_form_parameters['reference_source'] = reference_source

        kwargs.update(additional_form_parameters)

        return kwargs
Beispiel #27
0
    def get_context_data(self, **kwargs):
        context = super(OERUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('OER')
        user_id = self.request.user.id
        if self.object:
            user_data[
                'is_owner'] = True if self.object.created_by == self.request.user else False

        context['user_data'] = user_data
        context['user_role'] = user_role

        # create flag that control if user have permission to edit the reference
        if user_role == 'doc':
            # documentalist can create and edit your own records
            context['user_can_edit'] = True if not self.object or (
                (self.object.created_by == self.request.user)
                and self.object.status < 1) else False
            context['user_can_change_status'] = False
        elif user_role == 'edi':
            # editor can create, edit and change status (publish) your and institution records
            context[
                'user_can_edit'] = True if not self.object or self.object.cooperative_center_code == user_data[
                    'user_cc'] else False
            context[
                'user_can_change_status'] = True if not self.object or self.object.cooperative_center_code == user_data[
                    'user_cc'] else False

        context['settings'] = settings
        context['help_fields'] = get_help_fields('oer')
        context['mandatory_fields'] = [
            'learning_objectives', 'description', 'type', 'learning_context',
            'language', 'creator', 'license'
        ]

        if self.object:
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        if self.request.method == 'GET':
            context['formset_descriptor'] = DescriptorFormSet(
                instance=self.object)
            context['formset_attachment'] = AttachmentFormSet(
                instance=self.object)
            context['formset_url'] = URLFormSet(instance=self.object)
            context['formset_relation'] = RelationFormSet(instance=self.object)
            context['formset_thematic'] = ResourceThematicFormSet(
                instance=self.object)

        if self.object:
            context['passive_relationship'] = Relationship.objects.filter(
                oer_referred=self.object)

        return context
Beispiel #28
0
    def get_success_url(self):
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LILDBI')

        if user_role == 'editor_llxp':
            redirect_url = "%s?document_type=S" % reverse_lazy(
                'list_biblioref_sources')
        else:
            redirect_url = self.success_url

        return redirect_url
Beispiel #29
0
    def get_form_kwargs(self):
        kwargs = super(InstUpdate, self).get_form_kwargs()

        user_data = additional_user_info(self.request)

        additional_form_parameters = {}
        additional_form_parameters['user_data'] = user_data

        kwargs.update(additional_form_parameters)

        return kwargs
Beispiel #30
0
    def form_valid(self, form):
        formset_descriptor = DescriptorFormSet(self.request.POST, instance=self.object)
        formset_url = URLFormSet(self.request.POST, instance=self.object)
        formset_attachment = AttachmentFormSet(self.request.POST, self.request.FILES, instance=self.object)
        formset_relation = RelationFormSet(self.request.POST, instance=self.object)
        formset_thematic = ResourceThematicFormSet(self.request.POST, instance=self.object)

        # run all validation before for display formset errors at form
        form_valid = form.is_valid()

        formset_descriptor_valid = formset_descriptor.is_valid()
        formset_attachment_valid = formset_attachment.is_valid()
        formset_thematic_valid = formset_thematic.is_valid()
        formset_relation_valid = formset_relation.is_valid()
        formset_url_valid = formset_url.is_valid()

        user_data = additional_user_info(self.request)
        # run cross formsets validations
        valid_for_publication = is_valid_for_publication(form,
                                                         [formset_descriptor, formset_thematic])

        if (form_valid and formset_descriptor_valid and formset_url_valid and formset_thematic_valid and
           formset_attachment_valid and formset_relation_valid and valid_for_publication):

                self.object = form.save()

                formset_descriptor.instance = self.object
                formset_descriptor.save()

                formset_attachment.instance = self.object
                formset_attachment.save()

                formset_url.instance = self.object
                formset_url.save()

                formset_relation.instance = self.object
                formset_relation.save()

                formset_thematic.instance = self.object
                formset_thematic.save()

                # update solr index
                # form.save()
                form.save_m2m()
                return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(
                           self.get_context_data(form=form,
                                                 formset_descriptor=formset_descriptor,
                                                 formset_attachment=formset_attachment,
                                                 formset_url=formset_url,
                                                 formset_relation=formset_relation,
                                                 formset_thematic=formset_thematic,
                                                 valid_for_publication=valid_for_publication))
Beispiel #31
0
    def dispatch(self, *args, **kwargs):
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')
        user_type = user_data.get('user_type')
        # save current filter in session
        self.request.session["filtered_list"] = self.request.get_full_path()
        # restrict institution module to advanced users with DirIns permission
        if user_type != 'advanced' or not user_role:
            return HttpResponseForbidden()

        return super(InstGenericListView, self).dispatch(*args, **kwargs)
Beispiel #32
0
    def get_form_kwargs(self):
        kwargs = super(InstUpdate, self).get_form_kwargs()

        user_data = additional_user_info(self.request)

        additional_form_parameters = {}
        additional_form_parameters['user_data'] = user_data

        kwargs.update(additional_form_parameters)

        return kwargs
Beispiel #33
0
    def get_context_data(self, **kwargs):
        context = super(LeisRefGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LeisRef')
        show_advaced_filters = self.request.GET.get('apply_filters', False)
        scope_region_list = ActCountryRegion.objects.all().order_by('name')

        context['actions'] = self.actions
        context['user_role'] = user_role
        context['scope_region_list'] = scope_region_list
        context['show_advaced_filters'] = show_advaced_filters

        return context
Beispiel #34
0
    def get_context_data(self, **kwargs):
        context = super(OERUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('OER')
        user_cc = user_data['user_cc']
        user_id = self.request.user.id
        user_cvsp_node = None
        if self.object:
            user_data['is_owner'] = True if self.object.created_by == self.request.user else False

            # check if user participate of CVSP network
            user_network = user_data['networks']
            user_cvsp_node = next((node.lower() for node in user_network if node.startswith('CVSP')), None)
            if user_cvsp_node:
                user_cvsp_node = user_cvsp_node.split("-",1)[1]

        # create flag that control if user have permission to edit the reference
        obj = self.object
        if user_role == 'doc':
            # documentalist can create and edit your own records
            context['user_can_edit'] = True if not obj or ((obj.created_by == self.request.user) and obj.status < 1) else False
            context['user_can_change_status'] = False
        elif user_role == 'edi':
            # editor can create, edit and change status (publish) for oer of same center code or CVSP node
            context['user_can_edit'] = True if not obj or obj.cooperative_center_code == user_cc or obj.cvsp_node == user_cvsp_node else False
            context['user_can_change_status'] = True if not obj or obj.cooperative_center_code == user_cc or obj.cvsp_node == user_cvsp_node else False

        context['user_data'] = user_data
        context['user_role'] = user_role
        context['settings'] = settings
        context['help_fields'] = get_help_fields('oer')
        context['mandatory_fields'] = ['learning_objectives', 'description', 'type', 'learning_context',
                                       'language', 'creator', 'license']

        if self.object:
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        if self.request.method == 'GET':
            context['formset_descriptor'] = DescriptorFormSet(instance=self.object)
            context['formset_attachment'] = AttachmentFormSet(instance=self.object)
            context['formset_url'] = URLFormSet(instance=self.object)
            context['formset_relation'] = RelationFormSet(instance=self.object)
            context['formset_thematic'] = ResourceThematicFormSet(instance=self.object)

        if self.object:
            context['passive_relationship'] = Relationship.objects.filter(oer_referred=self.object)


        return context
Beispiel #35
0
    def get_context_data(self, **kwargs):
        context = super(LeisRefUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LeisRef')
        user_id = self.request.user.id
        if self.object:
            user_data[
                'is_owner'] = True if self.object.created_by == self.request.user else False

        context['user_data'] = user_data
        context['user_role'] = user_role

        # create flag that control if user have permission to edit the reference
        if user_role == 'doc':
            context[
                'user_can_edit'] = True if not self.object or self.object.status == 0 or (
                    self.object.status != 1
                    and self.object.cooperative_center_code
                    == user_data['user_cc']) else False
            context['user_can_change_status'] = False
        else:
            context['user_can_edit'] = True
            context['user_can_change_status'] = True

        context['settings'] = settings
        context['help_fields'] = get_help_fields('leisref')
        context['indexing_fields'] = [
            'local_descriptors', 'local_geo_descriptors',
            'institution_as_subject'
        ]

        if self.object:
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        if self.request.method == 'GET':
            context['formset_descriptor'] = DescriptorFormSet(
                instance=self.object)
            context['formset_attachment'] = AttachmentFormSet(
                instance=self.object)
            context['formset_url'] = URLFormSet(instance=self.object)
            context['formset_relation'] = RelationFormSet(instance=self.object)
            context['formset_thematic'] = ResourceThematicFormSet(
                instance=self.object)

        if self.object:
            context['passive_relationship'] = ActRelationship.objects.filter(
                act_referred=self.object)

        return context
Beispiel #36
0
    def get_object(self, *args, **kwargs):
        obj = super(InstUpdate, self).get_object(*args, **kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')
        user_cc = user_data.get('user_cc')
        user_type = user_data.get('user_type')

        # restrict edition to BR1.1 users or advanced users with same CC code
        if user_cc != 'BR1.1':
            if user_cc != obj.cc_code or user_type != 'advanced':
                return None

        return obj
Beispiel #37
0
    def get_context_data(self, **kwargs):
        context = super(BiblioRefGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LILDBI')
        source_id = self.request.GET.get('source')

        context['actions'] = self.actions
        context['document_type'] = self.request.GET.get('document_type')
        context['source_id'] = self.request.GET.get('source')
        context['user_role'] = user_role
        if source_id:
            context['reference_source'] = ReferenceSource.objects.get(pk=source_id)

        return context
Beispiel #38
0
    def get_context_data(self, **kwargs):
        context = super(OERGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        show_advaced_filters = self.request.GET.get('apply_filters', False)
        user_role = user_data['service_role'].get('OER')
        cvsp_node_list = OER.objects.values_list('cvsp_node', flat=True).distinct()
        # remove empty values
        cvsp_node_list = filter(None, cvsp_node_list)

        context['actions'] = self.actions
        context['user_role'] = user_role
        context['cvsp_node_list'] = cvsp_node_list
        context['show_advaced_filters'] = show_advaced_filters

        return context
Beispiel #39
0
    def get_context_data(self, **kwargs):
        context = super(LeisRefGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LeisRef')
        show_advaced_filters = self.request.GET.get('apply_filters', False)
        scope_region_list = ActCountryRegion.objects.all().order_by('name')
        indexed_database_list = Database.objects.all().order_by('name')

        context['actions'] = self.actions
        context['user_role'] = user_role
        context['scope_region_list'] = scope_region_list
        context['show_advaced_filters'] = show_advaced_filters
        context['indexed_database_list'] = indexed_database_list

        return context
Beispiel #40
0
def dashboard(request):
    output = {}

    current_user = request.user
    recent_actions = LogEntry.objects.filter(user=current_user)[:20]
    user_data = additional_user_info(request)
    user_roles = ['']
    user_roles.extend([role for role in user_data['service_role'].values()])

    # retrive text blocks
    text_blocks = TextBlock.objects.filter(slot='dashboard', user_profile__in=user_roles).order_by('order')

    output['recent_actions'] = recent_actions
    output['text_blocks'] = text_blocks

    return render_to_response('main/index.html', output, context_instance=RequestContext(request))
Beispiel #41
0
    def get_context_data(self, **kwargs):
        context = super(OERGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        show_advaced_filters = self.request.GET.get('apply_filters', False)
        user_role = user_data['service_role'].get('OER')
        cvsp_node_list = OER.objects.values_list('cvsp_node',
                                                 flat=True).distinct()
        # remove empty values
        cvsp_node_list = filter(None, cvsp_node_list)

        context['actions'] = self.actions
        context['user_role'] = user_role
        context['cvsp_node_list'] = cvsp_node_list
        context['show_advaced_filters'] = show_advaced_filters

        return context
Beispiel #42
0
    def get_queryset(self):

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LeisRef')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])

        search_field = self.search_field + '__icontains'

        # search by field
        search = self.actions['s']
        if ':' in search:
            search_parts = search.split(':')
            search_field = search_parts[0] + '__icontains'
            search = search_parts[1]

        filter_qs = Q(**{search_field: search})
        # if Act model search also by title and denomination fields
        if self.search_field == 'act_number':
            filter_qs =  filter_qs | Q(title__icontains=search) | Q(denomination__icontains=search)

        object_list = self.model.objects.filter(filter_qs)
        # filter by status
        if self.actions['filter_status'] != '':
            object_list = object_list.filter(status=self.actions['filter_status'])
        # filter by scope region country
        if self.actions['filter_country'] != '':
            object_list = object_list.filter(scope_region=self.actions['filter_country'])
        # filter by indexed database
        if self.actions['filter_indexed_database'] != '':
            object_list = object_list.filter(indexed_database=self.actions['filter_indexed_database'])

        # order
        if self.actions['order'] == "-":
            object_list = object_list.order_by("%s%s" % (self.actions["order"], self.actions["orderby"]))

        # filter by user
        if self.restrict_by_user and self.actions['filter_owner'] != "*":
            object_list = object_list.filter(created_by=self.request.user)

        if self.actions['results_per_page'] != '':
            self.paginate_by = self.actions['results_per_page']

        return object_list
Beispiel #43
0
    def get_queryset(self):

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('OER')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])

        search_field = self.search_field + '__icontains'

        # search by field
        search = self.actions['s']
        if ':' in search:
            search_parts = search.split(':')
            search_field = search_parts[0] + '__icontains'
            search = search_parts[1]

        if search:
            object_list = self.model.objects.filter(**{search_field: search})
        else:
            object_list = self.model.objects.all()

        if self.actions['filter_status'] != '':
            object_list = object_list.filter(
                status=self.actions['filter_status'])

        # filter by scope region country
        if self.actions['filter_country'] != '':
            object_list = object_list.filter(
                cvsp_node=self.actions['filter_country'])

        if self.actions['order'] == "-":
            object_list = object_list.order_by(
                "%s%s" % (self.actions["order"], self.actions["orderby"]))

        # filter by user
        if not self.actions['filter_owner'] or self.actions[
                'filter_owner'] == 'user':
            object_list = object_list.filter(created_by=self.request.user)
        # filter by cooperative center
        elif self.actions['filter_owner'] == 'center':
            user_cc = self.request.user.profile.get_attribute('cc')
            object_list = object_list.filter(cooperative_center_code=user_cc)

        return object_list
Beispiel #44
0
def delete_error_report(request, error_report_id):

    user = request.user
    error_report = get_object_or_404(ErrorReport, id=error_report_id)
    output = {}

    user_data = additional_user_info(request)

    if error_report.created_by_id != user.id:
        return HttpResponse('Unauthorized', status=401)

    error_report.delete()

    output['alert'] = _("Report deleted.")
    output['alerttype'] = "alert-success"

    return render_to_response('error_reporting/list.html', output, context_instance=RequestContext(request))
Beispiel #45
0
def widgets(request):
    output = {}

    current_user = request.user
    user_data = additional_user_info(request)
    user_roles = ['']
    user_roles.extend([role for role in user_data['service_role'].values()])

    # retrive text blocks
    text_blocks = TextBlock.objects.filter(
        slot='dashboard', user_profile__in=user_roles).order_by('order')

    output['text_blocks'] = text_blocks

    return render_to_response('dashboard/index.html',
                              output,
                              context_instance=RequestContext(request))
Beispiel #46
0
    def get_queryset(self):
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')
        user_cc = user_data.get('user_cc')
        user_type = user_data.get('user_type')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])

        # search filter
        search = self.actions['s']
        if ':' in search:
            search_parts = search.split(':')
            search_field = search_parts[0]
            if search_field == 'user':
                search_field = 'adm__type_history'
            elif search_field == 'cat':
                search_field = 'adm__category_history'

            search_field, search = "%s%s" % (search_field,
                                             '__icontains'), search_parts[1]
            object_list = self.model.objects.filter(**{search_field: search})
        else:
            query_search = Q(name__icontains=search) | Q(
                cc_code__icontains=search) | Q(acronym__icontains=search)
            object_list = self.model.objects.filter(query_search)

        if self.actions['filter_status'] != '':
            object_list = object_list.filter(
                status=self.actions['filter_status'])

        if self.actions['filter_country'] != '':
            object_list = object_list.filter(
                country=self.actions['filter_country'])

        if self.actions['order'] == "-":
            object_list = object_list.order_by(
                "%s%s" % (self.actions["order"], self.actions["orderby"]))

        # filter by institution of user
        if self.actions['filter_owner'] != "*" or user_cc != 'BR1.1':
            object_list = object_list.filter(cc_code=user_cc)

        return object_list
Beispiel #47
0
    def form_valid(self, form):
        formset_contact = ContactFormSet(self.request.POST,
                                         instance=self.object)
        formset_url = URLFormSet(self.request.POST, instance=self.object)
        formset_unitlevel = UnitLevelFormSet(self.request.POST,
                                             instance=self.object)
        formset_adm = AdmFormSet(self.request.POST, instance=self.object)

        # run all validation before for display formset errors at form
        form_valid = form.is_valid()

        formset_contact_valid = formset_contact.is_valid()
        formset_url_valid = formset_url.is_valid()
        formset_unitlevel_valid = formset_unitlevel.is_valid()
        formset_adm_valid = formset_adm.is_valid()

        user_data = additional_user_info(self.request)

        if (form_valid and formset_contact_valid and formset_url_valid
                and formset_unitlevel_valid and formset_adm_valid):

            self.object = form.save()

            formset_contact.instance = self.object
            formset_contact.save()

            formset_url.instance = self.object
            formset_url.save()

            formset_unitlevel.instance = self.object
            formset_unitlevel.save()

            formset_adm.instance = self.object
            formset_adm.save()

            # update solr index
            form.save()

            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(
                self.get_context_data(form=form,
                                      formset_contact=formset_contact,
                                      formset_url=formset_url,
                                      formset_adm=formset_adm,
                                      formset_unitlevel=formset_unitlevel))
Beispiel #48
0
def create_event_from_suggestion(request, suggestion_id):

    user = request.user
    suggestion = get_object_or_404(SuggestEvent, id=suggestion_id)
    output = {}

    user_data = additional_user_info(request)

    event = Event(title=suggestion.title, start_date=suggestion.start_date,
        end_date=suggestion.end_date, link=suggestion.link, city=suggestion.city, created_by=request.user)
    event.save();

    suggestion.status = 1
    suggestion.save();

    output['alert'] = _("Event created.")
    output['alerttype'] = "alert-success"

    return redirect('events.views.create_edit_event', event_id=event.id)
Beispiel #49
0
    def get_queryset(self):

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('OER')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])

        search_field = self.search_field + '__icontains'

        # search by field
        search = self.actions['s']
        if ':' in search:
            search_parts = search.split(':')
            search_field = search_parts[0] + '__icontains'
            search = search_parts[1]

        if search:
            object_list = self.model.objects.filter(**{search_field: search})
        else:
            object_list = self.model.objects.all()

        if self.actions['filter_status'] != '':
            object_list = object_list.filter(status=self.actions['filter_status'])

        # filter by scope region country
        if self.actions['filter_country'] != '':
            object_list = object_list.filter(cvsp_node=self.actions['filter_country'])

        if self.actions['order'] == "-":
            object_list = object_list.order_by("%s%s" % (self.actions["order"], self.actions["orderby"]))

        # filter by user
        if not self.actions['filter_owner'] or self.actions['filter_owner'] == 'user':
            object_list = object_list.filter(created_by=self.request.user)
        # filter by cooperative center
        elif self.actions['filter_owner'] == 'center':
            user_cc = self.request.user.profile.get_attribute('cc')
            object_list = object_list.filter(cooperative_center_code=user_cc)

        return object_list
Beispiel #50
0
    def get_context_data(self, **kwargs):
        context = super(InstGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')

        country_list = Institution.objects.values('country').distinct(
        ).annotate(total=Count('pk')).order_by('-total')
        for country in country_list:
            country_id = country['country']
            if country_id > 0:
                country['country_name'] = unicode(
                    Country.objects.get(pk=country_id))

        context['actions'] = self.actions
        context['user_role'] = user_role
        context['user_cc'] = user_data.get('user_cc')
        context['country_list'] = country_list

        return context
Beispiel #51
0
def delete_error_report(request, error_report_id):

    user = request.user
    error_report = get_object_or_404(ErrorReport, id=error_report_id)
    output = {}

    user_data = additional_user_info(request)

    if error_report.created_by_id != user.id:
        return HttpResponse('Unauthorized', status=401)

    error_report.delete()

    output['alert'] = _("Report deleted.")
    output['alerttype'] = "alert-success"

    return render_to_response('error_reporting/list.html',
                              output,
                              context_instance=RequestContext(request))
Beispiel #52
0
    def get_context_data(self, **kwargs):
        context = super(InstUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('DirIns')
        user_id = self.request.user.id
        if self.object:
            user_data[
                'is_owner'] = True if self.object.created_by == self.request.user else False

        context['user_data'] = user_data
        context['user_role'] = user_role

        # create flag that control if user have permission to edit the reference
        context[
            'user_can_edit'] = True if not self.object or self.object.cooperative_center_code in [
                'BR1.1', user_data['user_cc']
            ] else False
        if user_role == 'doc':
            context['user_can_change_status'] = False
        else:
            context['user_can_change_status'] = True

        context['settings'] = settings
        context['help_fields'] = get_help_fields('institution')

        if self.object:
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        if self.request.method == 'GET':
            context['formset_person'] = PersonFormSet(instance=self.object)
            context['formset_phone'] = PhoneFormSet(instance=self.object)
            context['formset_email'] = EmailFormSet(instance=self.object)
            context['formset_url'] = URLFormSet(instance=self.object)
            context['formset_adm'] = AdmFormSet(instance=self.object)
            context['formset_unitlevel'] = UnitLevelFormSet(
                instance=self.object)

        return context
Beispiel #53
0
    def get_context_data(self, **kwargs):
        context = super(LeisRefUpdate, self).get_context_data(**kwargs)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LeisRef')
        user_id = self.request.user.id
        if self.object:
            user_data['is_owner'] = True if self.object.created_by == self.request.user else False

        context['user_data'] = user_data
        context['user_role'] = user_role

        # create flag that control if user have permission to edit the reference
        if user_role == 'doc':
            context['user_can_edit'] = True if not self.object or self.object.status == 0 or (self.object.status != 1 and self.object.cooperative_center_code == user_data['user_cc']) else False
            context['user_can_change_status'] = False
        else:
            context['user_can_edit'] = True
            context['user_can_change_status'] = True

        context['settings'] = settings
        context['help_fields'] = get_help_fields('leisref')
        context['indexing_fields'] = ['local_descriptors', 'local_geo_descriptors', 'institution_as_subject']

        if self.object:
            c_type = ContentType.objects.get_for_model(self.get_object())
            context['c_type'] = c_type

        if self.request.method == 'GET':
            context['formset_descriptor'] = DescriptorFormSet(instance=self.object)
            context['formset_attachment'] = AttachmentFormSet(instance=self.object)
            context['formset_url'] = URLFormSet(instance=self.object)
            context['formset_relation'] = RelationFormSet(instance=self.object)
            context['formset_thematic'] = ResourceThematicFormSet(instance=self.object)

        if self.object:
            context['passive_relationship'] = ActRelationship.objects.filter(act_referred=self.object)


        return context
Beispiel #54
0
    def get_context_data(self, **kwargs):
        context = super(BiblioRefGenericListView, self).get_context_data(**kwargs)
        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LILDBI')
        source_id = self.request.GET.get('source')

        # change defaults filter for indexed tab
        if self.actions['filter_owner'] == 'indexed':
            if self.actions['filter_status'] == '':
                self.actions['filter_status'] = '0'
            if self.actions['document_type'] == '':
                self.actions['document_type'] = 'Sas'

        context['actions'] = self.actions
        context['document_type'] = self.request.GET.get('document_type')
        context['source_id'] = self.request.GET.get('source')
        context['user_role'] = user_role
        context['indexed_database_list'] = Database.objects.all().order_by('name')
        if source_id:
            context['reference_source'] = ReferenceSource.objects.get(pk=source_id)

        return context
Beispiel #55
0
def delete_resource(request, resource_id):

    user = request.user
    resource = get_object_or_404(Resource, id=resource_id)
    c_type = ContentType.objects.get_for_model(Resource)
    output = {}

    user_data = additional_user_info(request)

    if resource.created_by_id != user.id:
        return HttpResponse('Unauthorized', status=401)

    resource.delete()

    # delete associated data
    Descriptor.objects.filter(object_id=resource_id, content_type=c_type).delete()
    Keyword.objects.filter(object_id=resource_id, content_type=c_type).delete()
    ResourceThematic.objects.filter(object_id=resource_id, content_type=c_type).delete()

    output['alert'] = _("Resource deleted.")
    output['alerttype'] = "alert-success"

    return render_to_response('main/resources.html', output, context_instance=RequestContext(request))
Beispiel #56
0
def create_event_from_suggestion(request, suggestion_id):

    user = request.user
    suggestion = get_object_or_404(SuggestEvent, id=suggestion_id)
    output = {}

    user_data = additional_user_info(request)

    event = Event(title=suggestion.title,
                  start_date=suggestion.start_date,
                  end_date=suggestion.end_date,
                  link=suggestion.link,
                  city=suggestion.city,
                  created_by=request.user)
    event.save()

    suggestion.status = 1
    suggestion.save()

    output['alert'] = _("Event created.")
    output['alerttype'] = "alert-success"

    return redirect('events.views.create_edit_event', event_id=event.id)
Beispiel #57
0
def create_resource_from_suggestion(request, suggestion_id):

    user = request.user
    suggestion = get_object_or_404(SuggestResource, id=suggestion_id)
    output = {}

    user_data = additional_user_info(request)

    resource = Resource(title=suggestion.title, link=suggestion.link,
        abstract=suggestion.abstract, created_by=request.user)
    resource.save();

    for tag in suggestion.keywords.split(','):
            keyword = Keyword(content_object=resource, text=tag.strip(), user_recomendation=True)
            keyword.save()

    suggestion.status = 1
    suggestion.save();

    output['alert'] = _("Resource created.")
    output['alerttype'] = "alert-success"

    return redirect('main.views.create_edit_resource', resource_id=resource.id)
Beispiel #58
0
    def form_valid(self, form):
        formset_descriptor = DescriptorFormSet(self.request.POST, instance=self.object)
        formset_attachment = AttachmentFormSet(self.request.POST, self.request.FILES, instance=self.object)
        formset_library = LibraryFormSet(self.request.POST, instance=self.object)
        formset_complement = ComplementFormSet(self.request.POST, instance=self.object)

        # run all validation before for display formset errors at form
        form_valid = form.is_valid()

        formset_descriptor_valid = formset_descriptor.is_valid()
        formset_attachment_valid = formset_attachment.is_valid()
        formset_library_valid = formset_library.is_valid()
        formset_complement_valid = formset_complement.is_valid()

        user_data = additional_user_info(self.request)
        # run cross formsets validations
        valid_for_publication = check_for_publication(form, {'descriptor': formset_descriptor,
                                                             'attachment': formset_attachment}, user_data)

        if (form_valid and formset_descriptor_valid and formset_attachment_valid and
           formset_complement_valid and valid_for_publication):

                self.object = form.save()

                # Check if is present conference or project complement
                complement_conference = formset_complement.cleaned_data[0].get('conference_name')
                complement_project = (formset_complement.cleaned_data[0].get('project_name') or
                                      formset_complement.cleaned_data[0].get('project_number'))

                # Update information at literature_type field
                if complement_conference:
                    self.object.literature_type += 'C'
                elif 'C' in self.object.literature_type:
                    self.object.literature_type = self.object.literature_type.replace('C', '')

                if complement_project:
                    self.object.literature_type += 'P'
                elif 'P' in self.object.literature_type:
                    self.object.literature_type = self.object.literature_type.replace('P', '')

                if (complement_conference or complement_project):
                    self.object.save()

                formset_descriptor.instance = self.object
                formset_descriptor.save()

                formset_attachment.instance = self.object
                formset_attachment.save()

                formset_library.instance = self.object
                formset_library.save()

                formset_complement.instance = self.object
                formset_complement.save()

                # update solr index
                # form.save()
                form.save_m2m()
                return HttpResponseRedirect(self.get_success_url())
        else:
            # if not valid for publication return status to original (previous) value
            if self.object:
                previous_status = self.object.previous_value('status')
                self.object.status = previous_status
                form.data['status'] = previous_status
            else:
                form.data['status'] = '-1'

            return self.render_to_response(
                           self.get_context_data(form=form,
                                                 formset_descriptor=formset_descriptor,
                                                 formset_attachment=formset_attachment,
                                                 formset_library=formset_library,
                                                 formset_complement=formset_complement,
                                                 valid_for_publication=valid_for_publication))
Beispiel #59
0
def create_edit_resource(request, **kwargs):

    resource_id = kwargs.get('resource_id')
    resource = None
    form = None
    form_error_report = None
    formset_descriptor = None
    formset_thematic = None
    formset_keyword  = None
    descriptor_list  = None
    keyword_list     = None
    thematic_list    = None
    valid_for_publication = True
    output = {}

    if resource_id:
        resource = get_object_or_404(Resource, id=resource_id)
    else:
        resource = Resource(created_by=request.user)
        output['is_new'] = True

    user_data = additional_user_info(request)
    user_data['is_owner'] = True if resource.created_by_id == request.user.id else False
    user_role = user_data['service_role'].get('LIS')

    ct = ContentType.objects.get_for_model(resource)

    # save/update
    if request.POST:
        form = ResourceForm(request.POST, request.FILES, instance=resource, user=request.user, user_data=user_data)
        formset_descriptor = DescriptorFormSet(request.POST, instance=resource)
        formset_keyword    = KeywordFormSet(request.POST, instance=resource)
        formset_thematic   = ResourceThematicFormSet(request.POST, instance=resource)

        # run all validation before for display formset errors at form
        form_valid = form.is_valid()
        formset_descriptor_valid = formset_descriptor.is_valid()        
        formset_keyword_valid  = formset_keyword.is_valid()
        formset_thematic_valid = formset_thematic.is_valid()

        # for status = admitted check  if the resource have at least one descriptor and one thematica area
        valid_for_publication = is_valid_for_publication(form, 
            [formset_descriptor, formset_keyword, formset_thematic])

        if (form_valid and formset_descriptor_valid and formset_keyword_valid
                and formset_thematic_valid and valid_for_publication):

            if not resource.id:
                resource = form.save()
            
            formset_descriptor.save()
            formset_keyword.save()
            formset_thematic.save()

            # update solr index
            form.save()
            form.save_m2m()

            output['alert'] = _("Resource successfully edited.")
            output['alerttype'] = "alert-success"

            return redirect('main.views.list_resources')
    # new/edit
    else:
        form = ResourceForm(instance=resource, user_data=user_data)

        form_error_report = ErrorReportForm()

        # if documentalist create a formset with descriptors created by the user
        if user_role == 'doc':
            descriptor_list = Descriptor.objects.filter(object_id=resource.id, content_type=ct).exclude(created_by_id=request.user.id, status=0)
            keyword_list = Keyword.objects.filter(object_id=resource.id, content_type=ct).exclude(created_by_id=request.user.id, status=0)
            thematic_list = ResourceThematic.objects.filter(object_id=resource.id, content_type=ct).exclude(created_by_id=request.user.id, status=0)

            pending_descriptor_from_user = Descriptor.objects.filter(created_by_id=request.user.id, status=0)
            pending_keyword_from_user = Keyword.objects.filter(created_by_id=request.user.id, status=0)
            pending_thematic_from_user = ResourceThematic.objects.filter(created_by_id=request.user.id, status=0)

            formset_descriptor = DescriptorFormSet(instance=resource, queryset=pending_descriptor_from_user)
            formset_keyword  = KeywordFormSet(instance=resource, queryset=pending_keyword_from_user)
            formset_thematic = ResourceThematicFormSet(instance=resource, queryset=pending_thematic_from_user)
        else:
            formset_descriptor = DescriptorFormSet(instance=resource)
            formset_keyword  = KeywordFormSet(instance=resource)            
            formset_thematic = ResourceThematicFormSet(instance=resource)

    output['form'] = form
    output['formset_descriptor'] = formset_descriptor
    output['formset_keyword']  = formset_keyword
    output['formset_thematic'] = formset_thematic
    output['form_error_report'] = form_error_report
    output['valid_for_publication'] = valid_for_publication

    output['content_type'] = ct.id

    output['resource'] = resource
    output['descriptor_list'] = descriptor_list
    output['keyword_list'] = keyword_list
    output['thematic_list'] = thematic_list
    output['settings'] = settings
    output['user_data'] = user_data
    output['user_role'] = user_role

    return render_to_response('main/edit-resource.html', output, context_instance=RequestContext(request))
Beispiel #60
0
    def get_queryset(self):

        source_id = self.request.GET.get('source', None)
        document_type = self.request.GET.get('document_type', None)

        user_data = additional_user_info(self.request)
        user_role = user_data['service_role'].get('LILDBI')

        # getting action parameter
        self.actions = {}
        for key in ACTIONS.keys():
            self.actions[key] = self.request.GET.get(key, ACTIONS[key])

        search_field = self.search_field + '__icontains'

        # search by field
        search = self.actions['s']
        if ':' in search:
            search_parts = search.split(':')
            search_field = search_parts[0] + '__icontains'
            search = search_parts[1]

        object_list = self.model.objects.filter(**{search_field: search})

        if source_id:
            object_list = object_list.filter(source_id=source_id)

        if self.actions['filter_status'] != '':
            object_list = object_list.filter(status=self.actions['filter_status'])

        # filter by specific document type and remove filter by user (filter_owner)
        if document_type:
            literature_type = re.sub('[^A-Z]|[CP]', '', document_type)  # get only uppercase chars excepct CP (congress/project)
            treatment_level = re.sub('[A-Z]', '', document_type)  # get only lowercase chars
            object_list = object_list.filter(literature_type__startswith=literature_type,
                                             treatment_level=treatment_level)


        if self.actions['order'] == "-":
            object_list = object_list.order_by("%s%s" % (self.actions["order"], self.actions["orderby"]))

        # if not at main reference list and source or document_type remove filter by user
        if self.model.__name__ != 'Reference' and (source_id or document_type):
            self.actions['filter_owner'] = '*'

        # profile lilacs express editor - restrict by CC code when list sources
        if document_type and user_role == 'editor_llxp':
            self.actions['filter_owner'] = 'center'

        # filter by user
        if not self.actions['filter_owner'] or self.actions['filter_owner'] == 'user':
            object_list = object_list.filter(created_by=self.request.user)
        # filter by cooperative center
        elif self.actions['filter_owner'] == 'center':
            user_cc = self.request.user.profile.get_attribute('cc')
            object_list = object_list.filter(cooperative_center_code=user_cc)
        # filter by titles of responsibility of current user CC
        elif self.actions['filter_owner'] == 'indexed':
            user_cc = self.request.user.profile.get_attribute('cc')
            titles_indexed = [t.shortened_title for t in Title.objects.filter(indexer_cc_code=user_cc)]
            filter_title_qs = Q()
            for title in titles_indexed:
                filter_title_qs = filter_title_qs | Q(referenceanalytic__source__title_serial=title)
            # by default filter by LILACS express references
            object_list = object_list.filter(filter_title_qs)
            if self.actions['filter_status'] == '':
                self.actions['filter_status'] = 0
                object_list = object_list.filter(status=0)

        return object_list