update
20
colors.txt
Normal file
@ -0,0 +1,20 @@
|
||||
exterior_colors = [
|
||||
"192, 192, 192"
|
||||
"0, 0, 0"
|
||||
"255, 255, 255"
|
||||
"128, 128, 128"
|
||||
"255, 0, 0"
|
||||
"255, 69, 0"
|
||||
"0, 0, 255"
|
||||
"75, 0, 130"
|
||||
"255, 215, 0"
|
||||
"34, 139, 34"
|
||||
"160, 82, 45"
|
||||
"245, 245, 220"
|
||||
"210, 105, 30"
|
||||
"255, 20, 147"
|
||||
"255, 228, 196"
|
||||
"255, 223, 0"
|
||||
"85, 107, 47"
|
||||
"192, 192, 192"
|
||||
]
|
||||
2
exports/makes_without_models.csv
Normal file
@ -0,0 +1,2 @@
|
||||
make_id,make_name,is_sa_import
|
||||
4148,DFM,False
|
||||
|
560
exports/models_without_series.csv
Normal file
@ -0,0 +1,560 @@
|
||||
model_id,model_name,make_id,make_name
|
||||
19753,Vigor,2,Acura
|
||||
31,Alfa 6,3,Alfa Romeo
|
||||
19754,1750,3,Alfa Romeo
|
||||
19755,2000,3,Alfa Romeo
|
||||
19756,2300,3,Alfa Romeo
|
||||
19759,Dauphine,3,Alfa Romeo
|
||||
19763,DB2,9,Aston Martin
|
||||
19764,DB2/4,9,Aston Martin
|
||||
19765,DB4,9,Aston Martin
|
||||
19766,DB6,9,Aston Martin
|
||||
19555,F103,10,Audi
|
||||
19768,4000,10,Audi
|
||||
19769,5000,10,Audi
|
||||
19771,Fox,10,Audi
|
||||
22556,Q8 I,10,Audi
|
||||
120,Mini Metro,11,Austin
|
||||
22595,BJ 2021,14,Beijing
|
||||
19259,S-series,15,Bentley
|
||||
19784,Type 57,24,Bugatti
|
||||
19786,F7,26,BYD
|
||||
19787,i6,26,BYD
|
||||
19788,Calais,28,Cadillac
|
||||
19789,Series 61,28,Cadillac
|
||||
19790,Series 70,28,Cadillac
|
||||
19791,SLS,28,Cadillac
|
||||
19793,Star Truck,32,Changan
|
||||
22484,CM8,32,Changan
|
||||
22492,Chana SM8,32,Changan
|
||||
245,SUV,33,ChangFeng
|
||||
2253,A19,34,Chery
|
||||
19797,Arauca,34,Chery
|
||||
19799,Cowin,34,Chery
|
||||
19802,Ego,34,Chery
|
||||
19803,Elara,34,Chery
|
||||
19804,Face,34,Chery
|
||||
19805,Fengyun,34,Chery
|
||||
19807,Fulwin,34,Chery
|
||||
19808,Fulwin 2,34,Chery
|
||||
19809,J1,34,Chery
|
||||
19810,J11,34,Chery
|
||||
19814,Qiyun,34,Chery
|
||||
19816,Riich 2,34,Chery
|
||||
19818,Storm 2,34,Chery
|
||||
2255,City Express,35,Chevrolet
|
||||
19270,Stylemaster,35,Chevrolet
|
||||
19820,150,35,Chevrolet
|
||||
19821,1700,35,Chevrolet
|
||||
19822,210,35,Chevrolet
|
||||
19823,400,35,Chevrolet
|
||||
19826,Biscayne,35,Chevrolet
|
||||
19827,Calibra,35,Chevrolet
|
||||
19828,Chevy II,35,Chevrolet
|
||||
19831,Commodore,35,Chevrolet
|
||||
19834,Delray,35,Chevrolet
|
||||
19836,Fleetline,35,Chevrolet
|
||||
19851,Opala,35,Chevrolet
|
||||
19855,Senator,35,Chevrolet
|
||||
19857,Spectrum,35,Chevrolet
|
||||
19859,Sprint,35,Chevrolet
|
||||
19862,Task Force,35,Chevrolet
|
||||
19867,Veraneio,35,Chevrolet
|
||||
340,TC,36,Chrysler
|
||||
19870,Alpine,36,Chrysler
|
||||
19871,Avenger,36,Chrysler
|
||||
19872,Centura,36,Chrysler
|
||||
19873,Conquest,36,Chrysler
|
||||
19875,Delta,36,Chrysler
|
||||
19876,Drifter,36,Chrysler
|
||||
19877,Executive,36,Chrysler
|
||||
19879,Horizon,36,Chrysler
|
||||
19880,Hunter,36,Chrysler
|
||||
19881,Lancer,36,Chrysler
|
||||
19882,Laser,36,Chrysler
|
||||
19884,Sunbeam,36,Chrysler
|
||||
19885,Valiant,36,Chrysler
|
||||
19886,Valiant Galant,36,Chrysler
|
||||
19888,Axel,37,Citroen
|
||||
19889,Bijou,37,Citroen
|
||||
19890,C15,37,Citroen
|
||||
19892,C35,37,Citroen
|
||||
19894,Chanson,37,Citroen
|
||||
19897,Dispatch,37,Citroen
|
||||
19898,Fukang,37,Citroen
|
||||
19900,ID,37,Citroen
|
||||
19902,Mehari,37,Citroen
|
||||
19905,Synergie,37,Citroen
|
||||
19906,1100,40,Dacia
|
||||
19907,1320,40,Dacia
|
||||
19909,2000,40,Dacia
|
||||
19910,500,40,Dacia
|
||||
19911,D6,40,Dacia
|
||||
19912,Denem,40,Dacia
|
||||
19913,Gamma,40,Dacia
|
||||
19915,Shifter,40,Dacia
|
||||
19917,Aranos,42,Daewoo
|
||||
19918,Brougham,42,Daewoo
|
||||
19919,Cielo,42,Daewoo
|
||||
19920,Fantasy,42,Daewoo
|
||||
19921,Imperial,42,Daewoo
|
||||
19924,Maepsy,42,Daewoo
|
||||
19925,Pointer,42,Daewoo
|
||||
19927,Veritas,42,Daewoo
|
||||
19929,Ayla,44,Daihatsu
|
||||
19931,Compagno,44,Daihatsu
|
||||
19932,Consorte,44,Daihatsu
|
||||
19933,Domino,44,Daihatsu
|
||||
19935,Fourtrak,44,Daihatsu
|
||||
19936,Gran Max,44,Daihatsu
|
||||
19938,Luxio,44,Daihatsu
|
||||
19941,Sportrak,44,Daihatsu
|
||||
19942,Taruna,44,Daihatsu
|
||||
19943,Valera,44,Daihatsu
|
||||
19944,Zebra,44,Daihatsu
|
||||
19948,1000,47,Datsun
|
||||
19949,1200,47,Datsun
|
||||
19950,200SX,47,Datsun
|
||||
19951,240Z / 260Z / 280Z,47,Datsun
|
||||
19952,510,47,Datsun
|
||||
19953,610,47,Datsun
|
||||
19954,710,47,Datsun
|
||||
19955,810,47,Datsun
|
||||
19956,B-210,47,Datsun
|
||||
19959,Fairlady,47,Datsun
|
||||
19961,Patrol,47,Datsun
|
||||
19962,Pickup,47,Datsun
|
||||
19964,330,51,Dodge
|
||||
19965,400,51,Dodge
|
||||
19966,440,51,Dodge
|
||||
19967,A100,51,Dodge
|
||||
19968,Aspen,51,Dodge
|
||||
19970,Brisa,51,Dodge
|
||||
19972,Conquest,51,Dodge
|
||||
19974,Demon,51,Dodge
|
||||
19976,Forza,51,Dodge
|
||||
19977,Matador,51,Dodge
|
||||
19978,Meadowbrook,51,Dodge
|
||||
19979,Mirada,51,Dodge
|
||||
19980,Phoenix,51,Dodge
|
||||
19982,Power Wagon,51,Dodge
|
||||
19984,Ram 50,51,Dodge
|
||||
19985,Rampage,51,Dodge
|
||||
19987,Royal,51,Dodge
|
||||
19988,SE,51,Dodge
|
||||
19990,St. Regis,51,Dodge
|
||||
19992,Future,52,DongFeng
|
||||
20941,AX3,52,DongFeng
|
||||
20950,A60,52,DongFeng
|
||||
19993,Orion M,53,Doninvest
|
||||
19998,Besturn B90,59,FAW
|
||||
19999,C131,59,FAW
|
||||
20000,Jiabao,59,FAW
|
||||
20001,Kun Cheng,59,FAW
|
||||
20002,M80,59,FAW
|
||||
20004,Sirius S80,59,FAW
|
||||
20007,Vela,59,FAW
|
||||
20008,Xiali N3,59,FAW
|
||||
20009,Xiali N5,59,FAW
|
||||
540,208,60,Ferrari
|
||||
20011,250,60,Ferrari
|
||||
20014,330,60,Ferrari
|
||||
20015,365,60,Ferrari
|
||||
20016,Berlinetta Boxer,60,Ferrari
|
||||
609,X1/9,61,Fiat
|
||||
20017,1100,61,Fiat
|
||||
20018,1200,61,Fiat
|
||||
20020,1300/1500,61,Fiat
|
||||
20021,133,61,Fiat
|
||||
20022,1400,61,Fiat
|
||||
20023,147,61,Fiat
|
||||
20024,1800/2100,61,Fiat
|
||||
20028,850,61,Fiat
|
||||
20029,Brio,61,Fiat
|
||||
20030,Campagnola,61,Fiat
|
||||
20032,Dino,61,Fiat
|
||||
20034,Elba,61,Fiat
|
||||
20035,Marengo,61,Fiat
|
||||
20036,Mille,61,Fiat
|
||||
20037,Panorama,61,Fiat
|
||||
20038,Perla,61,Fiat
|
||||
20040,Premio,61,Fiat
|
||||
20041,Spazio,61,Fiat
|
||||
20042,Talento,61,Fiat
|
||||
20043,Tucan,61,Fiat
|
||||
20044,Viaggio,61,Fiat
|
||||
20045,Vivace,61,Fiat
|
||||
22557,Fullback I,61,Fiat
|
||||
2223,Bronco II,63,Ford
|
||||
2275,Courier,63,Ford
|
||||
20048,Bantam,63,Ford
|
||||
20049,Comete,63,Ford
|
||||
20050,Corcel,63,Ford
|
||||
20051,Corsair,63,Ford
|
||||
20053,Del Rey,63,Ford
|
||||
20054,Durango,63,Ford
|
||||
20056,Elite,63,Ford
|
||||
20058,EXP,63,Ford
|
||||
20066,GPW,63,Ford
|
||||
20069,Lobo,63,Ford
|
||||
20070,LTD II,63,Ford
|
||||
20072,Pampa,63,Ford
|
||||
20073,Pilot,63,Ford
|
||||
20074,Pinto,63,Ford
|
||||
20075,Popular,63,Ford
|
||||
20076,Prefect,63,Ford
|
||||
20081,Vedette,63,Ford
|
||||
20082,Verona,63,Ford
|
||||
20083,Zodiac,63,Ford
|
||||
679,CK,67,Geely
|
||||
685,LC,67,Geely
|
||||
20097,CD,67,Geely
|
||||
20098,FC,67,Geely
|
||||
20101,HQ,67,Geely
|
||||
20103,SL,67,Geely
|
||||
20104,Uliou,67,Geely
|
||||
724,Voleex C10,71,Great Wall
|
||||
20105,Steed,71,Great Wall
|
||||
20106,Voleex C20R,71,Great Wall
|
||||
20108,Voleex V80,71,Great Wall
|
||||
20110,X240,71,Great Wall
|
||||
20111,Junyi,72,Hafei
|
||||
20112,Lobo,72,Hafei
|
||||
20113,Luzun,72,Hafei
|
||||
20116,Saima,72,Hafei
|
||||
20117,Zhongyi,72,Hafei
|
||||
20119,CX20,73,Haima
|
||||
20122,Fstar,73,Haima
|
||||
20123,H2,73,Haima
|
||||
20124,M11,73,Haima
|
||||
20125,M6,73,Haima
|
||||
20126,M8,73,Haima
|
||||
20127,S3,73,Haima
|
||||
20128,S7,73,Haima
|
||||
20131,Adventra,75,Holden
|
||||
20132,Barina Spark,75,Holden
|
||||
20133,Belmont,75,Holden
|
||||
20134,Berlina,75,Holden
|
||||
20135,Brougham,75,Holden
|
||||
20136,Camira,75,Holden
|
||||
20137,Captiva,75,Holden
|
||||
20138,Colorado,75,Holden
|
||||
20139,Crewman,75,Holden
|
||||
20140,Drover,75,Holden
|
||||
20141,Epica,75,Holden
|
||||
20142,Gemini,75,Holden
|
||||
20143,Kingswood,75,Holden
|
||||
20144,Malibu,75,Holden
|
||||
20145,Monterey,75,Holden
|
||||
20147,Piazza,75,Holden
|
||||
20148,Sandman,75,Holden
|
||||
20149,Tigra,75,Holden
|
||||
20150,Torana,75,Holden
|
||||
20151,Viva,75,Holden
|
||||
20152,Volt,75,Holden
|
||||
20153,1300,76,Honda
|
||||
20155,Amaze,76,Honda
|
||||
20163,MR-V,76,Honda
|
||||
20171,S800,76,Honda
|
||||
20172,Spirior,76,Honda
|
||||
23399,Forza,76,Honda
|
||||
23400,CB650R,76,Honda
|
||||
20173,Santa Fe,77,HuangHai
|
||||
20192,i25,79,Hyundai
|
||||
20203,Santro,79,Hyundai
|
||||
20204,Santro Xing,79,Hyundai
|
||||
20216,Bardo,83,Iran Khodro
|
||||
20221,Alterra,85,Isuzu
|
||||
20222,Bellel,85,Isuzu
|
||||
20224,Campo,85,Isuzu
|
||||
20225,Como,85,Isuzu
|
||||
20226,Crosswind,85,Isuzu
|
||||
20229,Fuego,85,Isuzu
|
||||
20230,I-Mark,85,Isuzu
|
||||
20231,i-Series,85,Isuzu
|
||||
20235,Panther,85,Isuzu
|
||||
20236,Statesman de Ville,85,Isuzu
|
||||
20237,Wasp,85,Isuzu
|
||||
20238,WFR,85,Isuzu
|
||||
20996,Filly,85,Isuzu
|
||||
20241,240/340,88,Jaguar
|
||||
20242,420,88,Jaguar
|
||||
20243,Mark,88,Jaguar
|
||||
20244,SS,88,Jaguar
|
||||
20245,2500,89,Jeep
|
||||
20247,Commando,89,Jeep
|
||||
20250,Baowei,91,JMC
|
||||
20256,Yuhu,91,JMC
|
||||
20257,Yusheng,91,JMC
|
||||
948,Opirus,92,Kia
|
||||
20259,Besta,92,Kia
|
||||
20277,CCXR,93,Koenigsegg
|
||||
20278,350GT,95,Lamborghini
|
||||
20279,400GT,95,Lamborghini
|
||||
22540,Egoista I,95,Lamborghini
|
||||
996,Montecarlo,96,Lancia
|
||||
20283,2000,96,Lancia
|
||||
20287,Scorpion,96,Lancia
|
||||
20288,Stratos HF,96,Lancia
|
||||
1014,Series,97,Land Rover
|
||||
20293,Foison,101,Lifan
|
||||
20298,Cosmopolitan,102,Lincoln
|
||||
20299,Custom,102,Lincoln
|
||||
20300,K-Series,102,Lincoln
|
||||
20305,7,103,Lotus
|
||||
20306,Carlton,103,Lotus
|
||||
20307,Omega,103,Lotus
|
||||
20308,MM 775,106,Mahindra
|
||||
20311,3500 GT,111,Maserati
|
||||
20315,Mistral,111,Maserati
|
||||
20316,Racing,111,Maserati
|
||||
20317,Sebring,111,Maserati
|
||||
20319,Zeppelin,112,Maybach
|
||||
20320,808,113,Mazda
|
||||
20321,Allegro,113,Mazda
|
||||
20322,Bongo Brawny,113,Mazda
|
||||
20323,Bravo,113,Mazda
|
||||
20325,Clef,113,Mazda
|
||||
20326,Drifter,113,Mazda
|
||||
20330,GLC,113,Mazda
|
||||
20332,Miata,113,Mazda
|
||||
20333,Montrose,113,Mazda
|
||||
20334,Porter,113,Mazda
|
||||
20335,Porter Cab,113,Mazda
|
||||
20336,R100,113,Mazda
|
||||
20338,Roadpacer AP,113,Mazda
|
||||
20339,RX-2,113,Mazda
|
||||
1207,SLS AMG,116,Mercedes-Benz
|
||||
20367,Type 300,116,Mercedes-Benz
|
||||
22646,S-klas (w126),116,Mercedes-Benz
|
||||
20371,Bobcat,117,Mercury
|
||||
20373,Comet,117,Mercury
|
||||
20374,Commuter,117,Mercury
|
||||
20375,Custom,117,Mercury
|
||||
20376,Cyclone,117,Mercury
|
||||
20377,LN7,117,Mercury
|
||||
20378,Lynx,117,Mercury
|
||||
20379,M-47,117,Mercury
|
||||
20380,Medalist,117,Mercury
|
||||
20381,Meteor,117,Mercury
|
||||
20382,Monarch,117,Mercury
|
||||
20383,Montclair,117,Mercury
|
||||
20384,Park Lane,117,Mercury
|
||||
20385,S-55,117,Mercury
|
||||
20386,Turnpike Cruiser,117,Mercury
|
||||
20387,Voyager,117,Mercury
|
||||
20388,Zephyr,117,Mercury
|
||||
1240,B,119,MG
|
||||
20389,1100/1300,119,MG
|
||||
20391,A,119,MG
|
||||
20392,C,119,MG
|
||||
20393,Magnette,119,MG
|
||||
1289,Jeep,123,Mitsubishi
|
||||
20398,380,123,Mitsubishi
|
||||
20399,Adventure,123,Mitsubishi
|
||||
20402,Expo,123,Mitsubishi
|
||||
20406,Grunder,123,Mitsubishi
|
||||
20407,L100,123,Mitsubishi
|
||||
20411,Magna,123,Mitsubishi
|
||||
20412,Magnum,123,Mitsubishi
|
||||
20413,Maven,123,Mitsubishi
|
||||
20414,Mighty Max,123,Mitsubishi
|
||||
20415,Montero iO,123,Mitsubishi
|
||||
20416,Nimbus,123,Mitsubishi
|
||||
20418,Precis,123,Mitsubishi
|
||||
20420,Scorpion,123,Mitsubishi
|
||||
20421,Shogun Pinin,123,Mitsubishi
|
||||
20422,Shogun Sport,123,Mitsubishi
|
||||
20423,Towny,123,Mitsubishi
|
||||
20424,Verada,123,Mitsubishi
|
||||
20425,Warrior,123,Mitsubishi
|
||||
20426,Zinger,123,Mitsubishi
|
||||
21000,Fuzion,123,Mitsubishi
|
||||
20427,Classic Type F,124,Mitsuoka
|
||||
20428,70,127,Nissan
|
||||
20434,Axxess,127,Nissan
|
||||
20437,Cherry Cab,127,Nissan
|
||||
20443,Hikari,127,Nissan
|
||||
20445,Hustler,127,Nissan
|
||||
20448,Junior,127,Nissan
|
||||
20455,Multi,127,Nissan
|
||||
20461,Pintara,127,Nissan
|
||||
20464,Tsuru,127,Nissan
|
||||
20468,Delta 88,129,Oldsmobile
|
||||
20469,Deluxe 88,129,Oldsmobile
|
||||
20470,Dynamic 88,129,Oldsmobile
|
||||
20471,Super 88,129,Oldsmobile
|
||||
20810,98,129,Oldsmobile
|
||||
20472,Arena,130,Opel
|
||||
20473,Bedford Blitz,130,Opel
|
||||
20474,Blazer,130,Opel
|
||||
20476,Calais,130,Opel
|
||||
20480,302,135,Peugeot
|
||||
20481,401,135,Peugeot
|
||||
20483,Hoggar,135,Peugeot
|
||||
20486,Pars,135,Peugeot
|
||||
20487,Persia,135,Peugeot
|
||||
20488,Roa,135,Peugeot
|
||||
22596,Grand Espace,136,Piaggio
|
||||
22597,Grand Scenic,136,Piaggio
|
||||
22598,Grand C4 Picasso,136,Piaggio
|
||||
20489,Acadian,138,Pontiac
|
||||
20490,Astre,138,Pontiac
|
||||
20491,Chieftain,138,Pontiac
|
||||
20492,Executive,138,Pontiac
|
||||
20494,G3,138,Pontiac
|
||||
20495,Grand Safari,138,Pontiac
|
||||
20496,Grand Ville,138,Pontiac
|
||||
20498,Matiz,138,Pontiac
|
||||
20499,Pathfinder,138,Pontiac
|
||||
20500,Pursuit,138,Pontiac
|
||||
20501,Star Chief,138,Pontiac
|
||||
20502,Strato Chief,138,Pontiac
|
||||
20503,Streamliner,138,Pontiac
|
||||
20504,Sunburst,138,Pontiac
|
||||
20506,Super Chief,138,Pontiac
|
||||
20508,Ventura,138,Pontiac
|
||||
20515,3,147,Renault
|
||||
19350,Silver Dawn,149,Rolls-Royce
|
||||
20533,Flying Spur,149,Rolls-Royce
|
||||
20535,10,151,Rover
|
||||
20537,16,151,Rover
|
||||
20539,CityRover,151,Rover
|
||||
20543,P5,151,Rover
|
||||
20544,Quintet,151,Rover
|
||||
1647,PS10,154,Santana
|
||||
20547,1200/1430 Sport,157,SEAT
|
||||
20548,124,157,SEAT
|
||||
20549,127,157,SEAT
|
||||
20550,128,157,SEAT
|
||||
20551,131,157,SEAT
|
||||
20553,1400,157,SEAT
|
||||
20554,1430,157,SEAT
|
||||
20555,1500,157,SEAT
|
||||
20556,600/800,157,SEAT
|
||||
20557,850,157,SEAT
|
||||
20559,Panda,157,SEAT
|
||||
20560,Ritmo,157,SEAT
|
||||
20561,CEO,158,ShuangHuan
|
||||
1681,100,159,Skoda
|
||||
20562,1000 MB,159,Skoda
|
||||
20564,1201,159,Skoda
|
||||
20565,1202,159,Skoda
|
||||
20567,440/445/450,159,Skoda
|
||||
20569,Garde,159,Skoda
|
||||
20572,VOS,159,Skoda
|
||||
20577,1500,166,Subaru
|
||||
20580,Estratto,166,Subaru
|
||||
20581,FF-1,166,Subaru
|
||||
20582,Fiori,166,Subaru
|
||||
20584,Loyale,166,Subaru
|
||||
20585,Mini Jumbo,166,Subaru
|
||||
20587,Vortex,166,Subaru
|
||||
20592,Cultus Crescent,167,Suzuki
|
||||
20595,Forsa,167,Suzuki
|
||||
20597,Fun,167,Suzuki
|
||||
20598,Grand Escudo,167,Suzuki
|
||||
20599,Grand Nomade,167,Suzuki
|
||||
20600,Karimun Estilo,167,Suzuki
|
||||
20601,Khyber,167,Suzuki
|
||||
20602,Lapin,167,Suzuki
|
||||
20603,Margalla,167,Suzuki
|
||||
20604,Mehran,167,Suzuki
|
||||
20605,Mighty Boy,167,Suzuki
|
||||
20606,Potohar,167,Suzuki
|
||||
20607,Santana,167,Suzuki
|
||||
20608,SC100,167,Suzuki
|
||||
20612,Beta,170,Tatra
|
||||
20615,T87,170,Tatra
|
||||
20616,Chenglong,173,Tianma
|
||||
1820,AC,176,Toyota
|
||||
2153,Master,176,Toyota
|
||||
19582,Pixis,176,Toyota
|
||||
20627,AA,176,Toyota
|
||||
20628,AB,176,Toyota
|
||||
20629,AE,176,Toyota
|
||||
20630,Agya,176,Toyota
|
||||
20633,Briska,176,Toyota
|
||||
20634,Carri,176,Toyota
|
||||
20637,Condor,176,Toyota
|
||||
20644,Kijang,176,Toyota
|
||||
20645,Lexcen,176,Toyota
|
||||
20647,MasterAce,176,Toyota
|
||||
20648,MiniAce,176,Toyota
|
||||
20654,Quantum,176,Toyota
|
||||
20655,Reiz,176,Toyota
|
||||
20657,Space Cruiser,176,Toyota
|
||||
20659,Stallion,176,Toyota
|
||||
20660,Stout,176,Toyota
|
||||
20661,Super,176,Toyota
|
||||
20662,T100,176,Toyota
|
||||
20663,Tamaraw FX,176,Toyota
|
||||
20664,Tarago,176,Toyota
|
||||
20665,Tazz,176,Toyota
|
||||
20666,Tiara,176,Toyota
|
||||
20668,Unser,176,Toyota
|
||||
20670,Venture,176,Toyota
|
||||
20671,Vienta,176,Toyota
|
||||
20673,Zace,176,Toyota
|
||||
22632,Karl,181,Vauxhall
|
||||
22637, Signum,181,Vauxhall
|
||||
20678,Country Buggy,184,Volkswagen
|
||||
20958,Dune Buggy,184,Volkswagen
|
||||
1934,140,185,Volvo
|
||||
1937,260,185,Volvo
|
||||
19301,120,185,Volvo
|
||||
20693,340,185,Volvo
|
||||
20694,360,185,Volvo
|
||||
20695,Amazon,185,Volvo
|
||||
20696,Duett,185,Volvo
|
||||
20698,PV444/544,185,Volvo
|
||||
20699,PV60,185,Volvo
|
||||
20700,Megabusa,188,Westfield
|
||||
20938,GT MF4,189,Wiesmann
|
||||
1981,RX6400,192,Zotye
|
||||
22619,21213,215,VAZ (Lada)
|
||||
2024,2308 Ataman,216,GAZ
|
||||
20710,3105 Volga,216,GAZ
|
||||
20719,M-1,216,GAZ
|
||||
20939,233001 Tigr,216,GAZ
|
||||
20724,110,218,ZIL
|
||||
20732,2315,223,Moskvich
|
||||
20733,2335,223,Moskvich
|
||||
20737,Moto stroller,224,SMZ
|
||||
2272,Tropica Roadster,284,Renaissance Cars
|
||||
19306,Trumpf,3664,Adler
|
||||
20762,MPV,3755,Efini
|
||||
20763,MS-6,3755,Efini
|
||||
20764,MS-8,3755,Efini
|
||||
20765,MS-9,3755,Efini
|
||||
20766,RX-7,3755,Efini
|
||||
20769,Bliss,3757,Groz
|
||||
20770,Dacota,3757,Groz
|
||||
20776,Vertus,3757,Groz
|
||||
20781,Albaycín,3760,Hurtan
|
||||
20790,522,3767,Nysa
|
||||
20991,Other cars,3822,Other car
|
||||
20992,Other russian machines,3822,Other car
|
||||
20993,Self collected,3822,Other car
|
||||
22524,124 GT,4146,Abarth
|
||||
22526,124 Spider Turismo,4146,Abarth
|
||||
22527,595,4146,Abarth
|
||||
22528,595 Competizione,4146,Abarth
|
||||
22529,595 Pista,4146,Abarth
|
||||
22530,595 Turismo,4146,Abarth
|
||||
22531,695 Biposto,4146,Abarth
|
||||
22532,695 Rivale,4146,Abarth
|
||||
22533,695 XSR Yamaha,4146,Abarth
|
||||
22541,207A Boano Spyder Corsa,4146,Abarth
|
||||
22542,750 GT Zagato,4146,Abarth
|
||||
22543,1000 SP,4146,Abarth
|
||||
22545,2000 SE027,4146,Abarth
|
||||
22546,131 Rally,4146,Abarth
|
||||
22547,Lancia Rally 037 Stradale,4146,Abarth
|
||||
22548,Lancia Delta S4 Stradale (SE038),4146,Abarth
|
||||
22549,500 Pogea Racing Ares,4146,Abarth
|
||||
22585,Beijing BJ20,4147,Baic
|
||||
22586,ES 210,4147,Baic
|
||||
22588,Huansu S2,4147,Baic
|
||||
22589,Huansu S3,4147,Baic
|
||||
22590,Huansu S5,4147,Baic
|
||||
|
431
exports/series_without_trims.csv
Normal file
@ -0,0 +1,431 @@
|
||||
serie_id,serie_name,model_id,model_name,make_id,make_name
|
||||
53807,Crossover,11,MDX,2,Acura
|
||||
47558,Sprint Coupe 2-doors,40,Giulietta,3,Alfa Romeo
|
||||
47559,Sprint Speciale Coupe 2-doors,40,Giulietta,3,Alfa Romeo
|
||||
47562,SVZ Coupe 2-doors,40,Giulietta,3,Alfa Romeo
|
||||
47564,3 roadster 1-doors,55,Atom,6,Ariel
|
||||
47565,3.5 roadster 1-doors,55,Atom,6,Ariel
|
||||
2881,S liftback,67,Rapide,9,Aston Martin
|
||||
8329,Avant hatchback,75,100,10,Audi
|
||||
8331,Coupe,75,100,10,Audi
|
||||
8332,Sedan,75,100,10,Audi
|
||||
47567,Sedan,75,100,10,Audi
|
||||
47569,Sedan 4-doors,75,100,10,Audi
|
||||
5466,Sedan,78,80,10,Audi
|
||||
5467,Sedan 2-doors,78,80,10,Audi
|
||||
47571,Sedan 2-doors,78,80,10,Audi
|
||||
47573,Sedan 4-doors,78,80,10,Audi
|
||||
47574,wagon,78,80,10,Audi
|
||||
47576,Sedan 2-doors,78,80,10,Audi
|
||||
54107,Citycarver hatchback,80,A1,10,Audi
|
||||
53743,wagon 5 doors,83,A4 allroad,10,Audi
|
||||
54011,Avant wagon,84,A4,10,Audi
|
||||
54012,Allroad quattro wagon,84,A4,10,Audi
|
||||
53302,Sportback hatchback,100,RS 3,10,Audi
|
||||
47589,Avant Nogaro selection wagon 5-doors,101,RS 4,10,Audi
|
||||
53735,Sedan,108,S4,10,Audi
|
||||
54013,Avant wagon,108,S4,10,Audi
|
||||
53632,Coupe 2-doors,114,TT,10,Audi
|
||||
53633,Roadster 2-doors,114,TT,10,Audi
|
||||
53634,S Coupe 2-doors,114,TT,10,Audi
|
||||
54110,R Coupe 2-doors,131,Continental,15,Bentley
|
||||
54111,Coupe,131,Continental,15,Bentley
|
||||
62954,Flying Spur Sedan,131,Continental,15,Bentley
|
||||
5615,Sedan,186,Electra,25,Buick
|
||||
67451,Crossover,239,CS35,32,Changan
|
||||
5679,Sedan,250,Fora (A21),34,Chery
|
||||
5684,Hatchback,255,QQ,34,Chery
|
||||
47617,Hatchback 5-doors,259,Astra,35,Chevrolet
|
||||
47620,Conversion minivan 4-doors,260,Astro,35,Chevrolet
|
||||
5696,SUV,264,Blazer,35,Chevrolet
|
||||
5697,SUV,264,Blazer,35,Chevrolet
|
||||
14922,SUV,264,Blazer,35,Chevrolet
|
||||
47623,K5 SUV 3-doors,264,Blazer,35,Chevrolet
|
||||
47624,S-10 SUV 3-doors,264,Blazer,35,Chevrolet
|
||||
47625,S-10 SUV 5-doors,264,Blazer,35,Chevrolet
|
||||
47626,K5 SUV 3-doors,264,Blazer,35,Chevrolet
|
||||
47627,K1500 SUV,264,Blazer,35,Chevrolet
|
||||
47745,Station Wagon wagon,275,Classic,35,Chevrolet
|
||||
47746,Sedan,275,Classic,35,Chevrolet
|
||||
47747,Sedan,275,Classic,35,Chevrolet
|
||||
47760,50th Anniversary cabriolet 2-doors,280,Corvette,35,Chevrolet
|
||||
47761,50th Anniversary Coupe 2-doors,280,Corvette,35,Chevrolet
|
||||
47898,SS targa 2-doors,297,Monte Carlo,35,Chevrolet
|
||||
47899,SS Aerocoupe targa 2-doors,297,Monte Carlo,35,Chevrolet
|
||||
47901,targa,297,Monte Carlo,35,Chevrolet
|
||||
47915,Spyder hatchback 3-doors,298,Monza,35,Chevrolet
|
||||
47916,Sport hatchback 3-doors,298,Monza,35,Chevrolet
|
||||
47917,Hatchback,298,Monza,35,Chevrolet
|
||||
47918,wagon,298,Monza,35,Chevrolet
|
||||
54017,Sedan,298,Monza,35,Chevrolet
|
||||
5761,Cabriolet,315,Tracker,35,Chevrolet
|
||||
47951,SUV,315,Tracker,35,Chevrolet
|
||||
53780,Crossover 5-doors,417,Winstorm,42,Daewoo
|
||||
62956,Hatchback,428,Coo,44,Daihatsu
|
||||
8511,Hatchback 5-doors,430,Cuore,44,Daihatsu
|
||||
53618,Minivan,440,Move,44,Daihatsu
|
||||
3199,Sedan,470,Stanza,47,Datsun
|
||||
3200,Hatchback 5-doors,470,Stanza,47,Datsun
|
||||
45393,Crossover,623,Edge,63,Ford
|
||||
48042,RS wagon 5-doors,626,Escort,63,Ford
|
||||
48043,RS wagon 3-doors,626,Escort,63,Ford
|
||||
53452,Super Cab pickup 2-doors,658,Ranger,63,Ford
|
||||
53453,SuperCrew pickup 4-doors,658,Ranger,63,Ford
|
||||
6229,Hatchback 5-doors,687,MK Cross,67,Geely
|
||||
6309,wagon,753,Accord,76,Honda
|
||||
48145,US-spec Sedan 4-doors,753,Accord,76,Honda
|
||||
48147,US-spec Sedan 4-doors,753,Accord,76,Honda
|
||||
48148,Hatchback,753,Accord,76,Honda
|
||||
48149,GXR Sedan 4-doors,753,Accord,76,Honda
|
||||
48151,Sedan 4-doors,753,Accord,76,Honda
|
||||
48155,Hatchback,759,City,76,Honda
|
||||
48156,Cabriolet,759,City,76,Honda
|
||||
6350,Shuttle wagon 5-doors,761,Civic,76,Honda
|
||||
6352,Hatchback,761,Civic,76,Honda
|
||||
15285,Sedan 2-doors,761,Civic,76,Honda
|
||||
48183,Si Sedan 4-doors,761,Civic,76,Honda
|
||||
48185,RS Sedan 2-doors,761,Civic,76,Honda
|
||||
48187,Sedan 4-doors,761,Civic,76,Honda
|
||||
62957,Hatchback,765,CR-Z,76,Honda
|
||||
53781,Crossover 3-doors,777,HR-V,76,Honda
|
||||
48227,Pickup,784,Life,76,Honda
|
||||
48228,Hatchback,784,Life,76,Honda
|
||||
48229,Sedan 4-doors,784,Life,76,Honda
|
||||
48230,Sedan 2-doors,784,Life,76,Honda
|
||||
1094,Minivan,811,Zest,76,Honda
|
||||
48295,Sedan,831,Grandeur,79,Hyundai
|
||||
3525,Hatchback 5-doors,906,"J3 (Tongyue,Tojoy)",87,JAC
|
||||
6717,Sedan,1047,MKZ,102,Lincoln
|
||||
14997,Sedan,1047,MKZ,102,Lincoln
|
||||
48421,Stretch Limousine,1049,Town Car,102,Lincoln
|
||||
54135,Coupe,1106,Ghibli,111,Maserati
|
||||
3660,Hatchback,1125,323,113,Mazda
|
||||
6809,Hatchback 3-doors,1125,323,113,Mazda
|
||||
6813,wagon,1125,323,113,Mazda
|
||||
6814,Hatchback 5-doors,1125,323,113,Mazda
|
||||
6827,Sedan,1129,626,113,Mazda
|
||||
48449,Liftback,1129,626,113,Mazda
|
||||
6832,Sedan,1131,929,113,Mazda
|
||||
48453,Hatchback,1132,Atenza,113,Mazda
|
||||
48455,Hatchback,1132,Atenza,113,Mazda
|
||||
48459,Hatchback,1132,Atenza,113,Mazda
|
||||
48467,Double Cab pickup 4-doors,1137,B-Series,113,Mazda
|
||||
48469,Freestyle Cab pickup 4-doors,1137,B-Series,113,Mazda
|
||||
48472,Pickup,1137,B-Series,113,Mazda
|
||||
48473,Pickup,1137,B-Series,113,Mazda
|
||||
48474,Pickup,1137,B-Series,113,Mazda
|
||||
48490,Sedan,1142,Capella,113,Mazda
|
||||
48491,Coupe,1142,Capella,113,Mazda
|
||||
48492,Sedan,1142,Capella,113,Mazda
|
||||
8795,wagon,1156,Familia,113,Mazda
|
||||
45157,Hatchback 3-doors,1156,Familia,113,Mazda
|
||||
48496,Field Break hatchback 5-doors,1156,Familia,113,Mazda
|
||||
48500,Hatchback 3-doors,1156,Familia,113,Mazda
|
||||
48501,Hatchback 5-doors,1156,Familia,113,Mazda
|
||||
48502,Hatchback 3-doors,1156,Familia,113,Mazda
|
||||
48503,Hatchback 5-doors,1156,Familia,113,Mazda
|
||||
48504,Hatchback 3-doors,1156,Familia,113,Mazda
|
||||
48505,Presto Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48506,Grand Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48507,Grand Sedan 4-doors,1156,Familia,113,Mazda
|
||||
48508,Presto Sedan 4-doors,1156,Familia,113,Mazda
|
||||
48509,Grand Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48510,Presto Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48511,Presto Sedan 4-doors,1156,Familia,113,Mazda
|
||||
48512,Presto Rotary Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48513,Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48514,Rotary Sedan 4-doors,1156,Familia,113,Mazda
|
||||
48515,Presto Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48516,Sedan 2-doors,1156,Familia,113,Mazda
|
||||
48517,Sedan 4-doors,1156,Familia,113,Mazda
|
||||
48518,Rotary Coupe 2-doors,1156,Familia,113,Mazda
|
||||
48519,Sedan,1156,Familia,113,Mazda
|
||||
48520,Sedan 2-doors,1156,Familia,113,Mazda
|
||||
48521,Pickup,1156,Familia,113,Mazda
|
||||
48522,Coupe,1156,Familia,113,Mazda
|
||||
48523,Sedan 4-doors,1156,Familia,113,Mazda
|
||||
48532,Coupe,1164,MX-6,113,Mazda
|
||||
1564,Marvie SUV,1169,Proceed,113,Mazda
|
||||
8804,Coupe 2-doors,1173,RX-7,113,Mazda
|
||||
8805,Coupe,1173,RX-7,113,Mazda
|
||||
48536,Cabriolet,1173,RX-7,113,Mazda
|
||||
48538,Coupe,1173,RX-7,113,Mazda
|
||||
67452,Field Break crossover 5-doors,1178,Tribute,113,Mazda
|
||||
48547,Hatchback,1232,3,119,MG
|
||||
6999,Hatchback 3-doors,1250,M.Go,120,Microcar
|
||||
1676,Hatchback 3-doors,1252,MC,120,Microcar
|
||||
48548,Cooper cabriolet,1255,Cabrio,122,Mini
|
||||
48549,Cooper cabriolet,1255,Cabrio,122,Mini
|
||||
7022,Hatchback,1271,Colt,123,Mitsubishi
|
||||
7023,Hatchback 3-doors,1271,Colt,123,Mitsubishi
|
||||
47314,Hatchback 5-doors,1271,Colt,123,Mitsubishi
|
||||
48564,Ralliart hatchback 3-doors,1271,Colt,123,Mitsubishi
|
||||
48565,Turbo hatchback 3-doors,1271,Colt,123,Mitsubishi
|
||||
48566,Hatchback 3-doors,1271,Colt,123,Mitsubishi
|
||||
53876,Minivan,1274,Delica,123,Mitsubishi
|
||||
48579,Sedan,1284,Galant,123,Mitsubishi
|
||||
48580,wagon,1284,Galant,123,Mitsubishi
|
||||
48581,Coupe,1284,Galant,123,Mitsubishi
|
||||
48582,JDM wagon 3-doors,1284,Galant,123,Mitsubishi
|
||||
48617,Rothmans Special SUV 3-doors,1301,Pajero,123,Mitsubishi
|
||||
15759,Nismo Coupe 2-doors,1352,350Z,127,Nissan
|
||||
48635,Hatchback 3-doors,1356,Almera,127,Nissan
|
||||
48636,Sedan,1356,Almera,127,Nissan
|
||||
48637,Hatchback 5-doors,1356,Almera,127,Nissan
|
||||
48647,ARX Hardtop,1364,Bluebird,127,Nissan
|
||||
48705,Hatchback,1367,Cherry,127,Nissan
|
||||
1845,Hatchback,1386,Leaf,127,Nissan
|
||||
48780,wagon,1391,Maxima,127,Nissan
|
||||
53786,Crossover,1395,Murano,127,Nissan
|
||||
45849,Sedan,1422,Admiral,130,Opel
|
||||
48806,Cabriolet 4-doors,1422,Admiral,130,Opel
|
||||
3882,Sedan 4-doors,1426,Ascona,130,Opel
|
||||
3884,Hatchback,1426,Ascona,130,Opel
|
||||
7276,Sedan 2-doors,1426,Ascona,130,Opel
|
||||
7277,Sedan 4-doors,1426,Ascona,130,Opel
|
||||
48808,Cabriolet,1426,Ascona,130,Opel
|
||||
48809,Hatchback,1426,Ascona,130,Opel
|
||||
48810,Sedan 2-doors,1426,Ascona,130,Opel
|
||||
48812,Sedan 4-doors,1426,Ascona,130,Opel
|
||||
48815,Sedan 4-doors,1426,Ascona,130,Opel
|
||||
48817,Sedan 4-doors,1426,Ascona,130,Opel
|
||||
53779,Cabriolet,1426,Ascona,130,Opel
|
||||
48823,OPC cabriolet 2-doors,1427,Astra,130,Opel
|
||||
7307,Sedan 2-doors,1432,Commodore,130,Opel
|
||||
48836,Pickup,1433,Corsa,130,Opel
|
||||
48838,Sedan,1433,Corsa,130,Opel
|
||||
48840,Sedan,1433,Corsa,130,Opel
|
||||
48841,Pickup,1433,Corsa,130,Opel
|
||||
48843,Hatchback 5-doors,1433,Corsa,130,Opel
|
||||
48844,Hatchback 3-doors,1433,Corsa,130,Opel
|
||||
48845,GSi hatchback 3-doors,1433,Corsa,130,Opel
|
||||
48847,Hatchback 3-doors,1433,Corsa,130,Opel
|
||||
48848,GSi hatchback 3-doors,1433,Corsa,130,Opel
|
||||
48849,Sedan 4-doors,1433,Corsa,130,Opel
|
||||
48850,Sedan 2-doors,1433,Corsa,130,Opel
|
||||
48851,GT hatchback 3-doors,1433,Corsa,130,Opel
|
||||
54084,Hatchback 5 doors,1433,Corsa,130,Opel
|
||||
1934,GSE Coupe 3-doors,1443,Monza,130,Opel
|
||||
48874,Coupe,1443,Monza,130,Opel
|
||||
48875,Coupe,1443,Monza,130,Opel
|
||||
3916,Sedan,1445,Rekord,130,Opel
|
||||
46798,wagon 5-doors,1445,Rekord,130,Opel
|
||||
46803,wagon,1445,Rekord,130,Opel
|
||||
48878,wagon,1445,Rekord,130,Opel
|
||||
48882,wagon,1445,Rekord,130,Opel
|
||||
48883,Coupe,1445,Rekord,130,Opel
|
||||
48884,wagon,1445,Rekord,130,Opel
|
||||
48885,Sedan 4-doors,1445,Rekord,130,Opel
|
||||
48886,Sedan,1445,Rekord,130,Opel
|
||||
48887,Sedan,1446,Senator,130,Opel
|
||||
48906,Van hatchback 3-doors,1474,206,135,Peugeot
|
||||
48912,Sedan,1482,307,135,Peugeot
|
||||
48914,SW wagon,1483,308,135,Peugeot
|
||||
8988,Coupe,1517,Firebird,138,Pontiac
|
||||
48939,Cabriolet,1517,Firebird,138,Pontiac
|
||||
48940,Trans Am T-Roof targa,1517,Firebird,138,Pontiac
|
||||
48941,Trans Am Coupe 2-doors,1517,Firebird,138,Pontiac
|
||||
47375,R Coupe 2-doors,1536,911,139,Porsche
|
||||
49027,Safari hatchback 5-doors,1582,4,147,Renault
|
||||
49028,Jogging hatchback 5-doors,1582,4,147,Renault
|
||||
49029,Hatchback,1582,4,147,Renault
|
||||
49030,Hatchback,1582,4,147,Renault
|
||||
49032,Plein Air cabriolet,1582,4,147,Renault
|
||||
49034,Hatchback,1582,4,147,Renault
|
||||
54119,Minivan,1590,Espace,147,Renault
|
||||
53949,Stepway,1603,Sandero,147,Renault
|
||||
49082,Conquest minivan 5-doors,1604,Scenic,147,Renault
|
||||
4095,Hatchback 5-doors,1624,200 Series,151,Rover
|
||||
4127,Hatchback 5-doors,1648,Astra,155,Saturn
|
||||
4131,Coupe,1655,SC,155,Saturn
|
||||
54092,Hatchback,1673,Ibiza,157,SEAT
|
||||
53414,Preliator Coupe 2-doors,1697,C8,163,Spyker
|
||||
67455,STi crossover 5-doors,1716,Forester,166,Subaru
|
||||
67456,XL-7 crossover 5-doors,1745,Grand Vitara,167,Suzuki
|
||||
7711,Roadster,1758,Swift,167,Suzuki
|
||||
9175,Hatchback 3-doors,1761,Wagon R,167,Suzuki
|
||||
49181,TAG Heuer Sport roadster 2-doors,1783,Roadster,172,Tesla
|
||||
49182,Sport roadster 2-doors,1783,Roadster,172,Tesla
|
||||
49183,Roadster,1783,Roadster,172,Tesla
|
||||
47428,SUV,1791,4Runner,176,Toyota
|
||||
49184,SUV 5-doors,1791,4Runner,176,Toyota
|
||||
49185,SUV 3-doors,1791,4Runner,176,Toyota
|
||||
49187,Pickup,1791,4Runner,176,Toyota
|
||||
62983,SUV,1791,4Runner,176,Toyota
|
||||
7783,wagon,1810,Camry,176,Toyota
|
||||
15350,CN-spec Sedan 4-doors,1810,Camry,176,Toyota
|
||||
49208,CN-spec Sedan 4-doors,1810,Camry,176,Toyota
|
||||
7795,II Sedan 4-doors,1812,Carina,176,Toyota
|
||||
7797,Sedan 2-doors,1812,Carina,176,Toyota
|
||||
7798,II liftback,1812,Carina,176,Toyota
|
||||
7801,Sedan 4-doors,1812,Carina,176,Toyota
|
||||
47431,Sedan 4-doors,1812,Carina,176,Toyota
|
||||
53394,E wagon,1812,Carina,176,Toyota
|
||||
49243,Hardtop,1818,Corolla,176,Toyota
|
||||
54097,Liftback,1818,Corolla,176,Toyota
|
||||
53881,Van wagon,1821,Corona,176,Toyota
|
||||
53884,Hardtop Coupe,1821,Corona,176,Toyota
|
||||
54032,Van wagon,1821,Corona,176,Toyota
|
||||
49252,Coupe,1823,Cressida,176,Toyota
|
||||
7866,JDM Hardtop 4-doors,1826,Crown,176,Toyota
|
||||
49267,JDM Hardtop,1826,Crown,176,Toyota
|
||||
49287,TRD Special Edition SUV 5-doors,1832,FJ Cruiser,176,Toyota
|
||||
49288,"""Trail Teams"" SUV 5-doors",1832,FJ Cruiser,176,Toyota
|
||||
49297,Combi minivan,1839,Hiace,176,Toyota
|
||||
49300,Minivan 4-doors,1839,Hiace,176,Toyota
|
||||
49302,Combi minivan,1839,Hiace,176,Toyota
|
||||
49303,Minivan 4-doors,1839,Hiace,176,Toyota
|
||||
49304,Combi minivan,1839,Hiace,176,Toyota
|
||||
54033,SUV,1840,Highlander,176,Toyota
|
||||
7911,HJ47 cabriolet 2-doors,1849,Land Cruiser,176,Toyota
|
||||
4290,Cabriolet,1852,P 601,177,Trabant
|
||||
49359,"""Weltmeister"" Sedan 2-doors",1900,Beetle,184,Volkswagen
|
||||
47448,Tramper minivan 5-doors,1902,Caddy,184,Volkswagen
|
||||
49371,Tramper Maxi minivan 5-doors,1902,Caddy,184,Volkswagen
|
||||
49385,Sedan 2-doors,1906,Fox,184,Volkswagen
|
||||
53969,Minivan,1915,Multivan,184,Volkswagen
|
||||
67457,Crossover 5-doors,1927,Tiguan,184,Volkswagen
|
||||
2678,Coupe,1972,GT MF5,189,Wiesmann
|
||||
4579,Cabriolet 4-doors,2034,69,216,GAZ
|
||||
9409,wagon 5-doors,2076,426,223,Moskvich
|
||||
49489,Sedan,2110,S30,52,DongFeng
|
||||
49492,Minivan,2117,Prairie,127,Nissan
|
||||
49509,Milano X1 hatchback 3-doors,2122,Pulsar,127,Nissan
|
||||
67453,Crossover 5-doors,2123,Qashqai,127,Nissan
|
||||
49497,SSS hatchback,2130,Sentra,127,Nissan
|
||||
9493,Sedan,2136,Stanza,127,Nissan
|
||||
9494,Hatchback,2136,Stanza,127,Nissan
|
||||
49555,Sedan,2136,Stanza,127,Nissan
|
||||
9527,wagon,2150,Mark II,176,Toyota
|
||||
49612,TRD hatchback 5-doors,2154,Matrix,176,Toyota
|
||||
62919,S\XRS hatchback 5-doors,2154,Matrix,176,Toyota
|
||||
49636,Coupe,2193,Sprinter,176,Toyota
|
||||
62920,Hatchback,2211,Voltz,176,Toyota
|
||||
49673,Minivan,2218,Yaris Verso,176,Toyota
|
||||
49678,SS Regular Cab pickup 2-doors,2220,Silverado,35,Chevrolet
|
||||
49753,Minivan,2235,Caravelle,184,Volkswagen
|
||||
49759,Minivan,2245,Urvan,127,Nissan
|
||||
54078,Sedan,2286,XE,88,Jaguar
|
||||
15557,Hatchback 5-doors,2328,Focus ST,63,Ford
|
||||
15558,wagon 5-doors,2328,Focus ST,63,Ford
|
||||
15563,Hatchback 3-doors,2328,Focus ST,63,Ford
|
||||
15520,Coupe,2332,XKR,88,Jaguar
|
||||
15521,Cabriolet,2332,XKR,88,Jaguar
|
||||
15461,Hatchback 5-doors,2337,3 MPS,113,Mazda
|
||||
15599,Hatchback 3-doors,2356,Corsa OPC,130,Opel
|
||||
15437,Minivan,2375,Corolla Spacio,176,Toyota
|
||||
2093,Roadster,2388,918 Spyder,139,Porsche
|
||||
45007,Sedan Long,18882,XJR,88,Jaguar
|
||||
67454,Crossover 5-doors,19208,Tivoli,165,SsangYong
|
||||
49775,SS Sport trim pickup 2-doors,19269,El Camino,35,Chevrolet
|
||||
53587,Hatchback,19280,S3,87,JAC
|
||||
50973,Fastback,19305,M-72,216,GAZ
|
||||
46446,Coupe,19517,Toronado,129,Oldsmobile
|
||||
46570,Hardtop,19570,Ascot Innova,76,Honda
|
||||
46687,Sedan,19617,Kapitan,130,Opel
|
||||
46815,Sedan,19617,Kapitan,130,Opel
|
||||
49796,Sedan,19617,Kapitan,130,Opel
|
||||
49877,Coupe,19770,Coupe S,10,Audi
|
||||
50008,Rampside pickup,19832,Corvair,35,Chevrolet
|
||||
50014,Crew Cab pickup 4-doors,19833,D20,35,Chevrolet
|
||||
50015,Pickup 2-doors,19833,D20,35,Chevrolet
|
||||
50020,SUV 5-doors,19838,Grand Vitara,35,Chevrolet
|
||||
50028,Sedan,19843,Lova,35,Chevrolet
|
||||
50083,Sedan,19852,Optra,35,Chevrolet
|
||||
50087,SUV,19854,Samurai,35,Chevrolet
|
||||
50088,Cabriolet,19854,Samurai,35,Chevrolet
|
||||
50091,Sedan,19860,Swift,35,Chevrolet
|
||||
50092,Hatchback,19860,Swift,35,Chevrolet
|
||||
50095,Pickup,19863,Tornado,35,Chevrolet
|
||||
50096,SUV 5-doors,19864,Trooper,35,Chevrolet
|
||||
50097,Cabriolet,19864,Trooper,35,Chevrolet
|
||||
50098,SUV 5-doors,19864,Trooper,35,Chevrolet
|
||||
50099,SUV 3-doors,19864,Trooper,35,Chevrolet
|
||||
50126,Limousine,19945,DH27,45,Daimler
|
||||
50133,Hatchback,20010,Xiali N7,59,FAW
|
||||
50151,F-150 Tremor pickup 2-doors,20065,F-1,63,Ford
|
||||
50161,F-150 SVT Lighting pickup 2-doors,20065,F-1,63,Ford
|
||||
50162,F-150 SuperCab pickup 4-doors,20065,F-1,63,Ford
|
||||
50163,F-150 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50164,F-350 SuperCab pickup 4-doors,20065,F-1,63,Ford
|
||||
50165,F-150 SuperCab pickup 4-doors,20065,F-1,63,Ford
|
||||
50166,F-250 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50167,F-150 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50168,F-100 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50169,F-150 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50170,F-100 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50171,F-100 SuperCab pickup 4-doors,20065,F-1,63,Ford
|
||||
50172,F-250 SuperCab pickup 4-doors,20065,F-1,63,Ford
|
||||
50173,F-100 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50174,F-100 RegularCab pickup 2-doors,20065,F-1,63,Ford
|
||||
50175,F-100 pickup 2-doors,20065,F-1,63,Ford
|
||||
50176,F-100 pickup 2-doors,20065,F-1,63,Ford
|
||||
50177,Pickup,20065,F-1,63,Ford
|
||||
53702,Sedan,20099,GE,67,Geely
|
||||
50198,Sedan,20107,Voleex C50,71,Great Wall
|
||||
50215,Hatchback,20177,Avega,79,Hyundai
|
||||
50239,Sedan,20197,Langdong,79,Hyundai
|
||||
50257,Sedan,20208,Sonica,79,Hyundai
|
||||
50266,Minivan,20211,TQ,79,Hyundai
|
||||
53803,Pickup,20248,Gladiator,89,Jeep
|
||||
50350,Coupe,20309,Berlinetta,108,Marlin
|
||||
50351,Cabriolet,20310,RoadSter,108,Marlin
|
||||
50377,AMG hatchback 5-doors,20342,A-Class,116,Mercedes-Benz
|
||||
62911,AMG wagon 5-doors,20350,E-Class,116,Mercedes-Benz
|
||||
50540,Cabriolet,20355,G-Class,116,Mercedes-Benz
|
||||
50580,AMG roadster 2-doors,20362,SL-Class,116,Mercedes-Benz
|
||||
50629,Coupe,20364,S-Class,116,Mercedes-Benz
|
||||
50630,Sedan,20364,S-Class,116,Mercedes-Benz
|
||||
53805,Maybach cabriolet 2-doors,20364,S-Class,116,Mercedes-Benz
|
||||
50654,Minivan,20429,Altra,127,Nissan
|
||||
50656,Sedan,20433,Auster,127,Nissan
|
||||
50657,Hatchback,20433,Auster,127,Nissan
|
||||
50660,JX Sedan,20433,Auster,127,Nissan
|
||||
50661,JX hatchback,20433,Auster,127,Nissan
|
||||
50664,Liftback,20433,Auster,127,Nissan
|
||||
50665,Sedan,20433,Auster,127,Nissan
|
||||
50705,Hatchback,20451,Latio,127,Nissan
|
||||
50732,Liftback,20465,Violet,127,Nissan
|
||||
50733,Hatchback,20465,Violet,127,Nissan
|
||||
50734,wagon,20465,Violet,127,Nissan
|
||||
50736,Sedan,20465,Violet,127,Nissan
|
||||
50740,Hatchback,20466,Violet Liberta,127,Nissan
|
||||
50752,Sedan,20478,Super 6,130,Opel
|
||||
50768,GTA cabriolet 2-doors,20517,Alliance,147,Renault
|
||||
50769,Cabriolet,20517,Alliance,147,Renault
|
||||
50770,GTA Sedan 2-doors,20517,Alliance,147,Renault
|
||||
50771,Sedan 4-doors,20517,Alliance,147,Renault
|
||||
50772,Sedan,20518,Celtaquatre,147,Renault
|
||||
50773,Prairie wagon 5-doors,20519,Colorale,147,Renault
|
||||
50775,Sedan,20521,Juvaquatre,147,Renault
|
||||
50777,wagon,20521,Juvaquatre,147,Renault
|
||||
50778,Hatchback 5-doors,20522,Le Car,147,Renault
|
||||
50819,Sedan,20527,Monaquatre,147,Renault
|
||||
50820,Sedan,20528,Primaquatre,147,Renault
|
||||
50821,Sport Sedan 4-doors,20528,Primaquatre,147,Renault
|
||||
50822,Sedan,20528,Primaquatre,147,Renault
|
||||
50896,wagon,20683,Magotan,184,Volkswagen
|
||||
50910,Coupe,20686,Quantum,184,Volkswagen
|
||||
50927,Pickup,20689,Saveiro,184,Volkswagen
|
||||
50928,Pickup,20689,Saveiro,184,Volkswagen
|
||||
50929,Pickup,20689,Saveiro,184,Volkswagen
|
||||
50935,Limousine,20702,13 Chaika,216,GAZ
|
||||
50936,Cabriolet,20702,13 Chaika,216,GAZ
|
||||
50937,Cabriolet,20703,14 Chaika,216,GAZ
|
||||
50972,Sedan,20720,M-12 ZiM,216,GAZ
|
||||
50974,Fastback,20721,M-20 Pobeda,216,GAZ
|
||||
50977,Fastback,20721,M-20 Pobeda,216,GAZ
|
||||
51009,Roadster,20752,3000,3749,Austin Healey
|
||||
51016,Board,20760,V22,3754,DFSK
|
||||
51017,Van,20761,V25,3754,DFSK
|
||||
51019,Pickup,20771,Fox,3757,Groz
|
||||
51021,SUV,20773,Rocky,3757,Groz
|
||||
51022,SUV,20774,Shuttle,3757,Groz
|
||||
51023,Pickup,20775,Target,3757,Groz
|
||||
53705,Crossover,22512,SX11,67,Geely
|
||||
53713,Crossover,22515,X80,101,Lifan
|
||||
53731,Coupe,22544,2000 Pininfarina,4146,Abarth
|
||||
54049,Crossover,22604,FY11,67,Geely
|
||||
14597,Sedan,22971,Bonus 3 (E3/A19),34,Chery
|
||||
63668,Roadster TR4A,23165,TR4,179,Triumph
|
||||
71839,Pickup Double cabin,26675,F30,4948,Changan Kuayue (KYC)
|
||||
|
248
inventory/car_hierarchy_analysis.ipynb
Normal file
@ -0,0 +1,248 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"# Setup Django environment\n",
|
||||
"import os\n",
|
||||
"import sys\n",
|
||||
"import django\n",
|
||||
"\n",
|
||||
"# Set up Django environment\n",
|
||||
"os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'car_inventory.settings')\n",
|
||||
"django.setup()\n",
|
||||
"\n",
|
||||
"# Import models\n",
|
||||
"from inventory.models import CarMake, CarModel, CarSerie, CarTrim"
|
||||
],
|
||||
"id": "64ce4f8ed9e90534"
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"# Get all car makes\n",
|
||||
"all_makes = CarMake.objects.all()\n",
|
||||
"total_makes = all_makes.count()\n",
|
||||
"\n",
|
||||
"# Find makes without models using annotations\n",
|
||||
"from django.db.models import Count\n",
|
||||
"makes_without_models = CarMake.objects.annotate(model_count=Count('carmodel')).filter(model_count=0)\n",
|
||||
"makes_without_models_count = makes_without_models.count()\n",
|
||||
"\n",
|
||||
"print(f\"Total car makes: {total_makes}\")\n",
|
||||
"print(f\"Car makes without models: {makes_without_models_count} ({makes_without_models_count/total_makes*100:.2f}%)\")\n",
|
||||
"\n",
|
||||
"# Display the first 10 makes without models\n",
|
||||
"if makes_without_models:\n",
|
||||
" print(\"\\nSample of car makes without models:\")\n",
|
||||
" for make in makes_without_models[:10]:\n",
|
||||
" print(f"
|
||||
],
|
||||
"id": "7807a14272fbf44b"
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"# Get all car models\n",
|
||||
"all_models = CarModel.objects.all()\n",
|
||||
"total_models = all_models.count()\n",
|
||||
"\n",
|
||||
"# Find models without series using annotations\n",
|
||||
"models_without_series = CarModel.objects.annotate(serie_count=Count('carserie')).filter(serie_count=0)\n",
|
||||
"models_without_series_count = models_without_series.count()\n",
|
||||
"\n",
|
||||
"print(f\"\\nTotal car models: {total_models}\")\n",
|
||||
"print(f\"Car models without series: {models_without_series_count} ({models_without_series_count/total_models*100:.2f}%)\")\n",
|
||||
"\n",
|
||||
"# Display the first 10 models without series\n",
|
||||
"if models_without_series:\n",
|
||||
" print(\"\\nSample of car models without series:\")\n",
|
||||
" for model in models_without_series[:10]:\n",
|
||||
" print(f\"- {model.name} (Make: {model.id_car_make."
|
||||
],
|
||||
"id": "318b5426d54f0705"
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"# Get all car series\n",
|
||||
"all_series = CarSerie.objects.all()\n",
|
||||
"total_series = all_series.count()\n",
|
||||
"\n",
|
||||
"# Find series without trims using annotations\n",
|
||||
"series_without_trims = CarSerie.objects.annotate(trim_count=Count('cartrim')).filter(trim_count=0)\n",
|
||||
"series_without_trims_count = series_without_trims.count()\n",
|
||||
"\n",
|
||||
"print(f\"\\nTotal car series: {total_series}\")\n",
|
||||
"print(f\"Car series without trims: {series_without_trims_count} ({series_without_trims_count/total_series*100:.2f}%)\")\n",
|
||||
"\n",
|
||||
"# Display the first 10 series without trims\n",
|
||||
"if series_without_trims:\n",
|
||||
" print(\"\\nSample of car series without trims:\")\n",
|
||||
" for serie in series_without_trims[:10]:\n",
|
||||
" print(f\"- {serie.name} (Model: {serie.id_car_model.name}, Make: {serie.id_car_model.id_car_make."
|
||||
],
|
||||
"id": "30eaf3383d2b34e1"
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy as np\n",
|
||||
"\n",
|
||||
"# Data for the chart\n",
|
||||
"categories = ['Makes', 'Models', 'Series']\n",
|
||||
"total_counts = [total_makes, total_models, total_series]\n",
|
||||
"empty_counts = [makes_without_models_count, models_without_series_count, series_without_trims_count]\n",
|
||||
"with_children_counts = [total_makes - makes_without_models_count,\n",
|
||||
" total_models - models_without_series_count,\n",
|
||||
" total_series - series_without_trims_count]\n",
|
||||
"\n",
|
||||
"# Create a figure with two subplots\n",
|
||||
"fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))\n",
|
||||
"\n",
|
||||
"# Bar chart showing total vs. without children\n",
|
||||
"x = np.arange(len(categories))\n",
|
||||
"width = 0.35\n",
|
||||
"\n",
|
||||
"ax1.bar(x - width/2, total_counts, width, label='Total')\n",
|
||||
"ax1.bar(x + width/2, empty_counts, width, label='Without children')\n",
|
||||
"ax1.set_xticks(x)\n",
|
||||
"ax1.set_xticklabels(categories)\n",
|
||||
"ax1.set_ylabel('Count')\n",
|
||||
"ax1.set_title('Car Hierarchy Analysis')\n",
|
||||
"ax1.legend()\n",
|
||||
"\n",
|
||||
"# Pie charts showing percentage with/without children\n",
|
||||
"labels = ['With children', 'Without children']\n",
|
||||
"sizes = [[with_children_counts[i], empty_counts[i]] for i in range(3)]\n",
|
||||
"colors = [['#66b3ff', '#ff9999'], ['#99ff99', '#ffcc99'], ['#c2c2f0', '#ffb3e6']]\n",
|
||||
"\n",
|
||||
"for i, category in enumerate(categories):\n",
|
||||
" if i == 0:\n",
|
||||
" ax2.pie(sizes[i], labels=labels, colors=colors[i], autopct='%1.1f%%',\n",
|
||||
" startangle=90, wedgeprops={'alpha':0.7})\n",
|
||||
" centre_circle = plt.Circle((0,0),0.70,fc='white')\n",
|
||||
" ax2.add_patch(centre_circle)\n",
|
||||
" ax2.text(0, 0, category, horizontalalignment='center', verticalalignment='center')\n",
|
||||
" else:\n",
|
||||
" # Calculate position for smaller pie charts\n",
|
||||
" x_offset = 1.2 * (i-1)\n",
|
||||
" ax2.pie(sizes[i], colors=colors[i], autopct='%1.1f%%',\n",
|
||||
" startangle=90, wedgeprops={'alpha':0.7},\n",
|
||||
" center=(x_offset, 0), radius=0.5)\n",
|
||||
" centre_circle = plt.Circle((x_offset,0),0.35,fc='white')\n",
|
||||
" ax2.add_patch(centre_circle)\n",
|
||||
" ax2.text(x_offset, 0, category, horizontalalignment='center', verticalalignment='center')\n",
|
||||
"\n",
|
||||
"ax2.axis('equal')\n",
|
||||
"ax2.set_title('Percentage Distribution')\n",
|
||||
"\n",
|
||||
"plt.tight_layout()\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"id": "d23f0edf1ff334f7"
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"# Find all trims and go up the hierarchy to find complete chains\n",
|
||||
"complete_hierarchies = []\n",
|
||||
"\n",
|
||||
"for trim in CarTrim.objects.select_related('id_car_serie__id_car_model__id_car_make')[:20]:\n",
|
||||
" serie = trim.id_car_serie\n",
|
||||
" model = serie.id_car_model\n",
|
||||
" make = model.id_car_make\n",
|
||||
"\n",
|
||||
" complete_hierarchies.append({\n",
|
||||
" 'make': make.name,\n",
|
||||
" 'model': model.name,\n",
|
||||
" 'serie': serie.name,\n",
|
||||
" 'trim': trim.name\n",
|
||||
" })\n",
|
||||
"\n",
|
||||
"# Display as a formatted table\n",
|
||||
"from IPython.display import display, HTML\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"if complete_hierarchies:\n",
|
||||
" print(\"\\nSample of complete car hierarchies:\")\n",
|
||||
" df = pd.DataFrame(complete_hierarchies)\n",
|
||||
" display(HTML(df.to_html(index=False"
|
||||
],
|
||||
"id": "3cd9822a8ac1a880"
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"cell_type": "code",
|
||||
"outputs": [],
|
||||
"execution_count": null,
|
||||
"source": [
|
||||
"# Create DataFrames for export\n",
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"# Makes without models\n",
|
||||
"makes_without_models_df = pd.DataFrame({\n",
|
||||
" 'make_id': [make.id_car_make for make in makes_without_models],\n",
|
||||
" 'make_name': [make.name for make in makes_without_models],\n",
|
||||
" 'is_sa_import': [make.is_sa_import for make in makes_without_models]\n",
|
||||
"})\n",
|
||||
"\n",
|
||||
"# Models without series\n",
|
||||
"models_without_series_df = pd.DataFrame({\n",
|
||||
" 'model_id': [model.id_car_model for model in models_without_series],\n",
|
||||
" 'model_name': [model.name for model in models_without_series],\n",
|
||||
" 'make_id': [model.id_car_make.id_car_make for model in models_without_series],\n",
|
||||
" 'make_name': [model.id_car_make.name for model in models_without_series]\n",
|
||||
"})\n",
|
||||
"\n",
|
||||
"# Series without trims\n",
|
||||
"series_without_trims_df = pd.DataFrame({\n",
|
||||
" 'serie_id': [serie.id_car_serie for serie in series_without_trims],\n",
|
||||
" 'serie_name': [serie.name for serie in series_without_trims],\n",
|
||||
" 'model_id': [serie.id_car_model.id_car_model for serie in series_without_trims],\n",
|
||||
" 'model_name': [serie.id_car_model.name for serie in series_without_trims],\n",
|
||||
" 'make_id': [serie.id_car_model.id_car_make.id_car_make for serie in series_without_trims],\n",
|
||||
" 'make_name': [serie.id_car_model.id_car_make.name for serie in series_without_trims]\n",
|
||||
"})\n",
|
||||
"\n",
|
||||
"# Save to CSV files (uncomment to use)\n",
|
||||
"# makes_without_models_df.to_csv('makes_without_models.csv', index=False)\n",
|
||||
"# models_without_series_df.to_csv('models_without_series.csv', index=False)\n",
|
||||
"# series_without_trims_df.to_csv('series_without_trims.csv', index=False)\n",
|
||||
"\n",
|
||||
"# Display the first few rows of each DataFrame\n",
|
||||
"print(\"\\nMakes without models (first 5):\")\n",
|
||||
"display(makes_without_models_df.head())\n",
|
||||
"\n",
|
||||
"print(\"\\nModels without series (first 5):\")\n",
|
||||
"display(models_without_series_df.head())\n",
|
||||
"\n",
|
||||
"print(\"\\nSeries without trims (first 5):\")\n",
|
||||
"display(series_without_trims_df.head())"
|
||||
],
|
||||
"id": "6edeb052b327a48c"
|
||||
}
|
||||
],
|
||||
"metadata": {},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
139
inventory/management/commands/analyze_car_hierarchy.py
Normal file
@ -0,0 +1,139 @@
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.db.models import Count
|
||||
from inventory.models import CarMake, CarModel, CarSerie, CarTrim
|
||||
import csv
|
||||
import os
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Analyzes the car hierarchy to identify makes without models, models without series, and series without trims'
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument(
|
||||
'--export',
|
||||
action='store_true',
|
||||
help='Export results to CSV files',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--export-path',
|
||||
type=str,
|
||||
default='exports',
|
||||
help='Directory to export CSV files (default: "exports")',
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
export = options['export']
|
||||
export_path = options['export_path']
|
||||
|
||||
# Create export directory if needed
|
||||
if export:
|
||||
export_dir = os.path.join(settings.BASE_DIR, export_path)
|
||||
if not os.path.exists(export_dir):
|
||||
os.makedirs(export_dir)
|
||||
|
||||
# Analyze makes without models
|
||||
all_makes = CarMake.objects.all()
|
||||
total_makes = all_makes.count()
|
||||
makes_without_models = CarMake.objects.annotate(model_count=Count('carmodel')).filter(model_count=0)
|
||||
makes_without_models_count = makes_without_models.count()
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(f"Total car makes: {total_makes}"))
|
||||
self.stdout.write(self.style.SUCCESS(
|
||||
f"Car makes without models: {makes_without_models_count} "
|
||||
f"({makes_without_models_count/total_makes*100:.2f}% of all makes)"
|
||||
))
|
||||
|
||||
if makes_without_models_count > 0:
|
||||
self.stdout.write("\nSample of car makes without models:")
|
||||
for make in makes_without_models[:5]:
|
||||
self.stdout.write(f"- {make.name}")
|
||||
|
||||
# Analyze models without series
|
||||
all_models = CarModel.objects.all()
|
||||
total_models = all_models.count()
|
||||
models_without_series = CarModel.objects.annotate(serie_count=Count('carserie')).filter(serie_count=0)
|
||||
models_without_series_count = models_without_series.count()
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(f"\nTotal car models: {total_models}"))
|
||||
self.stdout.write(self.style.SUCCESS(
|
||||
f"Car models without series: {models_without_series_count} "
|
||||
f"({models_without_series_count/total_models*100:.2f}% of all models)"
|
||||
))
|
||||
|
||||
if models_without_series_count > 0:
|
||||
self.stdout.write("\nSample of car models without series:")
|
||||
for model in models_without_series[:5]:
|
||||
self.stdout.write(f"- {model.name} (Make: {model.id_car_make.name})")
|
||||
|
||||
# Analyze series without trims
|
||||
all_series = CarSerie.objects.all()
|
||||
total_series = all_series.count()
|
||||
series_without_trims = CarSerie.objects.annotate(trim_count=Count('cartrim')).filter(trim_count=0)
|
||||
series_without_trims_count = series_without_trims.count()
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(f"\nTotal car series: {total_series}"))
|
||||
self.stdout.write(self.style.SUCCESS(
|
||||
f"Car series without trims: {series_without_trims_count} "
|
||||
f"({series_without_trims_count/total_series*100:.2f}% of all series)"
|
||||
))
|
||||
|
||||
if series_without_trims_count > 0:
|
||||
self.stdout.write("\nSample of car series without trims:")
|
||||
for serie in series_without_trims[:5]:
|
||||
self.stdout.write(
|
||||
f"- {serie.name} (Model: {serie.id_car_model.name}, "
|
||||
f"Make: {serie.id_car_model.id_car_make.name})"
|
||||
)
|
||||
|
||||
# Export data if requested
|
||||
if export:
|
||||
# Export makes without models
|
||||
if makes_without_models_count > 0:
|
||||
filepath = os.path.join(export_dir, 'makes_without_models.csv')
|
||||
with open(filepath, 'w', newline='') as csvfile:
|
||||
writer = csv.writer(csvfile)
|
||||
writer.writerow(['make_id', 'make_name', 'is_sa_import'])
|
||||
for make in makes_without_models:
|
||||
writer.writerow([make.id_car_make, make.name, make.is_sa_import])
|
||||
self.stdout.write(self.style.SUCCESS(f"Exported makes without models to {filepath}"))
|
||||
|
||||
# Export models without series
|
||||
if models_without_series_count > 0:
|
||||
filepath = os.path.join(export_dir, 'models_without_series.csv')
|
||||
with open(filepath, 'w', newline='') as csvfile:
|
||||
writer = csv.writer(csvfile)
|
||||
writer.writerow(['model_id', 'model_name', 'make_id', 'make_name'])
|
||||
for model in models_without_series:
|
||||
writer.writerow([
|
||||
model.id_car_model,
|
||||
model.name,
|
||||
model.id_car_make.id_car_make,
|
||||
model.id_car_make.name
|
||||
])
|
||||
self.stdout.write(self.style.SUCCESS(f"Exported models without series to {filepath}"))
|
||||
|
||||
# Export series without trims
|
||||
if series_without_trims_count > 0:
|
||||
filepath = os.path.join(export_dir, 'series_without_trims.csv')
|
||||
with open(filepath, 'w', newline='') as csvfile:
|
||||
writer = csv.writer(csvfile)
|
||||
writer.writerow(['serie_id', 'serie_name', 'model_id', 'model_name', 'make_id', 'make_name'])
|
||||
for serie in series_without_trims:
|
||||
writer.writerow([
|
||||
serie.id_car_serie,
|
||||
serie.name,
|
||||
serie.id_car_model.id_car_model,
|
||||
serie.id_car_model.name,
|
||||
serie.id_car_model.id_car_make.id_car_make,
|
||||
serie.id_car_model.id_car_make.name
|
||||
])
|
||||
self.stdout.write(self.style.SUCCESS(f"Exported series without trims to {filepath}"))
|
||||
|
||||
# Summary
|
||||
self.stdout.write("\n" + "="*50)
|
||||
self.stdout.write(self.style.SUCCESS("SUMMARY"))
|
||||
self.stdout.write("="*50)
|
||||
self.stdout.write(f"Total makes: {total_makes} | Without models: {makes_without_models_count} ({makes_without_models_count/total_makes*100:.2f}%)")
|
||||
self.stdout.write(f"Total models: {total_models} | Without series: {models_without_series_count} ({models_without_series_count/total_models*100:.2f}%)")
|
||||
self.stdout.write(f"Total series: {total_series} | Without trims: {series_without_trims_count} ({series_without_trims_count/total_series*100:.2f}%)")
|
||||
BIN
static/.DS_Store
vendored
BIN
static/images/.DS_Store
vendored
BIN
static/images/cars/.DS_Store
vendored
Normal file
BIN
static/images/cars/bus.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
static/images/cars/cabriolet.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
static/images/cars/commercial.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
static/images/cars/coupe.png
Normal file
|
After Width: | Height: | Size: 1003 KiB |
BIN
static/images/cars/crossover.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
static/images/cars/double_pickup.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
static/images/cars/hatchback.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
static/images/cars/minivan.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
static/images/cars/sedan.png
Normal file
|
After Width: | Height: | Size: 987 KiB |
BIN
static/images/cars/single_pickup.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
static/images/cars/sport_car.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
BIN
static/images/cars/suv.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
static/images/cars/van.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
static/images/cars/van_cargo.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
1
static/images/convertible.svg
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
1
static/images/coupe.svg
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
1
static/images/sedan.svg
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
1
static/images/suv.svg
Normal file
|
After Width: | Height: | Size: 8.6 KiB |