Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plug Batch info on Kitt callback and move back City on User to simplify validation logic. #325

Merged
merged 11 commits into from
Nov 17, 2023
2 changes: 1 addition & 1 deletion app/components/user_form_component.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</div>

<div class="flex flex-col gap-y-1 sm:flex-row sm:items-center sm:gap-x-3">
<%= f.label :city_name, "Campus" %>
<%= f.label :campus_name, "Campus" %>
<%= f.collection_select(:city_id, City.order(:vanity_name), :id, :vanity_name, { prompt: "", selected: @user.city_id }, class: "input", disabled: @user.city_id?) %>
</div>

Expand Down
80 changes: 0 additions & 80 deletions app/jobs/_kitt_scraper_job.rb
wJoenn marked this conversation as resolved.
Outdated
Show resolved Hide resolved

This file was deleted.

2 changes: 1 addition & 1 deletion app/models/city.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class City < ApplicationRecord

before_create :set_default_vanity_name

validates :name, uniqueness: { case_sensitive: false }
validates :name, presence: true, uniqueness: { case_sensitive: false }

def self.find_by_slug(slug)
find_by!("REPLACE(LOWER(name), ' ', '-') = ?", slug)
Expand Down
92 changes: 79 additions & 13 deletions db/seeds.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,87 @@
Batch.destroy_all
end

def fetch(url)
uri = URI(url)
https = Net::HTTP.new(uri.hostname, uri.port)
https.use_ssl = true

request = Net::HTTP::Get.new(uri)
request["Cookie"] = "_kitt2017_=#{ENV.fetch('KITT_SESSION_COOKIE')}"

https.request(request)
cities = [
{ name: "Amsterdam", size: 666 },
{ name: "Angers", size: 0 },
{ name: "B2G Latam", size: 105 },
{ name: "Bali", size: 421 },
{ name: "Barcelona", size: 610 },
{ name: "Beirut", size: 14 },
{ name: "Belo Horizonte", size: 22 },
{ name: "Berlin", size: 2563 },
{ name: "Bordeaux", size: 712 },
{ name: "Brasilia", size: 134 },
{ name: "Brussels", size: 837 },
{ name: "Budapest", size: 0 },
{ name: "Buenos Aires", size: 397 },
{ name: "Cape Town", size: 92 },
{ name: "Casablanca", size: 143 },
{ name: "Chengdu", size: 64 },
{ name: "Cologne", size: 97 },
{ name: "Copenhagen", size: 117 },
{ name: "Dubai", size: 35 },
{ name: "Emil", size: 172 },
{ name: "Essonne", size: 16 },
{ name: "Florianópolis", size: 0 },
{ name: "For Business", size: 217 },
{ name: "For School", size: 0 },
{ name: "Istanbul", size: 30 },
{ name: "Kyoto", size: 18 },
{ name: "Lausanne", size: 191 },
{ name: "Lille", size: 484 },
{ name: "Lima", size: 53 },
{ name: "Lisbon", size: 1037 },
{ name: "London", size: 2366 },
{ name: "Lyon", size: 575 },
{ name: "Madrid", size: 209 },
{ name: "Malmö", size: 21 },
{ name: "Marseille", size: 687 },
{ name: "Martinique", size: 42 },
{ name: "Mauritius", size: 184 },
{ name: "Medellín", size: 71 },
{ name: "Melbourne", size: 468 },
{ name: "Mexico", size: 301 },
{ name: "Milan", size: 137 },
{ name: "Montréal", size: 645 },
{ name: "Munich", size: 293 },
{ name: "Nantes", size: 375 },
{ name: "Nice", size: 200 },
{ name: "Online", size: 1696 },
{ name: "Online APAC", size: 0 },
{ name: "Oslo", size: 55 },
{ name: "Paris", size: 4189 },
{ name: "Playa del Carmen", size: 0 },
{ name: "Porto", size: 53 },
{ name: "Recife", size: 0 },
{ name: "Rennes", size: 77 },
{ name: "Renova", size: 0 },
{ name: "Rio de Janeiro", size: 488 },
{ name: "Riyadh", size: 74 },
{ name: "Rome", size: 0 },
{ name: "Santiago", size: 98 },
{ name: "Seine et Marne", size: 25 },
{ name: "Seoul", size: 16 },
{ name: "Shanghai", size: 435 },
{ name: "Shenzhen", size: 24 },
{ name: "Singapore", size: 402 },
{ name: "Stockholm", size: 51 },
{ name: "Sydney", size: 2 },
{ name: "São Paulo", size: 1043 },
{ name: "Tel Aviv", size: 158 },
{ name: "Testville", size: 7 },
{ name: "Tokyo", size: 816 },
{ name: "Toronto", size: 0 },
{ name: "Toulouse", size: 20 },
{ name: "Tunis", size: 0 },
{ name: "Zurich", size: 64 },
{ name: "remote", size: 0 }
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Désolé, j'avais pas vu que dans ma liste il y avait des 0... tu peux les enlever (je le ferai si t'es capot)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Y avait pas de 0 dans ta liste.
J'ai fais City.all.map.sort_by en pensant que ca serait le meme resultat pour avoir une hash directement

]
cities.each do |city|
c = City.find_or_create_by(name: city[:name])
c.update(size: city[:size])
end

data = JSON.parse(fetch("https://kitt.lewagon.com/api/v1/users").read_body)
cities = data["all_places"]
cities.each { |city| City.find_or_create_by(name: city["label"], size: city["count"]) }

Rails.logger.info "✔ Cities initialized"

# Initialize some users in development
Expand Down
1 change: 0 additions & 1 deletion spec/factories/users.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,5 @@
username { "pil0u" }
synced { true }
uid { id }
city_id { batch&.city_id }
end
end