Fue creado un modelo del tipo activeldap llamado people, el cual tendra una base general y reconocera a cualquier unidad con un dn=uid
# app/models/people
class People < ActiveLdap::Base
ldap_mapping dn_attribute: "uid",
prefix: ""
...
endEn proceso..
El buscador se conecta de forma directa con el servidor de ldap utilizando metodos de activeldap.
if People.find(:all,
:filter => {:cn => '*',
:uid => busqueda})
&& People.find(:all,
:filter => {:cn => busqueda,
:uid => '*'})
@people = People.find(:all,
:filter => {:cn => busqueda,
:uid => '*'})
uids = People.find(:all, busqueda)Al igual que con el buscador de wam, búsquedas generales como "a" o "s" pueden llegar a romper el buscador. Esto podría ser controlado mas adelante con un tiempo máximo de búsqueda.
Los resultados de la búsqueda son reflejados en una tabla con su nombre completo y su email.
En el espacio de usuario fue agregada una vista de perfil, la cual incluye la información básica, y los métodos de adición/edición de información y cambios de contraseña.
El objetivo es diseñar un sistema que permita autorizar o no a los distintos usuarios a realizar las acciones que ofrece la plataforma. Debe ser de manera administrable desde una interfaz web.
Debe permitir mediante helpers consultar si un usuario puede o no realizar una acción cuando se intenta acceder a ella.
Diseñe el protocolo para asignar los permisos que mejor le parezca para lograr el objetivo.
Tomar en consideración que los permisos se asignan por acción y dependiendo de la unidad.
Admin de Unidad
Super Admin
Admin de Unidad
Admin de Unidad
Usuario
Usuario
Usuario
Usuario
Usuario
Verifica si la unidad a la que se accede existe.
Verifica si el modelo al que se accede existe.
Verifica si la acción a la que se accede existe.
superadmin - acceso inmediato
admin de unidad - accede a la cualquier modelo de esa unidad.
usuario
Verifica si se tiene algún rol que pertenezca a la unidad.
Verifica si se tiene al menos un rol que tenga acceso al modelo y a la acción a la que se accede.
can_access_unit_and_action?
Core Method
is_allow?(model_name, action_name)
admin?
Helper que filtra hipervínculos dependiendo de las acciones que puede realizar el usuario.
Helper que filtra los hipervínculos de administración en el sidebar.
# app/views/doc_category/index.html.erb
<% if is_allow? 'DocCategory', 'edit'%>
| <%= link_to "Editar", edit_unit_doc_category_path(@unit,category) %>
<% end %># app/views/layouts/application.html.erb
<% if admin? %>
<%= render "layouts/administration" %>
<% end -%>https://docs.google.com/document/d/1ti7z84PikmtP6jr4GAaDs-MHjdqyZu7RKgqa69Hmwfw/edit#heading=h.owqylzllembg
google drive
Git
https://it.inf.utfsm.cl/projects/
practicas-2015/wiki/Desarrollo
Wiki
Diagrama Proceso de Titulación v2 basado en el modelo hecho por María José Vargas y conversaciones con Sra. Angela Miranda, secretaria de pregrado y Profesor Hubert Hoffmann, Jefe de Carrera.
Formulario
Registro Inscripción Tema de Memoria de Titulación
http://204.87.169.114:3000/units/direccion/buy_orders
http://204.87.169.114:3000/units/pregrado/doc_categories
.../units/infraestructura-y-tecnologia/buy_orders
# app/models/dictionary.rb
class Dictionary < ActiveRecord::Base
def self.units
{ "direccion" => 1,
'pregrado' => 2,
'postgrado' => 3,
'investigacion' => 4,
'extension' => 5,
'infraestructura-y-tecnologia' => 6 }
end
end# app/controller/application_controller.rb
def current_unit
unit_name = request.env['PATH_INFO'].split('/')[2].to_s
return Dictionary.units[unit_name]
end# app/models/unit.rb
def to_param
"#{nombre}".parameterize
endCambiamos el nombre de la unidad en en la url
Extraemos el nombre de la unidad
Dictionary.unit['pregrado']
Probar la posibilidad de integración con template de la Universidad.
En espera de Template
# Gemfile
gem 'prawn'
gem 'prawn-table', '~> 0.1.0'# app/controllers/buy_order_controller.rb
def show_pdf
@order = BuyOrder.find(params[:buy_order_id])
pdf = ReportPdf.new(@order)
send_data pdf.render, filename: 'report.pdf', type: 'application/pdf'
endInstalación
Generar pdf
Clase Prawn
class ReportPdf < Prawn::Document
def initialize(order)
super()
@order = order
header
move_down(20)
text "Orden de Compra n° " + @order.id.to_s
table_orden
move_down(20)
text "Detalle"
table_detalle
end
def header
image "#{Rails.root}/app/assets/images/Di-logo.png", width: 300, height: 43, position: :center
end
def text_content
y_position = cursor - 50
text "Orden de Compra n° " + @order.id.to_s
end
def table_orden
content = [["Fecha ingreso", @order.fecha],["Solicitante", @order.nombres],
["correo", @order.correo],["Area / Proyecto", @order.area_proyecto],
["Cuenta Presupuestaria", @order.cuenta_presupuestaria],["Descripcion", @order.descripcion],
["Valor Estimado", @order.estimativo]]
table content do
column(0).font_style = :bold
self.header = true
self.row_colors = ['DDDDDD', 'FFFFFF']
self.column_widths = [220, 320]
end
end
def table_detalle
...
end
def product_rows
..
endOrdenes de Compra
Confirmar formato