diff --git a/.idea/.generators b/.idea/.generators new file mode 100644 index 00000000..16189766 --- /dev/null +++ b/.idea/.generators @@ -0,0 +1,8 @@ + + diff --git a/.idea/.rakeTasks b/.idea/.rakeTasks new file mode 100644 index 00000000..f3647c9a --- /dev/null +++ b/.idea/.rakeTasks @@ -0,0 +1,7 @@ + + diff --git a/.idea/dataSources.local.xml b/.idea/dataSources.local.xml new file mode 100644 index 00000000..b207c0ac --- /dev/null +++ b/.idea/dataSources.local.xml @@ -0,0 +1,33 @@ + + + + + + secretaria_ppgi + + + + + " + + + master_key + test_user + + + + + " + + + test_user + + + + + + + + + + \ No newline at end of file diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 00000000..ed3557d7 --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,29 @@ + + + + + postgresql + true + true + $PROJECT_DIR$/config/database.yml + org.postgresql.Driver + jdbc:postgresql://localhost:5432/secretaria_ppgi_production + + + postgresql + true + true + $PROJECT_DIR$/config/database.yml + org.postgresql.Driver + jdbc:postgresql://localhost:5432/secretaria_ppgi_development + + + postgresql + true + true + $PROJECT_DIR$/config/database.yml + org.postgresql.Driver + jdbc:postgresql://localhost:5432/secretaria_ppgi_test + + + \ No newline at end of file diff --git a/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722.xml b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722.xml new file mode 100644 index 00000000..37161f1c --- /dev/null +++ b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722.xml @@ -0,0 +1,1741 @@ + + + + + 13.0 + mdy + true ACDT +true ACSST +false ACST +false ACT +false ACWST +true ADT +true AEDT +true AESST +false AEST +false AFT +true AKDT +false AKST +true ALMST +false ALMT +false AMST +false AMT +false ANAST +false ANAT +false ARST +false ART +false AST +true AWSST +false AWST +true AZOST +false AZOT +false AZST +false AZT +false Africa/Abidjan +false Africa/Accra +false Africa/Addis_Ababa +false Africa/Algiers +false Africa/Asmara +false Africa/Asmera +false Africa/Bamako +false Africa/Bangui +false Africa/Banjul +false Africa/Bissau +false Africa/Blantyre +false Africa/Brazzaville +false Africa/Bujumbura +false Africa/Cairo +false Africa/Casablanca +false Africa/Ceuta +false Africa/Conakry +false Africa/Dakar +false Africa/Dar_es_Salaam +false Africa/Djibouti +false Africa/Douala +false Africa/El_Aaiun +false Africa/Freetown +false Africa/Gaborone +false Africa/Harare +false Africa/Johannesburg +false Africa/Juba +false Africa/Kampala +false Africa/Khartoum +false Africa/Kigali +false Africa/Kinshasa +false Africa/Lagos +false Africa/Libreville +false Africa/Lome +false Africa/Luanda +false Africa/Lubumbashi +false Africa/Lusaka +false Africa/Malabo +false Africa/Maputo +false Africa/Maseru +false Africa/Mbabane +false Africa/Mogadishu +false Africa/Monrovia +false Africa/Nairobi +false Africa/Ndjamena +false Africa/Niamey +false Africa/Nouakchott +false Africa/Ouagadougou +false Africa/Porto-Novo +false Africa/Sao_Tome +false Africa/Timbuktu +false Africa/Tripoli +false Africa/Tunis +false Africa/Windhoek +false America/Adak +false America/Anchorage +false America/Anguilla +false America/Antigua +false America/Araguaina +false America/Argentina/Buenos_Aires +false America/Argentina/Catamarca +false America/Argentina/ComodRivadavia +false America/Argentina/Cordoba +false America/Argentina/Jujuy +false America/Argentina/La_Rioja +false America/Argentina/Mendoza +false America/Argentina/Rio_Gallegos +false America/Argentina/Salta +false America/Argentina/San_Juan +false America/Argentina/San_Luis +false America/Argentina/Tucuman +false America/Argentina/Ushuaia +false America/Aruba +true America/Asuncion +false America/Atikokan +false America/Atka +false America/Bahia +false America/Bahia_Banderas +false America/Barbados +false America/Belem +false America/Belize +false America/Blanc-Sablon +false America/Boa_Vista +false America/Bogota +false America/Boise +false America/Buenos_Aires +false America/Cambridge_Bay +false America/Campo_Grande +false America/Cancun +false America/Caracas +false America/Catamarca +false America/Cayenne +false America/Cayman +false America/Chicago +false America/Chihuahua +false America/Coral_Harbour +false America/Cordoba +false America/Costa_Rica +false America/Creston +false America/Cuiaba +false America/Curacao +false America/Danmarkshavn +false America/Dawson +false America/Dawson_Creek +false America/Denver +false America/Detroit +false America/Dominica +false America/Edmonton +false America/Eirunepe +false America/El_Salvador +false America/Ensenada +false America/Fort_Nelson +false America/Fort_Wayne +false America/Fortaleza +false America/Glace_Bay +false America/Godthab +false America/Goose_Bay +false America/Grand_Turk +false America/Grenada +false America/Guadeloupe +false America/Guatemala +false America/Guayaquil +false America/Guyana +false America/Halifax +false America/Havana +false America/Hermosillo +false America/Indiana/Indianapolis +false America/Indiana/Knox +false America/Indiana/Marengo +false America/Indiana/Petersburg +false America/Indiana/Tell_City +false America/Indiana/Vevay +false America/Indiana/Vincennes +false America/Indiana/Winamac +false America/Indianapolis +false America/Inuvik +false America/Iqaluit +false America/Jamaica +false America/Jujuy +false America/Juneau +false America/Kentucky/Louisville +false America/Kentucky/Monticello +false America/Knox_IN +false America/Kralendijk +false America/La_Paz +false America/Lima +false America/Los_Angeles +false America/Louisville +false America/Lower_Princes +false America/Maceio +false America/Managua +false America/Manaus +false America/Marigot +false America/Martinique +false America/Matamoros +false America/Mazatlan +false America/Mendoza +false America/Menominee +false America/Merida +false America/Metlakatla +false America/Mexico_City +false America/Miquelon +false America/Moncton +false America/Monterrey +false America/Montevideo +false America/Montreal +false America/Montserrat +false America/Nassau +false America/New_York +false America/Nipigon +false America/Nome +false America/Noronha +false America/North_Dakota/Beulah +false America/North_Dakota/Center +false America/North_Dakota/New_Salem +false America/Nuuk +false America/Ojinaga +false America/Panama +false America/Pangnirtung +false America/Paramaribo +false America/Phoenix +false America/Port-au-Prince +false America/Port_of_Spain +false America/Porto_Acre +false America/Porto_Velho +false America/Puerto_Rico +false America/Punta_Arenas +false America/Rainy_River +false America/Rankin_Inlet +false America/Recife +false America/Regina +false America/Resolute +false America/Rio_Branco +false America/Rosario +false America/Santa_Isabel +false America/Santarem +true America/Santiago +false America/Santo_Domingo +false America/Sao_Paulo +false America/Scoresbysund +false America/Shiprock +false America/Sitka +false America/St_Barthelemy +false America/St_Johns +false America/St_Kitts +false America/St_Lucia +false America/St_Thomas +false America/St_Vincent +false America/Swift_Current +false America/Tegucigalpa +false America/Thule +false America/Thunder_Bay +false America/Tijuana +false America/Toronto +false America/Tortola +false America/Vancouver +false America/Virgin +false America/Whitehorse +false America/Winnipeg +false America/Yakutat +false America/Yellowknife +false Antarctica/Casey +false Antarctica/Davis +false Antarctica/DumontDUrville +false Antarctica/Macquarie +false Antarctica/Mawson +true Antarctica/McMurdo +false Antarctica/Palmer +false Antarctica/Rothera +true Antarctica/South_Pole +false Antarctica/Syowa +false Antarctica/Troll +false Antarctica/Vostok +false Arctic/Longyearbyen +false Asia/Aden +false Asia/Almaty +false Asia/Amman +false Asia/Anadyr +false Asia/Aqtau +false Asia/Aqtobe +false Asia/Ashgabat +false Asia/Ashkhabad +false Asia/Atyrau +false Asia/Baghdad +false Asia/Bahrain +false Asia/Baku +false Asia/Bangkok +false Asia/Barnaul +false Asia/Beirut +false Asia/Bishkek +false Asia/Brunei +false Asia/Calcutta +false Asia/Chita +false Asia/Choibalsan +false Asia/Chongqing +false Asia/Chungking +false Asia/Colombo +false Asia/Dacca +false Asia/Damascus +false Asia/Dhaka +false Asia/Dili +false Asia/Dubai +false Asia/Dushanbe +false Asia/Famagusta +false Asia/Gaza +false Asia/Harbin +false Asia/Hebron +false Asia/Ho_Chi_Minh +false Asia/Hong_Kong +false Asia/Hovd +false Asia/Irkutsk +false Asia/Istanbul +false Asia/Jakarta +false Asia/Jayapura +false Asia/Jerusalem +false Asia/Kabul +false Asia/Kamchatka +false Asia/Karachi +false Asia/Kashgar +false Asia/Kathmandu +false Asia/Katmandu +false Asia/Khandyga +false Asia/Kolkata +false Asia/Krasnoyarsk +false Asia/Kuala_Lumpur +false Asia/Kuching +false Asia/Kuwait +false Asia/Macao +false Asia/Macau +false Asia/Magadan +false Asia/Makassar +false Asia/Manila +false Asia/Muscat +false Asia/Nicosia +false Asia/Novokuznetsk +false Asia/Novosibirsk +false Asia/Omsk +false Asia/Oral +false Asia/Phnom_Penh +false Asia/Pontianak +false Asia/Pyongyang +false Asia/Qatar +false Asia/Qostanay +false Asia/Qyzylorda +false Asia/Rangoon +false Asia/Riyadh +false Asia/Saigon +false Asia/Sakhalin +false Asia/Samarkand +false Asia/Seoul +false Asia/Shanghai +false Asia/Singapore +false Asia/Srednekolymsk +false Asia/Taipei +false Asia/Tashkent +false Asia/Tbilisi +false Asia/Tehran +false Asia/Tel_Aviv +false Asia/Thimbu +false Asia/Thimphu +false Asia/Tokyo +false Asia/Tomsk +false Asia/Ujung_Pandang +false Asia/Ulaanbaatar +false Asia/Ulan_Bator +false Asia/Urumqi +false Asia/Ust-Nera +false Asia/Vientiane +false Asia/Vladivostok +false Asia/Yakutsk +false Asia/Yangon +false Asia/Yekaterinburg +false Asia/Yerevan +false Atlantic/Azores +false Atlantic/Bermuda +false Atlantic/Canary +false Atlantic/Cape_Verde +false Atlantic/Faeroe +false Atlantic/Faroe +false Atlantic/Jan_Mayen +false Atlantic/Madeira +false Atlantic/Reykjavik +false Atlantic/South_Georgia +false Atlantic/St_Helena +false Atlantic/Stanley +true Australia/ACT +true Australia/Adelaide +false Australia/Brisbane +true Australia/Broken_Hill +true Australia/Canberra +true Australia/Currie +false Australia/Darwin +false Australia/Eucla +true Australia/Hobart +true Australia/LHI +false Australia/Lindeman +true Australia/Lord_Howe +true Australia/Melbourne +true Australia/NSW +false Australia/North +false Australia/Perth +false Australia/Queensland +true Australia/South +true Australia/Sydney +true Australia/Tasmania +true Australia/Victoria +false Australia/West +true Australia/Yancowinna +true BDST +false BDT +false BNT +false BORT +false BOT +false BRA +true BRST +false BRT +true BST +false BTT +false Brazil/Acre +false Brazil/DeNoronha +false Brazil/East +false Brazil/West +true CADT +false CAST +false CCT +true CDT +true CEST +false CET +true CETDST +true CHADT +false CHAST +false CHUT +false CKT +true CLST +true CLT +false COT +false CST +false CST6CDT +false CXT +false Canada/Atlantic +false Canada/Central +false Canada/Eastern +false Canada/Mountain +false Canada/Newfoundland +false Canada/Pacific +false Canada/Saskatchewan +false Canada/Yukon +true Chile/Continental +true Chile/EasterIsland +false Cuba +false DAVT +false DDUT +true EASST +true EAST +false EAT +true EDT +true EEST +false EET +true EETDST +true EGST +false EGT +false EST +false EST5EDT +false Egypt +true Eire +false Etc/GMT +false Etc/GMT+0 +false Etc/GMT+1 +false Etc/GMT+10 +false Etc/GMT+11 +false Etc/GMT+12 +false Etc/GMT+2 +false Etc/GMT+3 +false Etc/GMT+4 +false Etc/GMT+5 +false Etc/GMT+6 +false Etc/GMT+7 +false Etc/GMT+8 +false Etc/GMT+9 +false Etc/GMT-0 +false Etc/GMT-1 +false Etc/GMT-10 +false Etc/GMT-11 +false Etc/GMT-12 +false Etc/GMT-13 +false Etc/GMT-14 +false Etc/GMT-2 +false Etc/GMT-3 +false Etc/GMT-4 +false Etc/GMT-5 +false Etc/GMT-6 +false Etc/GMT-7 +false Etc/GMT-8 +false Etc/GMT-9 +false Etc/GMT0 +false Etc/Greenwich +false Etc/UCT +false Etc/UTC +false Etc/Universal +false Etc/Zulu +false Europe/Amsterdam +false Europe/Andorra +false Europe/Astrakhan +false Europe/Athens +false Europe/Belfast +false Europe/Belgrade +false Europe/Berlin +false Europe/Bratislava +false Europe/Brussels +false Europe/Bucharest +false Europe/Budapest +false Europe/Busingen +false Europe/Chisinau +false Europe/Copenhagen +true Europe/Dublin +false Europe/Gibraltar +false Europe/Guernsey +false Europe/Helsinki +false Europe/Isle_of_Man +false Europe/Istanbul +false Europe/Jersey +false Europe/Kaliningrad +false Europe/Kiev +false Europe/Kirov +false Europe/Lisbon +false Europe/Ljubljana +false Europe/London +false Europe/Luxembourg +false Europe/Madrid +false Europe/Malta +false Europe/Mariehamn +false Europe/Minsk +false Europe/Monaco +false Europe/Moscow +false Europe/Nicosia +false Europe/Oslo +false Europe/Paris +false Europe/Podgorica +false Europe/Prague +false Europe/Riga +false Europe/Rome +false Europe/Samara +false Europe/San_Marino +false Europe/Sarajevo +false Europe/Saratov +false Europe/Simferopol +false Europe/Skopje +false Europe/Sofia +false Europe/Stockholm +false Europe/Tallinn +false Europe/Tirane +false Europe/Tiraspol +false Europe/Ulyanovsk +false Europe/Uzhgorod +false Europe/Vaduz +false Europe/Vatican +false Europe/Vienna +false Europe/Vilnius +false Europe/Volgograd +false Europe/Warsaw +false Europe/Zagreb +false Europe/Zaporozhye +false Europe/Zurich +false FET +true FJST +false FJT +false FKST +false FKT +true FNST +false FNT +false Factory +false GALT +false GAMT +false GB +false GB-Eire +false GEST +false GET +false GFT +false GILT +false GMT +false GMT+0 +false GMT-0 +false GMT0 +false GYT +false Greenwich +false HKT +false HST +false Hongkong +false ICT +true IDT +false IOT +false IRKST +false IRKT +false IRT +false IST +false Iceland +false Indian/Antananarivo +false Indian/Chagos +false Indian/Christmas +false Indian/Cocos +false Indian/Comoro +false Indian/Kerguelen +false Indian/Mahe +false Indian/Maldives +false Indian/Mauritius +false Indian/Mayotte +false Indian/Reunion +false Iran +false Israel +false JAYT +false JST +false Jamaica +false Japan +true KDT +true KGST +false KGT +false KOST +false KRAST +false KRAT +false KST +false Kwajalein +true LHDT +false LHST +false LIGT +false LINT +false LKT +false Libya +false MAGST +false MAGT +false MART +false MAWT +true MDT +true MEST +true MESZ +false MET +true METDST +false MEZ +false MHT +false MMT +false MPT +true MSD +false MSK +false MST +false MST7MDT +true MUST +false MUT +false MVT +false MYT +false Mexico/BajaNorte +false Mexico/BajaSur +false Mexico/General +true NDT +false NFT +false NOVST +false NOVT +false NPT +false NST +false NUT +true NZ +true NZ-CHAT +true NZDT +false NZST +false NZT +false Navajo +false OMSST +false OMST +true PDT +false PET +false PETST +false PETT +false PGT +false PHOT +false PHT +true PKST +false PKT +true PMDT +false PMST +false PONT +false PRC +false PST +false PST8PDT +false PWT +true PYST +true PYT +true Pacific/Apia +true Pacific/Auckland +false Pacific/Bougainville +true Pacific/Chatham +false Pacific/Chuuk +true Pacific/Easter +false Pacific/Efate +false Pacific/Enderbury +false Pacific/Fakaofo +true Pacific/Fiji +false Pacific/Funafuti +false Pacific/Galapagos +false Pacific/Gambier +false Pacific/Guadalcanal +false Pacific/Guam +false Pacific/Honolulu +false Pacific/Johnston +false Pacific/Kiritimati +false Pacific/Kosrae +false Pacific/Kwajalein +false Pacific/Majuro +false Pacific/Marquesas +false Pacific/Midway +false Pacific/Nauru +false Pacific/Niue +true Pacific/Norfolk +false Pacific/Noumea +false Pacific/Pago_Pago +false Pacific/Palau +false Pacific/Pitcairn +false Pacific/Pohnpei +false Pacific/Ponape +false Pacific/Port_Moresby +false Pacific/Rarotonga +false Pacific/Saipan +false Pacific/Samoa +false Pacific/Tahiti +false Pacific/Tarawa +false Pacific/Tongatapu +false Pacific/Truk +false Pacific/Wake +false Pacific/Wallis +false Pacific/Yap +false Poland +false Portugal +false RET +false ROC +false ROK +true SADT +false SAST +false SCT +false SGT +false Singapore +false SystemV/AST4 +false SystemV/AST4ADT +false SystemV/CST6 +false SystemV/CST6CDT +false SystemV/EST5 +false SystemV/EST5EDT +false SystemV/HST10 +false SystemV/MST7 +false SystemV/MST7MDT +false SystemV/PST8 +false SystemV/PST8PDT +false SystemV/YST9 +false SystemV/YST9YDT +false TAHT +false TFT +false TJT +false TKT +false TMT +false TOT +false TRUT +false TVT +false Turkey +false UCT +true ULAST +false ULAT +false US/Alaska +false US/Aleutian +false US/Arizona +false US/Central +false US/East-Indiana +false US/Eastern +false US/Hawaii +false US/Indiana-Starke +false US/Michigan +false US/Mountain +false US/Pacific +false US/Pacific-New +false US/Samoa +false UT +false UTC +true UYST +false UYT +true UZST +false UZT +false Universal +false VET +false VLAST +false VLAT +false VOLT +false VUT +false W-SU +true WADT +false WAKT +false WAST +false WAT +true WDT +false WET +true WETDST +false WFT +true WGST +false WGT +false XJT +false YAKST +false YAKT +false YAPT +true YEKST +false YEKT +false Z +false Zulu +false localtime +false posix/Africa/Abidjan +false posix/Africa/Accra +false posix/Africa/Addis_Ababa +false posix/Africa/Algiers +false posix/Africa/Asmara +false posix/Africa/Asmera +false posix/Africa/Bamako +false posix/Africa/Bangui +false posix/Africa/Banjul +false posix/Africa/Bissau +false posix/Africa/Blantyre +false posix/Africa/Brazzaville +false posix/Africa/Bujumbura +false posix/Africa/Cairo +false posix/Africa/Casablanca +false posix/Africa/Ceuta +false posix/Africa/Conakry +false posix/Africa/Dakar +false posix/Africa/Dar_es_Salaam +false posix/Africa/Djibouti +false posix/Africa/Douala +false posix/Africa/El_Aaiun +false posix/Africa/Freetown +false posix/Africa/Gaborone +false posix/Africa/Harare +false posix/Africa/Johannesburg +false posix/Africa/Juba +false posix/Africa/Kampala +false posix/Africa/Khartoum +false posix/Africa/Kigali +false posix/Africa/Kinshasa +false posix/Africa/Lagos +false posix/Africa/Libreville +false posix/Africa/Lome +false posix/Africa/Luanda +false posix/Africa/Lubumbashi +false posix/Africa/Lusaka +false posix/Africa/Malabo +false posix/Africa/Maputo +false posix/Africa/Maseru +false posix/Africa/Mbabane +false posix/Africa/Mogadishu +false posix/Africa/Monrovia +false posix/Africa/Nairobi +false posix/Africa/Ndjamena +false posix/Africa/Niamey +false posix/Africa/Nouakchott +false posix/Africa/Ouagadougou +false posix/Africa/Porto-Novo +false posix/Africa/Sao_Tome +false posix/Africa/Timbuktu +false posix/Africa/Tripoli +false posix/Africa/Tunis +false posix/Africa/Windhoek +false posix/America/Adak +false posix/America/Anchorage +false posix/America/Anguilla +false posix/America/Antigua +false posix/America/Araguaina +false posix/America/Argentina/Buenos_Aires +false posix/America/Argentina/Catamarca +false posix/America/Argentina/ComodRivadavia +false posix/America/Argentina/Cordoba +false posix/America/Argentina/Jujuy +false posix/America/Argentina/La_Rioja +false posix/America/Argentina/Mendoza +false posix/America/Argentina/Rio_Gallegos +false posix/America/Argentina/Salta +false posix/America/Argentina/San_Juan +false posix/America/Argentina/San_Luis +false posix/America/Argentina/Tucuman +false posix/America/Argentina/Ushuaia +false posix/America/Aruba +true posix/America/Asuncion +false posix/America/Atikokan +false posix/America/Atka +false posix/America/Bahia +false posix/America/Bahia_Banderas +false posix/America/Barbados +false posix/America/Belem +false posix/America/Belize +false posix/America/Blanc-Sablon +false posix/America/Boa_Vista +false posix/America/Bogota +false posix/America/Boise +false posix/America/Buenos_Aires +false posix/America/Cambridge_Bay +false posix/America/Campo_Grande +false posix/America/Cancun +false posix/America/Caracas +false posix/America/Catamarca +false posix/America/Cayenne +false posix/America/Cayman +false posix/America/Chicago +false posix/America/Chihuahua +false posix/America/Coral_Harbour +false posix/America/Cordoba +false posix/America/Costa_Rica +false posix/America/Creston +false posix/America/Cuiaba +false posix/America/Curacao +false posix/America/Danmarkshavn +false posix/America/Dawson +false posix/America/Dawson_Creek +false posix/America/Denver +false posix/America/Detroit +false posix/America/Dominica +false posix/America/Edmonton +false posix/America/Eirunepe +false posix/America/El_Salvador +false posix/America/Ensenada +false posix/America/Fort_Nelson +false posix/America/Fort_Wayne +false posix/America/Fortaleza +false posix/America/Glace_Bay +false posix/America/Godthab +false posix/America/Goose_Bay +false posix/America/Grand_Turk +false posix/America/Grenada +false posix/America/Guadeloupe +false posix/America/Guatemala +false posix/America/Guayaquil +false posix/America/Guyana +false posix/America/Halifax +false posix/America/Havana +false posix/America/Hermosillo +false posix/America/Indiana/Indianapolis +false posix/America/Indiana/Knox +false posix/America/Indiana/Marengo +false posix/America/Indiana/Petersburg +false posix/America/Indiana/Tell_City +false posix/America/Indiana/Vevay +false posix/America/Indiana/Vincennes +false posix/America/Indiana/Winamac +false posix/America/Indianapolis +false posix/America/Inuvik +false posix/America/Iqaluit +false posix/America/Jamaica +false posix/America/Jujuy +false posix/America/Juneau +false posix/America/Kentucky/Louisville +false posix/America/Kentucky/Monticello +false posix/America/Knox_IN +false posix/America/Kralendijk +false posix/America/La_Paz +false posix/America/Lima +false posix/America/Los_Angeles +false posix/America/Louisville +false posix/America/Lower_Princes +false posix/America/Maceio +false posix/America/Managua +false posix/America/Manaus +false posix/America/Marigot +false posix/America/Martinique +false posix/America/Matamoros +false posix/America/Mazatlan +false posix/America/Mendoza +false posix/America/Menominee +false posix/America/Merida +false posix/America/Metlakatla +false posix/America/Mexico_City +false posix/America/Miquelon +false posix/America/Moncton +false posix/America/Monterrey +false posix/America/Montevideo +false posix/America/Montreal +false posix/America/Montserrat +false posix/America/Nassau +false posix/America/New_York +false posix/America/Nipigon +false posix/America/Nome +false posix/America/Noronha +false posix/America/North_Dakota/Beulah +false posix/America/North_Dakota/Center +false posix/America/North_Dakota/New_Salem +false posix/America/Nuuk +false posix/America/Ojinaga +false posix/America/Panama +false posix/America/Pangnirtung +false posix/America/Paramaribo +false posix/America/Phoenix +false posix/America/Port-au-Prince +false posix/America/Port_of_Spain +false posix/America/Porto_Acre +false posix/America/Porto_Velho +false posix/America/Puerto_Rico +false posix/America/Punta_Arenas +false posix/America/Rainy_River +false posix/America/Rankin_Inlet +false posix/America/Recife +false posix/America/Regina +false posix/America/Resolute +false posix/America/Rio_Branco +false posix/America/Rosario +false posix/America/Santa_Isabel +false posix/America/Santarem +true posix/America/Santiago +false posix/America/Santo_Domingo +false posix/America/Sao_Paulo +false posix/America/Scoresbysund +false posix/America/Shiprock +false posix/America/Sitka +false posix/America/St_Barthelemy +false posix/America/St_Johns +false posix/America/St_Kitts +false posix/America/St_Lucia +false posix/America/St_Thomas +false posix/America/St_Vincent +false posix/America/Swift_Current +false posix/America/Tegucigalpa +false posix/America/Thule +false posix/America/Thunder_Bay +false posix/America/Tijuana +false posix/America/Toronto +false posix/America/Tortola +false posix/America/Vancouver +false posix/America/Virgin +false posix/America/Whitehorse +false posix/America/Winnipeg +false posix/America/Yakutat +false posix/America/Yellowknife +false posix/Antarctica/Casey +false posix/Antarctica/Davis +false posix/Antarctica/DumontDUrville +false posix/Antarctica/Macquarie +false posix/Antarctica/Mawson +true posix/Antarctica/McMurdo +false posix/Antarctica/Palmer +false posix/Antarctica/Rothera +true posix/Antarctica/South_Pole +false posix/Antarctica/Syowa +false posix/Antarctica/Troll +false posix/Antarctica/Vostok +false posix/Arctic/Longyearbyen +false posix/Asia/Aden +false posix/Asia/Almaty +false posix/Asia/Amman +false posix/Asia/Anadyr +false posix/Asia/Aqtau +false posix/Asia/Aqtobe +false posix/Asia/Ashgabat +false posix/Asia/Ashkhabad +false posix/Asia/Atyrau +false posix/Asia/Baghdad +false posix/Asia/Bahrain +false posix/Asia/Baku +false posix/Asia/Bangkok +false posix/Asia/Barnaul +false posix/Asia/Beirut +false posix/Asia/Bishkek +false posix/Asia/Brunei +false posix/Asia/Calcutta +false posix/Asia/Chita +false posix/Asia/Choibalsan +false posix/Asia/Chongqing +false posix/Asia/Chungking +false posix/Asia/Colombo +false posix/Asia/Dacca +false posix/Asia/Damascus +false posix/Asia/Dhaka +false posix/Asia/Dili +false posix/Asia/Dubai +false posix/Asia/Dushanbe +false posix/Asia/Famagusta +false posix/Asia/Gaza +false posix/Asia/Harbin +false posix/Asia/Hebron +false posix/Asia/Ho_Chi_Minh +false posix/Asia/Hong_Kong +false posix/Asia/Hovd +false posix/Asia/Irkutsk +false posix/Asia/Istanbul +false posix/Asia/Jakarta +false posix/Asia/Jayapura +false posix/Asia/Jerusalem +false posix/Asia/Kabul +false posix/Asia/Kamchatka +false posix/Asia/Karachi +false posix/Asia/Kashgar +false posix/Asia/Kathmandu +false posix/Asia/Katmandu +false posix/Asia/Khandyga +false posix/Asia/Kolkata +false posix/Asia/Krasnoyarsk +false posix/Asia/Kuala_Lumpur +false posix/Asia/Kuching +false posix/Asia/Kuwait +false posix/Asia/Macao +false posix/Asia/Macau +false posix/Asia/Magadan +false posix/Asia/Makassar +false posix/Asia/Manila +false posix/Asia/Muscat +false posix/Asia/Nicosia +false posix/Asia/Novokuznetsk +false posix/Asia/Novosibirsk +false posix/Asia/Omsk +false posix/Asia/Oral +false posix/Asia/Phnom_Penh +false posix/Asia/Pontianak +false posix/Asia/Pyongyang +false posix/Asia/Qatar +false posix/Asia/Qostanay +false posix/Asia/Qyzylorda +false posix/Asia/Rangoon +false posix/Asia/Riyadh +false posix/Asia/Saigon +false posix/Asia/Sakhalin +false posix/Asia/Samarkand +false posix/Asia/Seoul +false posix/Asia/Shanghai +false posix/Asia/Singapore +false posix/Asia/Srednekolymsk +false posix/Asia/Taipei +false posix/Asia/Tashkent +false posix/Asia/Tbilisi +false posix/Asia/Tehran +false posix/Asia/Tel_Aviv +false posix/Asia/Thimbu +false posix/Asia/Thimphu +false posix/Asia/Tokyo +false posix/Asia/Tomsk +false posix/Asia/Ujung_Pandang +false posix/Asia/Ulaanbaatar +false posix/Asia/Ulan_Bator +false posix/Asia/Urumqi +false posix/Asia/Ust-Nera +false posix/Asia/Vientiane +false posix/Asia/Vladivostok +false posix/Asia/Yakutsk +false posix/Asia/Yangon +false posix/Asia/Yekaterinburg +false posix/Asia/Yerevan +false posix/Atlantic/Azores +false posix/Atlantic/Bermuda +false posix/Atlantic/Canary +false posix/Atlantic/Cape_Verde +false posix/Atlantic/Faeroe +false posix/Atlantic/Faroe +false posix/Atlantic/Jan_Mayen +false posix/Atlantic/Madeira +false posix/Atlantic/Reykjavik +false posix/Atlantic/South_Georgia +false posix/Atlantic/St_Helena +false posix/Atlantic/Stanley +true posix/Australia/ACT +true posix/Australia/Adelaide +false posix/Australia/Brisbane +true posix/Australia/Broken_Hill +true posix/Australia/Canberra +true posix/Australia/Currie +false posix/Australia/Darwin +false posix/Australia/Eucla +true posix/Australia/Hobart +true posix/Australia/LHI +false posix/Australia/Lindeman +true posix/Australia/Lord_Howe +true posix/Australia/Melbourne +true posix/Australia/NSW +false posix/Australia/North +false posix/Australia/Perth +false posix/Australia/Queensland +true posix/Australia/South +true posix/Australia/Sydney +true posix/Australia/Tasmania +true posix/Australia/Victoria +false posix/Australia/West +true posix/Australia/Yancowinna +false posix/Brazil/Acre +false posix/Brazil/DeNoronha +false posix/Brazil/East +false posix/Brazil/West +false posix/CET +false posix/CST6CDT +false posix/Canada/Atlantic +false posix/Canada/Central +false posix/Canada/Eastern +false posix/Canada/Mountain +false posix/Canada/Newfoundland +false posix/Canada/Pacific +false posix/Canada/Saskatchewan +false posix/Canada/Yukon +true posix/Chile/Continental +true posix/Chile/EasterIsland +false posix/Cuba +false posix/EET +false posix/EST +false posix/EST5EDT +false posix/Egypt +true posix/Eire +false posix/Etc/GMT +false posix/Etc/GMT+0 +false posix/Etc/GMT+1 +false posix/Etc/GMT+10 +false posix/Etc/GMT+11 +false posix/Etc/GMT+12 +false posix/Etc/GMT+2 +false posix/Etc/GMT+3 +false posix/Etc/GMT+4 +false posix/Etc/GMT+5 +false posix/Etc/GMT+6 +false posix/Etc/GMT+7 +false posix/Etc/GMT+8 +false posix/Etc/GMT+9 +false posix/Etc/GMT-0 +false posix/Etc/GMT-1 +false posix/Etc/GMT-10 +false posix/Etc/GMT-11 +false posix/Etc/GMT-12 +false posix/Etc/GMT-13 +false posix/Etc/GMT-14 +false posix/Etc/GMT-2 +false posix/Etc/GMT-3 +false posix/Etc/GMT-4 +false posix/Etc/GMT-5 +false posix/Etc/GMT-6 +false posix/Etc/GMT-7 +false posix/Etc/GMT-8 +false posix/Etc/GMT-9 +false posix/Etc/GMT0 +false posix/Etc/Greenwich +false posix/Etc/UCT +false posix/Etc/UTC +false posix/Etc/Universal +false posix/Etc/Zulu +false posix/Europe/Amsterdam +false posix/Europe/Andorra +false posix/Europe/Astrakhan +false posix/Europe/Athens +false posix/Europe/Belfast +false posix/Europe/Belgrade +false posix/Europe/Berlin +false posix/Europe/Bratislava +false posix/Europe/Brussels +false posix/Europe/Bucharest +false posix/Europe/Budapest +false posix/Europe/Busingen +false posix/Europe/Chisinau +false posix/Europe/Copenhagen +true posix/Europe/Dublin +false posix/Europe/Gibraltar +false posix/Europe/Guernsey +false posix/Europe/Helsinki +false posix/Europe/Isle_of_Man +false posix/Europe/Istanbul +false posix/Europe/Jersey +false posix/Europe/Kaliningrad +false posix/Europe/Kiev +false posix/Europe/Kirov +false posix/Europe/Lisbon +false posix/Europe/Ljubljana +false posix/Europe/London +false posix/Europe/Luxembourg +false posix/Europe/Madrid +false posix/Europe/Malta +false posix/Europe/Mariehamn +false posix/Europe/Minsk +false posix/Europe/Monaco +false posix/Europe/Moscow +false posix/Europe/Nicosia +false posix/Europe/Oslo +false posix/Europe/Paris +false posix/Europe/Podgorica +false posix/Europe/Prague +false posix/Europe/Riga +false posix/Europe/Rome +false posix/Europe/Samara +false posix/Europe/San_Marino +false posix/Europe/Sarajevo +false posix/Europe/Saratov +false posix/Europe/Simferopol +false posix/Europe/Skopje +false posix/Europe/Sofia +false posix/Europe/Stockholm +false posix/Europe/Tallinn +false posix/Europe/Tirane +false posix/Europe/Tiraspol +false posix/Europe/Ulyanovsk +false posix/Europe/Uzhgorod +false posix/Europe/Vaduz +false posix/Europe/Vatican +false posix/Europe/Vienna +false posix/Europe/Vilnius +false posix/Europe/Volgograd +false posix/Europe/Warsaw +false posix/Europe/Zagreb +false posix/Europe/Zaporozhye +false posix/Europe/Zurich +false posix/Factory +false posix/GB +false posix/GB-Eire +false posix/GMT +false posix/GMT+0 +false posix/GMT-0 +false posix/GMT0 +false posix/Greenwich +false posix/HST +false posix/Hongkong +false posix/Iceland +false posix/Indian/Antananarivo +false posix/Indian/Chagos +false posix/Indian/Christmas +false posix/Indian/Cocos +false posix/Indian/Comoro +false posix/Indian/Kerguelen +false posix/Indian/Mahe +false posix/Indian/Maldives +false posix/Indian/Mauritius +false posix/Indian/Mayotte +false posix/Indian/Reunion +false posix/Iran +false posix/Israel +false posix/Jamaica +false posix/Japan +false posix/Kwajalein +false posix/Libya +false posix/MET +false posix/MST +false posix/MST7MDT +false posix/Mexico/BajaNorte +false posix/Mexico/BajaSur +false posix/Mexico/General +true posix/NZ +true posix/NZ-CHAT +false posix/Navajo +false posix/PRC +false posix/PST8PDT +true posix/Pacific/Apia +true posix/Pacific/Auckland +false posix/Pacific/Bougainville +true posix/Pacific/Chatham +false posix/Pacific/Chuuk +true posix/Pacific/Easter +false posix/Pacific/Efate +false posix/Pacific/Enderbury +false posix/Pacific/Fakaofo +true posix/Pacific/Fiji +false posix/Pacific/Funafuti +false posix/Pacific/Galapagos +false posix/Pacific/Gambier +false posix/Pacific/Guadalcanal +false posix/Pacific/Guam +false posix/Pacific/Honolulu +false posix/Pacific/Johnston +false posix/Pacific/Kiritimati +false posix/Pacific/Kosrae +false posix/Pacific/Kwajalein +false posix/Pacific/Majuro +false posix/Pacific/Marquesas +false posix/Pacific/Midway +false posix/Pacific/Nauru +false posix/Pacific/Niue +true posix/Pacific/Norfolk +false posix/Pacific/Noumea +false posix/Pacific/Pago_Pago +false posix/Pacific/Palau +false posix/Pacific/Pitcairn +false posix/Pacific/Pohnpei +false posix/Pacific/Ponape +false posix/Pacific/Port_Moresby +false posix/Pacific/Rarotonga +false posix/Pacific/Saipan +false posix/Pacific/Samoa +false posix/Pacific/Tahiti +false posix/Pacific/Tarawa +false posix/Pacific/Tongatapu +false posix/Pacific/Truk +false posix/Pacific/Wake +false posix/Pacific/Wallis +false posix/Pacific/Yap +false posix/Poland +false posix/Portugal +false posix/ROC +false posix/ROK +false posix/Singapore +false posix/SystemV/AST4 +false posix/SystemV/AST4ADT +false posix/SystemV/CST6 +false posix/SystemV/CST6CDT +false posix/SystemV/EST5 +false posix/SystemV/EST5EDT +false posix/SystemV/HST10 +false posix/SystemV/MST7 +false posix/SystemV/MST7MDT +false posix/SystemV/PST8 +false posix/SystemV/PST8PDT +false posix/SystemV/YST9 +false posix/SystemV/YST9YDT +false posix/Turkey +false posix/UCT +false posix/US/Alaska +false posix/US/Aleutian +false posix/US/Arizona +false posix/US/Central +false posix/US/East-Indiana +false posix/US/Eastern +false posix/US/Hawaii +false posix/US/Indiana-Starke +false posix/US/Michigan +false posix/US/Mountain +false posix/US/Pacific +false posix/US/Pacific-New +false posix/US/Samoa +false posix/UTC +false posix/Universal +false posix/W-SU +false posix/WET +false posix/Zulu +false posixrules + + 1605305728 + + + 13395 + default administrative connection database + test_user + + + 16385 + test_user + + + 16387 + test_user + + + 16388 + test_user + 508 + 1 + sequence|table|16389|16391|1 + + + + 16384 + test_user + + + 4571 + + + 3373 + + + 3374 + + + 3375 + + + 4569 + + + 4200 + + + 3377 + + + 4570 + + + 10 + 1 + 1 + 1 + 1 + 1 + 1 + + + 13111 + 293 + test_user + + + 11 + system catalog schema + 286 + test_user + + + 2200 + standard public schema + 287 + test_user + 509 + 1 + + + 2 + heap table access method + 1 + pg_catalog.heap_tableam_handler + 3 + + + 403 + b-tree index access method + 1 + pg_catalog.bthandler + 330 + index + + + 405 + hash index access method + 1 + pg_catalog.hashhandler + 331 + index + + + 783 + GiST index access method + 1 + pg_catalog.gisthandler + 332 + index + + + 2742 + GIN index access method + 1 + pg_catalog.ginhandler + 333 + index + + + 4000 + SP-GiST index access method + 1 + pg_catalog.spghandler + 334 + index + + + 3580 + block range index (BRIN) access method + 1 + pg_catalog.brinhandler + 335 + index + + + 13381 + PL/pgSQL procedural language + 439 + 1.0 + pg_catalog + 11 + + + + + + + 16389 + test_user + 495 + bigint|0s + + + 16412 + test_user + 501 +
+ + 16404 + test_user + 498 +
+ + 16391 + test_user + 495 +
+ + 1 + varchar|0s + 1 + 501 + 1043 + + + 2 + varchar|0s + 501 + 1043 + + + 3 + timestamp|0s + 1 + 501 + 1114 + + + 4 + timestamp|0s + 1 + 501 + 1114 + + + 16418 + 501 + key + 1 + 1 + + + 16419 + 501 + key + 1 + ar_internal_metadata_pkey + + + 1 + varchar|0s + 1 + 498 + 1043 + + + 16410 + 498 + version + 1 + 1 + + + 16411 + 498 + version + 1 + schema_migrations_pkey + + + 1 + bigint|0s + 1 + 495 + nextval('users_id_seq'::regclass) + 20 + + + 2 + varchar|0s + 1 + 495 + ''::character varying + 1043 + + + 3 + varchar|0s + 1 + 495 + ''::character varying + 1043 + + + 4 + varchar|0s + 495 + 1043 + + + 5 + timestamp|0s + 495 + 1114 + + + 6 + timestamp|0s + 495 + 1114 + + + 7 + timestamp|0s + 1 + 495 + 1114 + + + 8 + timestamp|0s + 1 + 495 + 1114 + + + 9 + varchar|0s + 495 + 1043 + + + 10 + varchar|0s + 495 + 1043 + + + 11 + integer|0s + 495 + 23 + + + 16400 + 495 + id + 1 + 1 + + + 16402 + 496 + email + 1 + + + 16403 + 497 + reset_password_token + 1 + + + 16401 + 495 + id + 1 + users_pkey + +
+
\ No newline at end of file diff --git a/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg.meta b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg.meta new file mode 100644 index 00000000..a17f3119 --- /dev/null +++ b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg.meta @@ -0,0 +1 @@ +#n:secretaria_ppgi_test \ No newline at end of file diff --git a/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/information_schema.FNRwLQ.meta b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/information_schema.FNRwLQ.meta new file mode 100644 index 00000000..1ff3db2e --- /dev/null +++ b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/information_schema.FNRwLQ.meta @@ -0,0 +1,2 @@ +#n:information_schema +! [null, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/pg_catalog.0S1ZNQ.meta b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/pg_catalog.0S1ZNQ.meta new file mode 100644 index 00000000..44e65b16 --- /dev/null +++ b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/pg_catalog.0S1ZNQ.meta @@ -0,0 +1,2 @@ +#n:pg_catalog +! [null, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/public.abK9xQ.meta b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/public.abK9xQ.meta new file mode 100644 index 00000000..a2224b3d --- /dev/null +++ b/.idea/dataSources/75e62ec9-fb24-46a0-84ef-ab82bc38a722/storage_v2/_src_/database/secretaria_ppgi_test.yY7PLg/schema/public.abK9xQ.meta @@ -0,0 +1,2 @@ +#n:public +! [509, 0, null, null, -2147483648, -2147483648] diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..b0db9b0f --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..e098232b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/secretaria_ppgi.iml b/.idea/secretaria_ppgi.iml new file mode 100644 index 00000000..87bf699b --- /dev/null +++ b/.idea/secretaria_ppgi.iml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..34f1bb7b --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,538 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1605305587618 + + + 1605483214391 + + + 1605487764046 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..6e6cec26 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM ruby:2.6.3-stretch as installer + +RUN apt update && apt install -y apt-utils + +# install node +RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - +RUN apt-get install -y nodejs + +# install yarn +RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - +RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list +RUN apt update && apt install -y yarn +ENV PATH "$PATH:/opt/yarn-1.22.5/bin" + +COPY . /secretaria/ +WORKDIR /secretaria/ +RUN bundle install +RUN gem install solargraph \ No newline at end of file diff --git a/Gemfile b/Gemfile index 54be0f4e..9781a662 100644 --- a/Gemfile +++ b/Gemfile @@ -66,5 +66,6 @@ group :test do gem 'shoulda-matchers' end +gem "font-awesome-rails" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] diff --git a/Gemfile.lock b/Gemfile.lock index 0a9e4f86..919c5074 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -103,6 +103,8 @@ GEM erubi (1.9.0) execjs (2.7.0) ffi (1.11.1) + font-awesome-rails (4.7.0.5) + railties (>= 3.2, < 6.1) gherkin (5.1.0) globalid (0.4.2) activesupport (>= 4.2.0) @@ -258,6 +260,7 @@ DEPENDENCIES cucumber-rails database_cleaner devise + font-awesome-rails jbuilder (~> 2.5) listen (>= 3.0.5, < 3.2) pg (>= 0.18, < 2.0) @@ -279,4 +282,4 @@ RUBY VERSION ruby 2.6.3p62 BUNDLED WITH - 1.17.2 + 1.17.3 diff --git a/README.md b/README.md index 7db80e4c..c475142a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,34 @@ # README +## SPRINT 1 Engenharia de Software + Teste, tanto em nível de aceitação (BDD), quanto de testes unitários (RSpec), de 4 features da seção de acompanhamento de projetos do sistem da Secretaria do Programa de Pós-Graduação em Informática da Universidade de Brasília + +### Integrantes +* Bruno Murta Oliveira de Castro - 16/0069742 +* João Viktor de Carvalho Mota - 16/0127823 +* Manoel Vieira Coelho Neto - 18/0137816 +* Rafael Mascarenhas Dal Moro - 17/0021041 + + +### Quem fez o papel de Scrum Master? +Manoel Vieira Coelho Neto + +### E de Product Owner? +Rafael Mascarenhas Dal Moro + +### Quais funcionalidades serão desenvolvidas? +* Adicionar processos com detalhes +* Anexar arquivos ao cadastro de um novo processo +* Cadastro de possíveis status dos processos +* Consulta de todos os processos relacionados a uma pessoa + +### Quais serão as regras de negócio para cada funcionalidade? + +### Quem ficou responsável por cada uma?. +* Adicionar processos com detalhes -> Manoel +* Anexar arquivos ao cadastro de um novo processo -> Bruno +* Cadastro de possíveis status dos processos -> João Viktor +* Consulta de todos os processos relacionados a uma pessoa -> Rafael + This README would normally document whatever steps are necessary to get the application up and running. diff --git a/app/assets/javascripts/process.coffee b/app/assets/javascripts/process.coffee new file mode 100644 index 00000000..24f83d18 --- /dev/null +++ b/app/assets/javascripts/process.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index d05ea0f5..d3e5ded7 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -12,4 +12,5 @@ * *= require_tree . *= require_self + *= require font-awesome */ diff --git a/app/assets/stylesheets/process.scss b/app/assets/stylesheets/process.scss new file mode 100644 index 00000000..dd66d06a --- /dev/null +++ b/app/assets/stylesheets/process.scss @@ -0,0 +1,11 @@ +// Place all the styles related to the process controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ + +#creation_form { + max-width: 60%; +} + +.delete_link { + color: grey; +} \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 457cc5f9..e43b93a4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -2,7 +2,6 @@ class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? - protected def configure_permitted_parameters diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb index 95f29929..3181ce6b 100644 --- a/app/controllers/home_controller.rb +++ b/app/controllers/home_controller.rb @@ -1,4 +1,5 @@ class HomeController < ApplicationController def index + end end diff --git a/app/controllers/process_controller.rb b/app/controllers/process_controller.rb new file mode 100644 index 00000000..824d462d --- /dev/null +++ b/app/controllers/process_controller.rb @@ -0,0 +1,38 @@ +class ProcessController < ApplicationController + def reload_processes(user) + @processes = [] + processes_query = user.processos + unless processes_query.nil? + processes_query.each do |process| + puts(process.attributes) + @processes.append(process.attributes) + end + end + @processes + end + + def index + if user_signed_in? + @user = current_user + reload_processes(@user) + end + end + + def create + if user_signed_in? + user = current_user + permitted_params = params.require(:processo).permit(:sei_process_code, :process_status_id, :documents) + process = user.processos.create(permitted_params) + reload_processes(user) + end + end + + def delete + if user_signed_in? + user = current_user + permitted_params = params.permit(:id) + user.processos.destroy(permitted_params[:id]) + reload_processes(user) + end + end +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index de6be794..1527a569 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,2 +1,3 @@ module ApplicationHelper + include FontAwesome::Rails::IconHelper end diff --git a/app/helpers/process_helper.rb b/app/helpers/process_helper.rb new file mode 100644 index 00000000..96167865 --- /dev/null +++ b/app/helpers/process_helper.rb @@ -0,0 +1,2 @@ +module ProcessHelper +end diff --git a/app/models/activity_type.rb b/app/models/activity_type.rb new file mode 100644 index 00000000..2df72c0f --- /dev/null +++ b/app/models/activity_type.rb @@ -0,0 +1,2 @@ +class ActivityType < ApplicationRecord +end \ No newline at end of file diff --git a/app/models/information.rb b/app/models/information.rb new file mode 100644 index 00000000..8c5c4807 --- /dev/null +++ b/app/models/information.rb @@ -0,0 +1,4 @@ +class Information < ApplicationRecord + belongs_to :user + has_one :source +end diff --git a/app/models/notification_content.rb b/app/models/notification_content.rb new file mode 100644 index 00000000..5eed23d8 --- /dev/null +++ b/app/models/notification_content.rb @@ -0,0 +1,3 @@ +class NotificationContent < ApplicationRecord + belongs_to :user_notification +end diff --git a/app/models/process_status.rb b/app/models/process_status.rb new file mode 100644 index 00000000..8e14d385 --- /dev/null +++ b/app/models/process_status.rb @@ -0,0 +1,3 @@ +class ProcessStatus < ApplicationRecord + validates :title, presence: true +end \ No newline at end of file diff --git a/app/models/processo.rb b/app/models/processo.rb new file mode 100644 index 00000000..6274e74f --- /dev/null +++ b/app/models/processo.rb @@ -0,0 +1,3 @@ +class Processo < ApplicationRecord + belongs_to :user +end \ No newline at end of file diff --git a/app/models/question.rb b/app/models/question.rb new file mode 100644 index 00000000..83ac1408 --- /dev/null +++ b/app/models/question.rb @@ -0,0 +1,3 @@ +class Question < ApplicationRecord + has_one :question_topic +end diff --git a/app/models/question_topic.rb b/app/models/question_topic.rb new file mode 100644 index 00000000..acd4c8be --- /dev/null +++ b/app/models/question_topic.rb @@ -0,0 +1,2 @@ +class QuestionTopic < ApplicationRecord +end \ No newline at end of file diff --git a/app/models/request.rb b/app/models/request.rb new file mode 100644 index 00000000..3acb5316 --- /dev/null +++ b/app/models/request.rb @@ -0,0 +1,4 @@ +class Request < ApplicationRecord + has_one :request_type + belongs_to :user +end diff --git a/app/models/request_type.rb b/app/models/request_type.rb new file mode 100644 index 00000000..468e5bc0 --- /dev/null +++ b/app/models/request_type.rb @@ -0,0 +1,3 @@ +class RequestType < ApplicationRecord + has_many :requests +end diff --git a/app/models/source.rb b/app/models/source.rb new file mode 100644 index 00000000..c5aa40ee --- /dev/null +++ b/app/models/source.rb @@ -0,0 +1,3 @@ +class Source < ApplicationRecord + belongs_to :information +end diff --git a/app/models/user.rb b/app/models/user.rb index d2686709..1dc3c8d7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,4 +10,9 @@ class User < ApplicationRecord :recoverable, :rememberable, :validatable enum role: %i[administrator secretary professor student] + + has_many :information + has_many :user_notifications + has_many :requests + has_many :processos end diff --git a/app/models/user_notification.rb b/app/models/user_notification.rb new file mode 100644 index 00000000..44b79b26 --- /dev/null +++ b/app/models/user_notification.rb @@ -0,0 +1,3 @@ +class UserNotification < ApplicationRecord + belongs_to :user +end diff --git a/app/models/wiki_entry.rb b/app/models/wiki_entry.rb new file mode 100644 index 00000000..c5076026 --- /dev/null +++ b/app/models/wiki_entry.rb @@ -0,0 +1,2 @@ +class WikiEntry < ApplicationRecord +end \ No newline at end of file diff --git a/app/models/wiki_entry_comment.rb b/app/models/wiki_entry_comment.rb new file mode 100644 index 00000000..c6b9cb47 --- /dev/null +++ b/app/models/wiki_entry_comment.rb @@ -0,0 +1,2 @@ +class WikiEntryComment < ApplicationRecord +end \ No newline at end of file diff --git a/app/views/process/index.html.erb b/app/views/process/index.html.erb new file mode 100644 index 00000000..1a0d5a78 --- /dev/null +++ b/app/views/process/index.html.erb @@ -0,0 +1,44 @@ +<%= stylesheet_link_tag "process" %> +

Lista de Processos

+

Criar um novo processo

+<%= form_for :processo, url: process_creation_path ,html: {id: "creation_form", :multipart => true} do |f| %> +
+ <%= f.label "Número do processo SEI" %> + <%= f.text_field :sei_process_code %> +
+
+ <%= label_tag(:status_id, "Status do processo") %> + <%= f.select(:process_status_id, options_for_select([['Status 1', 1], ['Status 2', 2], ['Status 3', 3]], 1)) %> +
+
+ <%= f.file_field :documents, multiple: true, name: "doc_[document]" %> +
+
+ +
+
+ <%= submit_tag("Enviar") %> +
+<% end %> + + + + + + + + + + + <% @processes.each do |process| %> + + + + + + +
Número SEIStatus do processoDeletar
<%= process['sei_process_code'] %><%= process['process_status_id'] %> + <%= link_to fa_icon('trash').html_safe, "#{process['id']}", :method => :delete, :action => "delete", :id => process['id'], class: "delete_link" %> + <% end %> +
+ diff --git a/config/database.yml b/config/database.yml index bbc24623..b5549280 100644 --- a/config/database.yml +++ b/config/database.yml @@ -17,14 +17,18 @@ default: &default adapter: postgresql encoding: unicode + host: secretaria_ppgi_db # For details on connection pooling, see Rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + username: test_user + password: test_pwd development: <<: *default + host: localhost database: secretaria_ppgi_development - + # The specified database role being used to connect to postgres. # To create additional roles in postgres see `$ createuser --help`. # When left blank, postgres will use the default role. This is @@ -58,7 +62,7 @@ development: test: <<: *default database: secretaria_ppgi_test - + # As with config/secrets.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 4b828e80..c24f4038 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -12,3 +12,4 @@ # application.js, application.css, and all non-JS/CSS in the app/assets # folder are already added. # Rails.application.config.assets.precompile += %w( admin.js admin.css ) +Rails.application.config.assets.precompile += %w( process.scss ) diff --git a/config/routes.rb b/config/routes.rb index f33f7f68..37ea6b49 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,9 @@ # frozen_string_literal: true Rails.application.routes.draw do + get 'process/index' + post 'process', to: 'process#create', as: 'process_creation' + delete 'process/:id', to: 'process#delete', as: 'process_delete' get 'home/index' devise_for :users # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html diff --git a/config/spring.rb b/config/spring.rb index 9fa7863f..0195bbba 100644 --- a/config/spring.rb +++ b/config/spring.rb @@ -4,3 +4,11 @@ tmp/restart.txt tmp/caching-dev.txt ].each { |path| Spring.watch(path) } +Spring.after_fork do + if ENV['DEBUGGER_STORED_RUBYLIB'] + ENV['DEBUGGER_STORED_RUBYLIB'].split(File::PATH_SEPARATOR).each do |path| + next unless path =~ /ruby-debug-ide/ + load path + '/ruby-debug-ide/multiprocess/starter.rb' + end + end +end \ No newline at end of file diff --git a/db/migrate/20191114162918_devise_create_users.rb b/db/migrate/20191114162918_devise_create_users.rb index e4fe133a..7bce69b6 100644 --- a/db/migrate/20191114162918_devise_create_users.rb +++ b/db/migrate/20191114162918_devise_create_users.rb @@ -4,13 +4,18 @@ class DeviseCreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| ## Database authenticatable - t.string :email, null: false, default: "" + t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable - t.string :reset_password_token + t.string :reset_password_token t.datetime :reset_password_sent_at + # information + t.string :registration + t.string :full_name + t.string :role + ## Rememberable t.datetime :remember_created_at @@ -36,7 +41,7 @@ def change t.timestamps null: false end - add_index :users, :email, unique: true + add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true diff --git a/db/migrate/20191114163205_add_info_to_users.rb b/db/migrate/20191114163205_add_info_to_users.rb deleted file mode 100644 index 4408c2cc..00000000 --- a/db/migrate/20191114163205_add_info_to_users.rb +++ /dev/null @@ -1,7 +0,0 @@ -class AddInfoToUsers < ActiveRecord::Migration[5.2] - def change - add_column :users, :full_name, :string - add_column :users, :registration, :string - add_column :users, :role, :integer - end -end diff --git a/db/migrate/20201113214441_create_requests.rb b/db/migrate/20201113214441_create_requests.rb new file mode 100644 index 00000000..de9fb71f --- /dev/null +++ b/db/migrate/20201113214441_create_requests.rb @@ -0,0 +1,11 @@ +class CreateRequests < ActiveRecord::Migration[5.2] + def change + create_table :requests do |t| + t.integer :request_type_id + t.integer :user_id + t.binary :documents + + t.timestamps + end + end +end diff --git a/db/migrate/20201116003547_create_request_types.rb b/db/migrate/20201116003547_create_request_types.rb new file mode 100644 index 00000000..a8326f9d --- /dev/null +++ b/db/migrate/20201116003547_create_request_types.rb @@ -0,0 +1,10 @@ +class CreateRequestTypes < ActiveRecord::Migration[5.2] + def change + create_table :request_types do |t| + t.string :name + t.string :label + + t.timestamps + end + end +end diff --git a/db/migrate/20201116015344_create_sources.rb b/db/migrate/20201116015344_create_sources.rb new file mode 100644 index 00000000..71113b70 --- /dev/null +++ b/db/migrate/20201116015344_create_sources.rb @@ -0,0 +1,9 @@ +class CreateSources < ActiveRecord::Migration[5.2] + def change + create_table :sources do |t| + t.string :name + + t.timestamps + end + end +end diff --git a/db/migrate/20201116015420_create_process_statuses.rb b/db/migrate/20201116015420_create_process_statuses.rb new file mode 100644 index 00000000..67f3f321 --- /dev/null +++ b/db/migrate/20201116015420_create_process_statuses.rb @@ -0,0 +1,9 @@ +class CreateProcessStatuses < ActiveRecord::Migration[5.2] + def change + create_table :process_statuses do |t| + t.string :title + + t.timestamps + end + end +end diff --git a/db/migrate/20201116015655_create_information.rb b/db/migrate/20201116015655_create_information.rb new file mode 100644 index 00000000..78a88788 --- /dev/null +++ b/db/migrate/20201116015655_create_information.rb @@ -0,0 +1,10 @@ +class CreateInformation < ActiveRecord::Migration[5.2] + def change + create_table :information do |t| + t.string :title + t.text :content + + t.timestamps + end + end +end diff --git a/db/migrate/20201116021025_create_processos.rb b/db/migrate/20201116021025_create_processos.rb new file mode 100644 index 00000000..397b00ae --- /dev/null +++ b/db/migrate/20201116021025_create_processos.rb @@ -0,0 +1,12 @@ +class CreateProcessos < ActiveRecord::Migration[5.2] + def change + create_table :processos do |t| + t.integer :user_id + t.integer :process_status_id + t.string :sei_process_code + t.binary :documents + + t.timestamps + end + end +end diff --git a/db/migrate/20201116021642_create_user_notifications.rb b/db/migrate/20201116021642_create_user_notifications.rb new file mode 100644 index 00000000..639e1ebd --- /dev/null +++ b/db/migrate/20201116021642_create_user_notifications.rb @@ -0,0 +1,8 @@ +class CreateUserNotifications < ActiveRecord::Migration[5.2] + def change + create_table :user_notifications do |t| + + t.timestamps + end + end +end diff --git a/db/migrate/20201116023448_create_activity_types.rb b/db/migrate/20201116023448_create_activity_types.rb new file mode 100644 index 00000000..5bd3eaeb --- /dev/null +++ b/db/migrate/20201116023448_create_activity_types.rb @@ -0,0 +1,9 @@ +class CreateActivityTypes < ActiveRecord::Migration[5.2] + def change + create_table :activity_types do |t| + t.string :title + + t.timestamps + end + end +end diff --git a/db/migrate/20201116023515_create_notifications.rb b/db/migrate/20201116023515_create_notifications.rb new file mode 100644 index 00000000..70c4b0ad --- /dev/null +++ b/db/migrate/20201116023515_create_notifications.rb @@ -0,0 +1,10 @@ +class CreateNotifications < ActiveRecord::Migration[5.2] + def change + create_table :notifications_content do |t| + t.string :title + t.text :content + + t.timestamps + end + end +end diff --git a/db/migrate/20201116025101_create_wiki_entries.rb b/db/migrate/20201116025101_create_wiki_entries.rb new file mode 100644 index 00000000..d4443592 --- /dev/null +++ b/db/migrate/20201116025101_create_wiki_entries.rb @@ -0,0 +1,11 @@ +class CreateWikiEntries < ActiveRecord::Migration[5.2] + def change + create_table :wiki_entries do |t| + t.string :title + t.text :content + t.binary :documents + + t.timestamps + end + end +end diff --git a/db/migrate/20201116025343_create_wiki_entry_comments.rb b/db/migrate/20201116025343_create_wiki_entry_comments.rb new file mode 100644 index 00000000..f20f5557 --- /dev/null +++ b/db/migrate/20201116025343_create_wiki_entry_comments.rb @@ -0,0 +1,10 @@ +class CreateWikiEntryComments < ActiveRecord::Migration[5.2] + def change + create_table :wiki_entry_comments do |t| + t.integer :wiki_entry_id + t.text :content + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 96d61d72..0228e0cf 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,24 +10,100 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2019_11_14_163205) do +ActiveRecord::Schema.define(version: 2020_11_16_025343) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" + create_table "activity_types", force: :cascade do |t| + t.string "title" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "information", force: :cascade do |t| + t.string "title" + t.text "content" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "notifications_content", force: :cascade do |t| + t.string "title" + t.text "content" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "process_statuses", force: :cascade do |t| + t.string "title" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "processos", force: :cascade do |t| + t.integer "user_id" + t.integer "process_status_id" + t.string "sei_process_code" + t.binary "documents" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "request_types", force: :cascade do |t| + t.string "name" + t.string "label" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "requests", force: :cascade do |t| + t.integer "request_type_id" + t.integer "user_id" + t.binary "documents" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "sources", force: :cascade do |t| + t.string "name" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "user_notifications", force: :cascade do |t| + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "users", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" + t.string "registration" + t.string "full_name" + t.string "role" t.datetime "remember_created_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.string "full_name" - t.string "registration" - t.integer "role" t.index ["email"], name: "index_users_on_email", unique: true t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end + create_table "wiki_entries", force: :cascade do |t| + t.string "title" + t.text "content" + t.binary "documents" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + create_table "wiki_entry_comments", force: :cascade do |t| + t.integer "wiki_entry_id" + t.text "content" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + end diff --git a/db/seeds.rb b/db/seeds.rb index a5ddd2f6..cbb31774 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -11,4 +11,14 @@ User.create(full_name: "Administrador", email: "admin@admin.com", password: "admin123", role: "administrator", registration: "000000000") User.create(full_name: "Secretário", email: "secretary@secretary.com", password: "admin123", role: "secretary", registration: "000000000") User.create(full_name: "Professor", email: "professor@professor.com", password: "admin123", role: "professor", registration: "000000000") -User.create(full_name: "Aluno", email: "student@student.com", password: "admin123", role: "student", registration: "000000000") \ No newline at end of file +User.create(full_name: "Aluno", email: "student@student.com", password: "admin123", role: "student", registration: "000000000") + +RequestType.create(name: "general", label: "Solicitação geral") +RequestType.create(name: "enroll_payment", label: "Pagamento de inscrição") +RequestType.create(name: "financial_assistance", label: "Auxílio financeiro") +RequestType.create(name: "proficiency", label: "Proficiência") +RequestType.create(name: "deadline_extension", label: "Prorrogação de prazo") +RequestType.create(name: "qualification", label: "Qualificação") +RequestType.create(name: "credits_transfer", label: "Aproveitamento de estudos") +RequestType.create(name: "graduation_enrollment", label: "Matrícula de aluno de graduação") +RequestType.create(name: "general_enrollment", label: "Matrículas gerais de alunos") \ No newline at end of file diff --git a/dbconfig/init.sql b/dbconfig/init.sql new file mode 100644 index 00000000..a8a40e5a --- /dev/null +++ b/dbconfig/init.sql @@ -0,0 +1,8 @@ +CREATE DATABASE secretaria_ppgi_development; +GRANT ALL PRIVILEGES ON DATABASE secretaria_ppgi_development TO test_user; + +CREATE DATABASE secretaria_ppgi_test; +GRANT ALL PRIVILEGES ON DATABASE secretaria_ppgi_test TO test_user; + +CREATE DATABASE secretaria_ppgi_production; +GRANT ALL PRIVILEGES ON DATABASE secretaria_ppgi_production TO test_user; diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml new file mode 100644 index 00000000..647f662f --- /dev/null +++ b/docker-compose-dev.yaml @@ -0,0 +1,37 @@ +version: "3.7" + +services: + secretaria_ppgi_db: + container_name: secretaria_ppgi_db + image: postgres + restart: always + environment: + POSTGRES_USER: test_user + POSTGRES_PASSWORD: test_pwd + ports: + - 5432:5432 + volumes: + - ./dbconfig/init.sql:/docker-entrypoint-initdb.d/init.sql + + eng_sw_2020_1_dev: + container_name: eng_sw_2020_1_dev + tty: true + build: ./ + volumes: + - ./:/root/secretaria + image: eng_sw_image + working_dir: /root/secretaria + command: bash -c 'bin/rails db:migrate RAILS_ENV=test && rails server -b 0.0.0.0' + ports: + - 3000:3000 + depends_on: + - secretaria_ppgi_db + + adminer: + image: adminer + restart: always + ports: + - 8080:8080 + environment: + POSTGRES_USER: test_user + POSTGRES_PASSWORD: test_pwd diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..dab3b1af --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,31 @@ +version: "3.2" + +services: + secretaria_ppgi_db: + container_name: secretaria_ppgi_db + image: postgres:13 + restart: always + environment: + POSTGRES_USER: test_user + POSTGRES_PASSWORD: test_pwd + volumes: + - ./dbconfig/init.sql:/docker-entrypoint-initdb.d/init.sql + logging: + driver: none + + eng_sw_2020_1: + container_name: eng_sw_2020_1 + tty: true + build: ./ + image: eng_sw_image + environment: + SECRETARIA_PPGI_DATABASE_PASSWORD: example + volumes: + - ./:/secretaria/ + ports: + - 3000:3000 + command: bash -c "rake" + depends_on: + - secretaria_ppgi_db + + \ No newline at end of file diff --git a/features/Anexar_arquivos.feature b/features/Anexar_arquivos.feature new file mode 100644 index 00000000..f1fd4997 --- /dev/null +++ b/features/Anexar_arquivos.feature @@ -0,0 +1,14 @@ +Funcionalidade: Como um secretário, eu gostaria de anexar arquivos ao cadastro de um novo processo para que eu possa disponibilizar informações sobre os processos. + +Cenário: Anexar arquivos válidos + Dado que todos os arquivos anexados são de formatos válidos + E eu sou secretário + Quando eu clicar para anexar arquivos + Então os arquivos serão anexados + E mostra uma mensagem de operação concluída + +Cenário: Anexar arquivos inválidos + Dado que pelo menos um arquivo anexado foi de formato não válido + E eu sou secretário + Quando eu clicar para anexar arquivos + Então mostra uma mensagem de erro \ No newline at end of file diff --git a/features/adicionar_processo_com_detalhes.feature b/features/adicionar_processo_com_detalhes.feature new file mode 100644 index 00000000..127396e5 --- /dev/null +++ b/features/adicionar_processo_com_detalhes.feature @@ -0,0 +1,16 @@ +#language: pt + +Funcionalidade: Anexar arquivos ao processo + A fim de manter o processo com o máximo de informações + Como um secretário + Eu quero anexar arquivos a um processo corrente + + Cenário: Secretário anexa arquivo válido + Dado um processo existente + Quando adiciono um arquivo 'file.pdf' ao processo + Então o processo deve constar com o novo arquivo 'file.pdf' + + Cenário: Secretário anexa arquivo inválido + Dado um processo existente + Quando adiciono um arquivo 'file.exe' ao processo + Então o processo não deve constar o novo arquivo 'file.exe' \ No newline at end of file diff --git a/features/cadastrostatus.feature b/features/cadastrostatus.feature new file mode 100644 index 00000000..0bd902e1 --- /dev/null +++ b/features/cadastrostatus.feature @@ -0,0 +1,25 @@ +#language: pt + +Funcionalidade: Como um secretário, + eu gostaria de cadastrar os possíveis status dos processos, + para que eu possa manter controle do fluxo dos processos + + Contexto: Faço login como secretário + Dado que estou estou na página de secretário + E clico em "Cadastrar um Status" + + Cenário: Cadastrar um Status (caminho feliz) + Dado que estou na pagina de cadastrar um status + Quando preencher em "Nome do Status:" com "Novo" + E seleciono "Média" em "Urgência:" + E clicar em "Concluir" + Então deveria estar de volta na pagina de cadastrar um status + E deveria aparecer "Status Cadastrado com sucesso!" + + Cenario: Cadastrar um Status (caminho triste) + Dado que estou na pagina de cadastrar um status + Quando preencher em "Nome do Status:" com "Novo" + E clicar em "Concluir" + Então deveria estar de volta na pagina de secretário + E deveria aparecer "Erro ao Cadastrar Status!" + \ No newline at end of file diff --git a/features/step_definitions/Anexar_arquivos.rb b/features/step_definitions/Anexar_arquivos.rb new file mode 100644 index 00000000..e188de78 --- /dev/null +++ b/features/step_definitions/Anexar_arquivos.rb @@ -0,0 +1,27 @@ +Dado('que todos os arquivos anexados são de formatos válidos') do + pending # Write code here that turns the phrase above into concrete actions + end + + Dado('eu sou secretário') do + pending # Write code here that turns the phrase above into concrete actions + end + + Quando('eu clicar para anexar arquivos') do + pending # Write code here that turns the phrase above into concrete actions + end + + Então('os arquivos serão anexados') do + pending # Write code here that turns the phrase above into concrete actions + end + + Então('mostra uma mensagem de operação concluída') do + pending # Write code here that turns the phrase above into concrete actions + end + + Dado('que pelo menos um arquivo anexado foi de formato não válido') do + pending # Write code here that turns the phrase above into concrete actions + end + + Então('mostra uma mensagem de erro') do + pending # Write code here that turns the phrase above into concrete actions + end \ No newline at end of file diff --git a/features/step_definitions/adicionar_processo_com_detalhes.rb b/features/step_definitions/adicionar_processo_com_detalhes.rb new file mode 100644 index 00000000..6be42949 --- /dev/null +++ b/features/step_definitions/adicionar_processo_com_detalhes.rb @@ -0,0 +1,22 @@ +def valid(file) + accepted_formats = [".txt", ".pdf", ".png", ".jpg"] + accepted_formats.include? File.extname(file) +end + +Dado("um processo existente") do + @processo = {'id' => 1, 'files' => []} +end + +Quando("adiciono um arquivo {string} ao processo") do |file| + if valid file + @processo['files'].append(file) + end +end + +Então("o processo deve constar com o novo arquivo {string}") do |file| + expect(@processo['files']).to include('file.pdf') +end + +Então("o processo não deve constar o novo arquivo {string}") do |file| + expect(@processo['files']).not_to include('file.exe') +end \ No newline at end of file diff --git a/features/step_definitions/cadastrostatus_steps.rb b/features/step_definitions/cadastrostatus_steps.rb new file mode 100644 index 00000000..31abd0a6 --- /dev/null +++ b/features/step_definitions/cadastrostatus_steps.rb @@ -0,0 +1,35 @@ +Dado('que estou estou na página de secretário') do |page_secretario| + visit path_to(page_secretario) +end + +Dado('clico em {string}') do |string| + click_button(string) +end + +Dado('que estou na pagina de cadastrar um status') do |page_cadastro_status| + visit path_to(page_cadastro_status) +end + +Quando('preencher em {string} com {string2}') do |string, string2| + fill_in(string, :with => string2) +end + +Quando('seleciono {string} em {string2}') do |string, string2| + select(string, :from => string2) +end + +Quando('clicar em {string}') do |string| + click_button(string) +end + +Então('deveria estar de volta na pagina de cadastrar um status') do |page_cadastro_status| + visit path_to(page_cadastro_status) +end + +Então('deveria estar de volta na pagina de secretario') do |page_secretario| + visit path_to(page_secretario) +end + +Então('deveria aparecer {string}') do |string| + @expected_message = string +end \ No newline at end of file diff --git a/features/step_definitions/ver_processos_por_pessoa.rb b/features/step_definitions/ver_processos_por_pessoa.rb new file mode 100644 index 00000000..b6443050 --- /dev/null +++ b/features/step_definitions/ver_processos_por_pessoa.rb @@ -0,0 +1,27 @@ +Dado('que estou estou na página de secretário') do |page_secretario| + visit path_to(page_secretario) +end + +Dado('clico em {string}') do |string| + click_button(string) +end + +Dado('que estou na pagina de busca por nome') do |page_search_name| + visit path_to(page_page_search_name) +end + +Quando('preencher nome em {string} com {string2}') do |string, string2| + fill_in(string, :with => string2) +end + +Então("o nome deve constar no db") do |string| +expect(File.readlines(file).grep({string}) +end + +Então("o nome não deve constar no db") do |string| + expect(File.readlines(file).not_to grep({string}) +end + +Então("os processos de {string} devem constar") do |file| + @expected_message = @processo['files'] + end \ No newline at end of file diff --git a/features/ver_processos_por_pessoa.feature b/features/ver_processos_por_pessoa.feature new file mode 100644 index 00000000..c73e18e2 --- /dev/null +++ b/features/ver_processos_por_pessoa.feature @@ -0,0 +1,21 @@ +#language: pt + +Funcionalidade: Filtrar processos por pessoa + + Como um secretário, para que eu possa ter informações durante um atendimento, + eu gostaria de ver todos os processos relacionados a uma pessoa + + Contexto: Faço login como secretário + Dado que estou estou na página de secretário + E clico em "Consultar Processos" para ser direcionado + ao campo "Nome do Envolvido" + + Cenário: Nome da pessoa não consta no sistema + Dado uma busca por nome + Quando pesquiso uma pessoa específica + Então deve surgir o aviso de que este nome não está no banco de dados + + Cenário: Pessoa sem processos registrados + Dado uma busca por nome + Quando pesquiso uma pessoa específica + Então deve surgir o aviso de que este nome não contém processos registrados \ No newline at end of file diff --git a/package.json b/package.json index 35eaf1ed..4278469d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,7 @@ { "name": "secretaria_ppgi", "private": true, - "dependencies": {} + "dependencies": { + "@fortawesome/fontawesome-free": "^5.15.1" + } } diff --git a/spec/controllers/process_controller_spec.rb b/spec/controllers/process_controller_spec.rb new file mode 100644 index 00000000..63e88ce3 --- /dev/null +++ b/spec/controllers/process_controller_spec.rb @@ -0,0 +1,12 @@ +require 'rails_helper' + +RSpec.describe ProcessController, type: :controller do + + describe "GET #index" do + it "returns http success" do + get :index + expect(response).to have_http_status(:success) + end + end + +end diff --git a/spec/helpers/process_helper_spec.rb b/spec/helpers/process_helper_spec.rb new file mode 100644 index 00000000..b97e971e --- /dev/null +++ b/spec/helpers/process_helper_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +# Specs in this file have access to a helper object that includes +# the ProcessHelper. For example: +# +# describe ProcessHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# expect(helper.concat_strings("this","that")).to eq("this that") +# end +# end +# end +RSpec.describe ProcessHelper, type: :helper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/activity_type_spec.rb b/spec/models/activity_type_spec.rb new file mode 100644 index 00000000..d32fd2d7 --- /dev/null +++ b/spec/models/activity_type_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ActivityType, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end \ No newline at end of file diff --git a/spec/models/information_spec.rb b/spec/models/information_spec.rb new file mode 100644 index 00000000..d3a54bb0 --- /dev/null +++ b/spec/models/information_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Information, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/notification_spec.rb b/spec/models/notification_spec.rb new file mode 100644 index 00000000..bbdc6e00 --- /dev/null +++ b/spec/models/notification_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Notification, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/process_status_spec.rb b/spec/models/process_status_spec.rb new file mode 100644 index 00000000..f3e83570 --- /dev/null +++ b/spec/models/process_status_spec.rb @@ -0,0 +1,25 @@ +require 'rails_helper' + +describe ProcessStatus, type: :model do + it "Valido quando nome esta presente" do + status = Status.new( title: 'Novo') + expect(status).to be_valid + end +end + +describe ProcessStatus, type: :model do + it "Invalido sem o nome" do + status = Status.new( title: nil) + status.valid? + expect(status.errors[:title]).to include("Nao pode deixar espaço de nome em branco.") + end +end + +describe ProcessStatus, type: :model do + it "Invalido caso ja exista um e-mail igual" do + status = Status.create( title: 'Em espera') + status = Status.new( title: 'Em espera') + status.valid? + expect(status.errors[:title]).to include('Status Repetido') + end +end \ No newline at end of file diff --git a/spec/models/processo_spec.rb b/spec/models/processo_spec.rb new file mode 100644 index 00000000..510e6660 --- /dev/null +++ b/spec/models/processo_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Processo, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end \ No newline at end of file diff --git a/spec/models/question_spec.rb b/spec/models/question_spec.rb new file mode 100644 index 00000000..221fe28d --- /dev/null +++ b/spec/models/question_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Question, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end \ No newline at end of file diff --git a/spec/models/question_topic_spec.rb b/spec/models/question_topic_spec.rb new file mode 100644 index 00000000..929c1596 --- /dev/null +++ b/spec/models/question_topic_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe QuestionTopic, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end \ No newline at end of file diff --git a/spec/models/request_spec.rb b/spec/models/request_spec.rb new file mode 100644 index 00000000..8ccca08f --- /dev/null +++ b/spec/models/request_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Request, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/source_spec.rb b/spec/models/source_spec.rb new file mode 100644 index 00000000..60e6408f --- /dev/null +++ b/spec/models/source_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Source, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/user_notification_spec.rb b/spec/models/user_notification_spec.rb new file mode 100644 index 00000000..236d7729 --- /dev/null +++ b/spec/models/user_notification_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe UserNotification, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/user_secretary_spec.rb b/spec/models/user_secretary_spec.rb new file mode 100644 index 00000000..bb224a37 --- /dev/null +++ b/spec/models/user_secretary_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe UserSecretary, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/wiki_entry_comment_spec.rb b/spec/models/wiki_entry_comment_spec.rb new file mode 100644 index 00000000..6cda1c0d --- /dev/null +++ b/spec/models/wiki_entry_comment_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe WikiEntryComment, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end \ No newline at end of file diff --git a/spec/models/wiki_entry_spec.rb b/spec/models/wiki_entry_spec.rb new file mode 100644 index 00000000..3abb4dc3 --- /dev/null +++ b/spec/models/wiki_entry_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe WikiEntry, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index b06351ba..305764ba 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -58,6 +58,15 @@ # Filter lines from Rails gems in backtraces. config.filter_rails_from_backtrace! + config.use_transactional_fixtures = false # arbitrary gems may also be filtered via: # config.filter_gems_from_backtrace("gem name") end +require 'shoulda/matchers' + +Shoulda::Matchers.configure do |config| + config.integrate do |with| + with.test_framework :rspec + with.library :rails + end +end \ No newline at end of file diff --git a/spec/support/database_cleaner.rb b/spec/support/database_cleaner.rb new file mode 100644 index 00000000..84219341 --- /dev/null +++ b/spec/support/database_cleaner.rb @@ -0,0 +1,22 @@ +RSpec.configure do |config| + + config.before(:suite) do + DatabaseCleaner.clean_with(:truncation) + end + + config.before(:each) do + DatabaseCleaner.strategy = :transaction + end + + config.before(:each, :js => true) do + DatabaseCleaner.strategy = :truncation + end + + config.before(:each) do + DatabaseCleaner.start + end + + config.after(:each) do + DatabaseCleaner.clean + end + end \ No newline at end of file diff --git a/spec/views/process/index.html.erb_spec.rb b/spec/views/process/index.html.erb_spec.rb new file mode 100644 index 00000000..3bcdfae4 --- /dev/null +++ b/spec/views/process/index.html.erb_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe "process/index.html.erb", type: :view do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/test/models/request_type_spec.rb b/test/models/request_type_spec.rb new file mode 100644 index 00000000..55aef7d5 --- /dev/null +++ b/test/models/request_type_spec.rb @@ -0,0 +1,13 @@ +require 'rails_helper' + +RSpec.describe RequestType, type: :model do + allowed_types = %w[general enroll_payment financial_assistance proficiency deadline_extension qualification credits_transfer graduation_enrollment general_enrollment] + it "is seeded array matching expected types" do + found_types = [] + a = RequestType.find_each do |req_type| + found_types.append(req_type.name) + end + puts(found_types) + expect(found_types).to match_array(allowed_types) + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 3ab84e3d..a478af3b 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,3 +1,4 @@ + ENV['RAILS_ENV'] ||= 'test' require_relative '../config/environment' require 'rails/test_help' diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..01c5ff74 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@fortawesome/fontawesome-free@^5.15.1": + version "5.15.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.1.tgz#ccfef6ddbe59f8fe8f694783e1d3eb88902dc5eb" + integrity sha512-OEdH7SyC1suTdhBGW91/zBfR6qaIhThbcN8PUXtXilY4GYnSBbVqOntdHbC1vXwsDnX0Qix2m2+DSU1J51ybOQ==