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))
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))
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
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
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
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
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)
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))
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
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
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
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
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))
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
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
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
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)
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))
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
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
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
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
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
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
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
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
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
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))
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)
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
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
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
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
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
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
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
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))
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
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
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))
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))
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
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))
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)
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
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
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
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
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
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)
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)
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))
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))
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