store and display favorite person by tiss_id
This commit is contained in:
parent
c32819d819
commit
fbfc12e096
3
app/assets/stylesheets/favorite.scss
Normal file
3
app/assets/stylesheets/favorite.scss
Normal file
@ -0,0 +1,3 @@
|
||||
// Place all the styles related to the favorites controller here.
|
||||
// They will automatically be included in application.css.
|
||||
// You can use Sass (SCSS) here: https://sass-lang.com/
|
||||
3
app/assets/stylesheets/favorite/favorite_person.scss
Normal file
3
app/assets/stylesheets/favorite/favorite_person.scss
Normal file
@ -0,0 +1,3 @@
|
||||
// Place all the styles related to the favorites/favorite_person controller here.
|
||||
// They will automatically be included in application.css.
|
||||
// You can use Sass (SCSS) here: https://sass-lang.com/
|
||||
3
app/assets/stylesheets/favorites/favorite_person.scss
Normal file
3
app/assets/stylesheets/favorites/favorite_person.scss
Normal file
@ -0,0 +1,3 @@
|
||||
// Place all the styles related to the favorites/favorite_person controller here.
|
||||
// They will automatically be included in application.css.
|
||||
// You can use Sass (SCSS) here: https://sass-lang.com/
|
||||
@ -1,3 +0,0 @@
|
||||
class CoursesController < ApplicationController
|
||||
|
||||
end
|
||||
5
app/controllers/favorites/favorite_person_controller.rb
Normal file
5
app/controllers/favorites/favorite_person_controller.rb
Normal file
@ -0,0 +1,5 @@
|
||||
class Favorites::FavoritePersonController < ApplicationController
|
||||
def index
|
||||
@favoritePeople = FavoritePerson.all
|
||||
end
|
||||
end
|
||||
@ -1,3 +0,0 @@
|
||||
class PeopleController < ApplicationController
|
||||
|
||||
end
|
||||
@ -1,3 +0,0 @@
|
||||
class ProjectsController < ApplicationController
|
||||
|
||||
end
|
||||
@ -1,3 +0,0 @@
|
||||
class ThesesController < ApplicationController
|
||||
|
||||
end
|
||||
@ -9,15 +9,20 @@ class TissCrawlerController < ApplicationController
|
||||
end
|
||||
|
||||
def people_show_basic
|
||||
result = TissCrawler.search(params)
|
||||
$people = result.map { |person| Tiss::Person.new(person) }
|
||||
@people = $people
|
||||
params[:api] = '/api/person/v22/psuche'
|
||||
params[:search_parameter] = 'q'
|
||||
@people = TissCrawler.search(params)
|
||||
end
|
||||
|
||||
def people_show_detail
|
||||
people = $people
|
||||
index = params[:index]
|
||||
@person = people[Integer(index)]
|
||||
def person_show_detail
|
||||
params[:api] = '/api/person/v22/id/'
|
||||
@person = TissCrawler.get_details(params)
|
||||
@host = TissCrawler.get_host
|
||||
end
|
||||
|
||||
def person_add_to_fav
|
||||
puts params[:tiss_id]
|
||||
person = FavoritePerson.create(tiss_id: params[:tiss_id])
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
2
app/helpers/favorite/favorite_person_helper.rb
Normal file
2
app/helpers/favorite/favorite_person_helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
module Favorite::FavoritePersonHelper
|
||||
end
|
||||
2
app/helpers/favorite_helper.rb
Normal file
2
app/helpers/favorite_helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
module FavoriteHelper
|
||||
end
|
||||
2
app/helpers/favorites/favorite_person_helper.rb
Normal file
2
app/helpers/favorites/favorite_person_helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
module Favorites::FavoritePersonHelper
|
||||
end
|
||||
3
app/models/favorite_person.rb
Normal file
3
app/models/favorite_person.rb
Normal file
@ -0,0 +1,3 @@
|
||||
class FavoritePerson < ApplicationRecord
|
||||
self.primary_key = "tiss_id"
|
||||
end
|
||||
@ -1,43 +0,0 @@
|
||||
module Tiss
|
||||
class Base
|
||||
|
||||
def base_uri
|
||||
'https://tiss.tuwien.ac.at/'
|
||||
end
|
||||
|
||||
def initialize(args = {})
|
||||
args.each do |name, value|
|
||||
attr_name = name.to_s.underscore
|
||||
send("#{attr_name}=", value) if respond_to?("#{attr_name}=")
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Person < Base
|
||||
|
||||
# tiss json properties
|
||||
attr_accessor :tiss_id,
|
||||
:oid,
|
||||
:old_tiss_ids,
|
||||
:first_name,
|
||||
:last_name,
|
||||
:gender,
|
||||
:pseudoperson,
|
||||
:preceding_titles,
|
||||
:postpositioned_titles,
|
||||
:orcid,
|
||||
:card_uri,
|
||||
:picture_uri,
|
||||
:main_phone_number,
|
||||
:main_email,
|
||||
:other_emails,
|
||||
:main_addresses,
|
||||
:employee
|
||||
|
||||
def initialize(args = {})
|
||||
super(args)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
6
app/views/favorites/favorite_person/index.html.erb
Normal file
6
app/views/favorites/favorite_person/index.html.erb
Normal file
@ -0,0 +1,6 @@
|
||||
<h1>Your favorite perople listed here ...</h1>
|
||||
<p>For now only the tiss_ids are stored and shown</p>
|
||||
|
||||
<% @favoritePeople.each do |favPerson| %>
|
||||
Tiss_id: <%= favPerson.tiss_id %>
|
||||
<% end %>
|
||||
@ -21,8 +21,8 @@
|
||||
<a href="#" class="logo">tiss2go</a>
|
||||
<div class="left-menu">
|
||||
<%= link_to 'Home', root_path %>
|
||||
<%= link_to 'People', tiss_crawler_people_search_path %>
|
||||
<%#= link_to 'Courses', courses_index_path %>
|
||||
<%= link_to 'Search', tiss_crawler_people_search_path %>
|
||||
<%= link_to 'Favorite People', '/favorites/favorite_person/index' %>
|
||||
<%#= link_to 'Projects', projects_index_path %>
|
||||
<%#= link_to 'Theses', theses_index_path %>
|
||||
</div>
|
||||
|
||||
@ -1,7 +1,4 @@
|
||||
<%= form_tag('/tiss_crawler/people_show_basic', :method => "get") do %>
|
||||
<%= hidden_field_tag(:context, 'People') %>
|
||||
<%= hidden_field_tag(:api, '/api/person/v22/psuche') %>
|
||||
<%= hidden_field_tag(:search_parameter, 'q') %>
|
||||
<%= label_tag(:search_term, "Search for people @TU Vienna:") %>
|
||||
<%= text_field_tag(:search_term) %>
|
||||
<%= submit_tag("Search") %>
|
||||
|
||||
@ -2,8 +2,9 @@ This is the result for your basic people search:
|
||||
|
||||
<% @people.each_with_index do |person, index| %>
|
||||
<p>
|
||||
<%= person.first_name %>
|
||||
<%= person.last_name %>
|
||||
<%= button_to 'Details', action: :people_show_detail, index: index %>
|
||||
<%= person['first_name'] %>
|
||||
<%= person['last_name'] %>
|
||||
<%= button_to 'Details', action: :person_show_detail, tiss_id: person['tiss_id'] %>
|
||||
<%= button_to 'Add to favs.', action: :person_add_to_fav, tiss_id: person['tiss_id'] %>
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
@ -1,14 +0,0 @@
|
||||
Chosen person in detail view:
|
||||
|
||||
<% if @person != nil %>
|
||||
<% if @person.picture_uri != nil %>
|
||||
<%= image_tag @person.base_uri + @person.picture_uri %>
|
||||
<% end %>
|
||||
<p><%= @person.preceding_titles %> <%= @person.first_name %> <%= @person.last_name %>,
|
||||
<%= @person.gender %> <%= @person.postpositioned_titles %></p>
|
||||
<p>Phone: <%= @person.main_phone_number %></p>
|
||||
<p>Mail: <%= @person.main_email %></p>
|
||||
<p>Other mails: <%= @person.other_emails %></p>
|
||||
<p>Main addresses: <%= @person.main_addresses %></p>
|
||||
<!-- <p>Employee: <%#= @person.employee %></p>-->
|
||||
<% end %>
|
||||
14
app/views/tiss_crawler/person_show_detail.html.erb
Normal file
14
app/views/tiss_crawler/person_show_detail.html.erb
Normal file
@ -0,0 +1,14 @@
|
||||
Chosen person in detail view:
|
||||
|
||||
<% if @person != nil %>
|
||||
<% if @person['picture_uri'] != nil %>
|
||||
<%= image_tag @host + @person['picture_uri'] %>
|
||||
<% end %>
|
||||
<p><%= @person['preceding_titles'] %> <%= @person['first_name'] %> <%= @person['last_name'] %>,
|
||||
<%= @person['gender'] %> <%= @person['postpositioned_titles'] %></p>
|
||||
<p>Phone: <%= @person['main_phone_number'] %></p>
|
||||
<p>Mail: <%= @person['main_email'] %></p>
|
||||
<p>Other mails: <%= @person['other_emails'] %></p>
|
||||
<p>Main addresses: <%= @person['main_addresses'] %></p>
|
||||
<!-- <p>Employee: <%#= @person.employee %></p>-->
|
||||
<% end %>
|
||||
@ -1,12 +1,19 @@
|
||||
Rails.application.routes.draw do
|
||||
|
||||
devise_for :users, path_names: {sign_in: 'log_in', sign_out: 'log out'}
|
||||
|
||||
|
||||
get 'login/index'
|
||||
get 'tiss_crawler/people_search'
|
||||
get 'tiss_crawler/people_show_basic'
|
||||
get 'tiss_crawler/people_show_detail'
|
||||
post 'tiss_crawler/people_show_detail'
|
||||
get 'tiss_crawler/person_show_detail'
|
||||
post 'tiss_crawler/person_show_detail'
|
||||
get 'tiss_crawler/person_add_to_fav'
|
||||
post 'tiss_crawler/person_add_to_fav'
|
||||
|
||||
namespace :favorites do
|
||||
get 'favorite_person/index'
|
||||
end
|
||||
|
||||
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
|
||||
root 'login#index'
|
||||
|
||||
9
db/migrate/20200421152314_create_favorite_people.rb
Normal file
9
db/migrate/20200421152314_create_favorite_people.rb
Normal file
@ -0,0 +1,9 @@
|
||||
class CreateFavoritePeople < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
create_table :favorite_people do |t|
|
||||
t.string :tiss_id
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -10,7 +10,13 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2020_04_14_101256) do
|
||||
ActiveRecord::Schema.define(version: 2020_04_21_152314) do
|
||||
|
||||
create_table "favorite_people", force: :cascade do |t|
|
||||
t.string "tiss_id"
|
||||
t.datetime "created_at", precision: 6, null: false
|
||||
t.datetime "updated_at", precision: 6, null: false
|
||||
end
|
||||
|
||||
create_table "users", force: :cascade do |t|
|
||||
t.string "email", default: "", null: false
|
||||
|
||||
@ -15,9 +15,18 @@ class TissCrawler
|
||||
JSON.parse(response.body)["results"]
|
||||
end
|
||||
|
||||
def self.get_details(params)
|
||||
api = params[:api]
|
||||
id = params[:tiss_id]
|
||||
url = $host + api + id
|
||||
puts(url)
|
||||
|
||||
def details
|
||||
response = HTTParty.get(url)
|
||||
JSON.parse(response.body)
|
||||
end
|
||||
|
||||
def self.get_host
|
||||
$host
|
||||
end
|
||||
|
||||
end
|
||||
@ -0,0 +1,9 @@
|
||||
require 'test_helper'
|
||||
|
||||
class Favorite::FavoritePersonControllerTest < ActionDispatch::IntegrationTest
|
||||
test "should get index" do
|
||||
get favorite_favorite_person_index_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
end
|
||||
7
test/controllers/favorite_controller_test.rb
Normal file
7
test/controllers/favorite_controller_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class FavoriteControllerTest < ActionDispatch::IntegrationTest
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
@ -0,0 +1,9 @@
|
||||
require 'test_helper'
|
||||
|
||||
class Favorites::FavoritePersonControllerTest < ActionDispatch::IntegrationTest
|
||||
test "should get index" do
|
||||
get favorites_favorite_person_index_url
|
||||
assert_response :success
|
||||
end
|
||||
|
||||
end
|
||||
7
test/fixtures/favorite_people.yml
vendored
Normal file
7
test/fixtures/favorite_people.yml
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
one:
|
||||
tiss_id: MyString
|
||||
|
||||
two:
|
||||
tiss_id: MyString
|
||||
11
test/fixtures/people.yml
vendored
Normal file
11
test/fixtures/people.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||
|
||||
# This model initially had no columns defined. If you add columns to the
|
||||
# model remove the '{}' from the fixture names and add the columns immediately
|
||||
# below each fixture, per the syntax in the comments below
|
||||
#
|
||||
one: {}
|
||||
# column: value
|
||||
#
|
||||
two: {}
|
||||
# column: value
|
||||
7
test/models/favorite_person_test.rb
Normal file
7
test/models/favorite_person_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class FavoritePersonTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
7
test/models/person_test.rb
Normal file
7
test/models/person_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class PersonTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user