diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 3def0895..7f8591bb 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -2,10 +2,12 @@ name: Tests
on:
push:
- branches: [ master, develop ]
+ branches:
+ - master
+ - develop
+ - 'hotfix/**'
tags: [ '*' ]
pull_request:
- branches: [ master, develop ]
jobs:
diff --git a/README.cs.md b/README.cs.md
index d3d4e255..8171b27d 100644
--- a/README.cs.md
+++ b/README.cs.md
@@ -2,7 +2,7 @@
# Wulkanowy
-[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
+[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/wulkanowy/wulkanowy/test.yml?branch=develop&style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
diff --git a/README.de.md b/README.de.md
index 853abd13..972f66ba 100644
--- a/README.de.md
+++ b/README.de.md
@@ -2,7 +2,7 @@
# Wulkanowy
-[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
+[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/wulkanowy/wulkanowy/test.yml?branch=develop&style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
diff --git a/README.en.md b/README.en.md
index 7877bf37..6e4da463 100644
--- a/README.en.md
+++ b/README.en.md
@@ -2,7 +2,7 @@
# Wulkanowy
-[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
+[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/wulkanowy/wulkanowy/test.yml?branch=develop&style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
diff --git a/README.md b/README.md
index 09480e7d..f3d2e29a 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
# Wulkanowy
-[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
+[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/wulkanowy/wulkanowy/test.yml?branch=develop&style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
diff --git a/README.sk.md b/README.sk.md
index 64786556..ff0c6e3c 100644
--- a/README.sk.md
+++ b/README.sk.md
@@ -2,7 +2,7 @@
# Wulkanowy
-[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wulkanowy/wulkanowy/Tests/develop?style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
+[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/wulkanowy/wulkanowy/test.yml?branch=develop&style=flat-square)](https://github.com/wulkanowy/wulkanowy/actions)
[![Codecov](https://img.shields.io/codecov/c/github/wulkanowy/wulkanowy/master.svg?style=flat-square)](https://codecov.io/gh/wulkanowy/wulkanowy)
[![Discord](https://img.shields.io/discord/390889354199040011.svg?style=flat-square)](https://discord.gg/vccAQBr)
[![F-Droid](https://img.shields.io/f-droid/v/io.github.wulkanowy.svg?style=flat-square)](https://f-droid.org/packages/io.github.wulkanowy/)
diff --git a/app/build.gradle b/app/build.gradle
index f6a82ad2..a61d0a1d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -23,8 +23,8 @@ android {
testApplicationId "io.github.tests.wulkanowy"
minSdkVersion 21
targetSdkVersion 32
- versionCode 116
- versionName "1.8.1"
+ versionCode 117
+ versionName "1.8.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
resValue "string", "app_name", "Wulkanowy"
@@ -162,7 +162,7 @@ play {
track = 'production'
releaseStatus = com.github.triplet.gradle.androidpublisher.ReleaseStatus.IN_PROGRESS
userFraction = 0.10d
- updatePriority = 4
+ updatePriority = 5
enabled.set(false)
}
@@ -186,7 +186,7 @@ ext {
}
dependencies {
- implementation "io.github.wulkanowy:sdk:1.8.1"
+ implementation "io.github.wulkanowy:sdk:1.8.2"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.8'
diff --git a/app/schemas/io.github.wulkanowy.data.db.AppDatabase/54.json b/app/schemas/io.github.wulkanowy.data.db.AppDatabase/54.json
new file mode 100644
index 00000000..7b41672b
--- /dev/null
+++ b/app/schemas/io.github.wulkanowy.data.db.AppDatabase/54.json
@@ -0,0 +1,2439 @@
+{
+ "formatVersion": 1,
+ "database": {
+ "version": 54,
+ "identityHash": "1dc96a366125ec9f8567da87cdc9c863",
+ "entities": [
+ {
+ "tableName": "Students",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`scrapper_base_url` TEXT NOT NULL, `mobile_base_url` TEXT NOT NULL, `login_type` TEXT NOT NULL, `login_mode` TEXT NOT NULL, `certificate_key` TEXT NOT NULL, `private_key` TEXT NOT NULL, `is_parent` INTEGER NOT NULL, `email` TEXT NOT NULL, `password` TEXT NOT NULL, `symbol` TEXT NOT NULL, `student_id` INTEGER NOT NULL, `user_login_id` INTEGER NOT NULL, `user_name` TEXT NOT NULL, `student_name` TEXT NOT NULL, `school_id` TEXT NOT NULL, `school_short` TEXT NOT NULL, `school_name` TEXT NOT NULL, `class_name` TEXT NOT NULL, `class_id` INTEGER NOT NULL, `is_current` INTEGER NOT NULL, `registration_date` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `nick` TEXT NOT NULL, `avatar_color` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "scrapperBaseUrl",
+ "columnName": "scrapper_base_url",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "mobileBaseUrl",
+ "columnName": "mobile_base_url",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "loginType",
+ "columnName": "login_type",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "loginMode",
+ "columnName": "login_mode",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "certificateKey",
+ "columnName": "certificate_key",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "privateKey",
+ "columnName": "private_key",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isParent",
+ "columnName": "is_parent",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "email",
+ "columnName": "email",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "password",
+ "columnName": "password",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "symbol",
+ "columnName": "symbol",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "userLoginId",
+ "columnName": "user_login_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "userName",
+ "columnName": "user_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentName",
+ "columnName": "student_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "schoolSymbol",
+ "columnName": "school_id",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "schoolShortName",
+ "columnName": "school_short",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "schoolName",
+ "columnName": "school_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "className",
+ "columnName": "class_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "classId",
+ "columnName": "class_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isCurrent",
+ "columnName": "is_current",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "registrationDate",
+ "columnName": "registration_date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "nick",
+ "columnName": "nick",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "avatarColor",
+ "columnName": "avatar_color",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [
+ {
+ "name": "index_Students_email_symbol_student_id_school_id_class_id",
+ "unique": true,
+ "columnNames": [
+ "email",
+ "symbol",
+ "student_id",
+ "school_id",
+ "class_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_Students_email_symbol_student_id_school_id_class_id` ON `${TABLE_NAME}` (`email`, `symbol`, `student_id`, `school_id`, `class_id`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Semesters",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `kindergarten_diary_id` INTEGER NOT NULL DEFAULT 0, `diary_name` TEXT NOT NULL, `school_year` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `semester_name` INTEGER NOT NULL, `start` INTEGER NOT NULL, `end` INTEGER NOT NULL, `class_id` INTEGER NOT NULL, `unit_id` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_current` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "kindergartenDiaryId",
+ "columnName": "kindergarten_diary_id",
+ "affinity": "INTEGER",
+ "notNull": true,
+ "defaultValue": "0"
+ },
+ {
+ "fieldPath": "diaryName",
+ "columnName": "diary_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "schoolYear",
+ "columnName": "school_year",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "semesterId",
+ "columnName": "semester_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "semesterName",
+ "columnName": "semester_name",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "start",
+ "columnName": "start",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "end",
+ "columnName": "end",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "classId",
+ "columnName": "class_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "unitId",
+ "columnName": "unit_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "current",
+ "columnName": "is_current",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [
+ {
+ "name": "index_Semesters_student_id_diary_id_kindergarten_diary_id_semester_id",
+ "unique": true,
+ "columnNames": [
+ "student_id",
+ "diary_id",
+ "kindergarten_diary_id",
+ "semester_id"
+ ],
+ "orders": [],
+ "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_Semesters_student_id_diary_id_kindergarten_diary_id_semester_id` ON `${TABLE_NAME}` (`student_id`, `diary_id`, `kindergarten_diary_id`, `semester_id`)"
+ }
+ ],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Exams",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `entry_date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `group` TEXT NOT NULL, `type` TEXT NOT NULL, `description` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "entryDate",
+ "columnName": "entry_date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "group",
+ "columnName": "group",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "type",
+ "columnName": "type",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "description",
+ "columnName": "description",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacher",
+ "columnName": "teacher",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacherSymbol",
+ "columnName": "teacher_symbol",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Timetable",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `number` INTEGER NOT NULL, `start` INTEGER NOT NULL, `end` INTEGER NOT NULL, `date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `subjectOld` TEXT NOT NULL, `group` TEXT NOT NULL, `room` TEXT NOT NULL, `roomOld` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacherOld` TEXT NOT NULL, `info` TEXT NOT NULL, `student_plan` INTEGER NOT NULL, `changes` INTEGER NOT NULL, `canceled` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "number",
+ "columnName": "number",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "start",
+ "columnName": "start",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "end",
+ "columnName": "end",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subjectOld",
+ "columnName": "subjectOld",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "group",
+ "columnName": "group",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "room",
+ "columnName": "room",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "roomOld",
+ "columnName": "roomOld",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacher",
+ "columnName": "teacher",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacherOld",
+ "columnName": "teacherOld",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "info",
+ "columnName": "info",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isStudentPlan",
+ "columnName": "student_plan",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "changes",
+ "columnName": "changes",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "canceled",
+ "columnName": "canceled",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Attendance",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `time_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `number` INTEGER NOT NULL, `subject` TEXT NOT NULL, `name` TEXT NOT NULL, `presence` INTEGER NOT NULL, `absence` INTEGER NOT NULL, `exemption` INTEGER NOT NULL, `lateness` INTEGER NOT NULL, `excused` INTEGER NOT NULL, `deleted` INTEGER NOT NULL, `excusable` INTEGER NOT NULL, `excuse_status` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "timeId",
+ "columnName": "time_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "number",
+ "columnName": "number",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "presence",
+ "columnName": "presence",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "absence",
+ "columnName": "absence",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "exemption",
+ "columnName": "exemption",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "lateness",
+ "columnName": "lateness",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "excused",
+ "columnName": "excused",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "deleted",
+ "columnName": "deleted",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "excusable",
+ "columnName": "excusable",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "excuseStatus",
+ "columnName": "excuse_status",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "AttendanceSummary",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `subject_id` INTEGER NOT NULL, `month` INTEGER NOT NULL, `presence` INTEGER NOT NULL, `absence` INTEGER NOT NULL, `absence_excused` INTEGER NOT NULL, `absence_for_school_reasons` INTEGER NOT NULL, `lateness` INTEGER NOT NULL, `lateness_excused` INTEGER NOT NULL, `exemption` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subjectId",
+ "columnName": "subject_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "month",
+ "columnName": "month",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "presence",
+ "columnName": "presence",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "absence",
+ "columnName": "absence",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "absenceExcused",
+ "columnName": "absence_excused",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "absenceForSchoolReasons",
+ "columnName": "absence_for_school_reasons",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "lateness",
+ "columnName": "lateness",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "latenessExcused",
+ "columnName": "lateness_excused",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "exemption",
+ "columnName": "exemption",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Grades",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`semester_id` INTEGER NOT NULL, `student_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `entry` TEXT NOT NULL, `value` REAL NOT NULL, `modifier` REAL NOT NULL, `comment` TEXT NOT NULL, `color` TEXT NOT NULL, `grade_symbol` TEXT NOT NULL, `description` TEXT NOT NULL, `weight` TEXT NOT NULL, `weightValue` REAL NOT NULL, `date` INTEGER NOT NULL, `teacher` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_read` INTEGER NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "semesterId",
+ "columnName": "semester_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "entry",
+ "columnName": "entry",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "value",
+ "columnName": "value",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "modifier",
+ "columnName": "modifier",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "comment",
+ "columnName": "comment",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "color",
+ "columnName": "color",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "gradeSymbol",
+ "columnName": "grade_symbol",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "description",
+ "columnName": "description",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "weight",
+ "columnName": "weight",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "weightValue",
+ "columnName": "weightValue",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacher",
+ "columnName": "teacher",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isRead",
+ "columnName": "is_read",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "GradesSummary",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`semester_id` INTEGER NOT NULL, `student_id` INTEGER NOT NULL, `position` INTEGER NOT NULL, `subject` TEXT NOT NULL, `predicted_grade` TEXT NOT NULL, `final_grade` TEXT NOT NULL, `proposed_points` TEXT NOT NULL, `final_points` TEXT NOT NULL, `points_sum` TEXT NOT NULL, `average` REAL NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_predicted_grade_notified` INTEGER NOT NULL, `is_final_grade_notified` INTEGER NOT NULL, `predicted_grade_last_change` INTEGER NOT NULL, `final_grade_last_change` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "semesterId",
+ "columnName": "semester_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "position",
+ "columnName": "position",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "predictedGrade",
+ "columnName": "predicted_grade",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "finalGrade",
+ "columnName": "final_grade",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "proposedPoints",
+ "columnName": "proposed_points",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "finalPoints",
+ "columnName": "final_points",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "pointsSum",
+ "columnName": "points_sum",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "average",
+ "columnName": "average",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isPredictedGradeNotified",
+ "columnName": "is_predicted_grade_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isFinalGradeNotified",
+ "columnName": "is_final_grade_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "predictedGradeLastChange",
+ "columnName": "predicted_grade_last_change",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "finalGradeLastChange",
+ "columnName": "final_grade_last_change",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "GradePartialStatistics",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `class_average` TEXT NOT NULL, `student_average` TEXT NOT NULL, `class_amounts` TEXT NOT NULL, `student_amounts` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "semesterId",
+ "columnName": "semester_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "classAverage",
+ "columnName": "class_average",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentAverage",
+ "columnName": "student_average",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "classAmounts",
+ "columnName": "class_amounts",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentAmounts",
+ "columnName": "student_amounts",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "GradesPointsStatistics",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `others` REAL NOT NULL, `student` REAL NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "semesterId",
+ "columnName": "semester_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "others",
+ "columnName": "others",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "student",
+ "columnName": "student",
+ "affinity": "REAL",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "GradeSemesterStatistics",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `semester_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `amounts` TEXT NOT NULL, `student_grade` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "semesterId",
+ "columnName": "semester_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "amounts",
+ "columnName": "amounts",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentGrade",
+ "columnName": "student_grade",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Messages",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`email` TEXT NOT NULL, `message_global_key` TEXT NOT NULL, `mailbox_key` TEXT NOT NULL, `message_id` INTEGER NOT NULL, `correspondents` TEXT NOT NULL, `subject` TEXT NOT NULL, `date` INTEGER NOT NULL, `folder_id` INTEGER NOT NULL, `unread` INTEGER NOT NULL, `read_by` INTEGER, `unread_by` INTEGER, `has_attachments` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL, `content` TEXT NOT NULL, `sender` TEXT, `recipients` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "email",
+ "columnName": "email",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "messageGlobalKey",
+ "columnName": "message_global_key",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "mailboxKey",
+ "columnName": "mailbox_key",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "messageId",
+ "columnName": "message_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "correspondents",
+ "columnName": "correspondents",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "folderId",
+ "columnName": "folder_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "unread",
+ "columnName": "unread",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "readBy",
+ "columnName": "read_by",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "unreadBy",
+ "columnName": "unread_by",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "hasAttachments",
+ "columnName": "has_attachments",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "content",
+ "columnName": "content",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "sender",
+ "columnName": "sender",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "recipients",
+ "columnName": "recipients",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "MessageAttachments",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`real_id` INTEGER NOT NULL, `message_global_key` TEXT NOT NULL, `url` TEXT NOT NULL, `filename` TEXT NOT NULL, PRIMARY KEY(`real_id`))",
+ "fields": [
+ {
+ "fieldPath": "realId",
+ "columnName": "real_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "messageGlobalKey",
+ "columnName": "message_global_key",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "url",
+ "columnName": "url",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "filename",
+ "columnName": "filename",
+ "affinity": "TEXT",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "real_id"
+ ],
+ "autoGenerate": false
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Notes",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `category` TEXT NOT NULL, `category_type` INTEGER NOT NULL, `is_points_show` INTEGER NOT NULL, `points` INTEGER NOT NULL, `content` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_read` INTEGER NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacher",
+ "columnName": "teacher",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacherSymbol",
+ "columnName": "teacher_symbol",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "category",
+ "columnName": "category",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "categoryType",
+ "columnName": "category_type",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isPointsShow",
+ "columnName": "is_points_show",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "points",
+ "columnName": "points",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "content",
+ "columnName": "content",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isRead",
+ "columnName": "is_read",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Homework",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`semester_id` INTEGER NOT NULL, `student_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `entry_date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `content` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `attachments` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_done` INTEGER NOT NULL, `is_notified` INTEGER NOT NULL, `is_added_by_user` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "semesterId",
+ "columnName": "semester_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "entryDate",
+ "columnName": "entry_date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "content",
+ "columnName": "content",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacher",
+ "columnName": "teacher",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacherSymbol",
+ "columnName": "teacher_symbol",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "attachments",
+ "columnName": "attachments",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isDone",
+ "columnName": "is_done",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isAddedByUser",
+ "columnName": "is_added_by_user",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Subjects",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `real_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "realId",
+ "columnName": "real_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "LuckyNumbers",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `lucky_number` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "luckyNumber",
+ "columnName": "lucky_number",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "CompletedLesson",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `number` INTEGER NOT NULL, `subject` TEXT NOT NULL, `topic` TEXT NOT NULL, `teacher` TEXT NOT NULL, `teacher_symbol` TEXT NOT NULL, `substitution` TEXT NOT NULL, `absence` TEXT NOT NULL, `resources` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "number",
+ "columnName": "number",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "topic",
+ "columnName": "topic",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacher",
+ "columnName": "teacher",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "teacherSymbol",
+ "columnName": "teacher_symbol",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "substitution",
+ "columnName": "substitution",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "absence",
+ "columnName": "absence",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "resources",
+ "columnName": "resources",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Mailboxes",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`globalKey` TEXT NOT NULL, `email` TEXT NOT NULL, `symbol` TEXT NOT NULL, `schoolId` TEXT NOT NULL, `fullName` TEXT NOT NULL, `userName` TEXT NOT NULL, `studentName` TEXT NOT NULL, `schoolNameShort` TEXT NOT NULL, `type` TEXT NOT NULL, PRIMARY KEY(`globalKey`))",
+ "fields": [
+ {
+ "fieldPath": "globalKey",
+ "columnName": "globalKey",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "email",
+ "columnName": "email",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "symbol",
+ "columnName": "symbol",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "schoolId",
+ "columnName": "schoolId",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "fullName",
+ "columnName": "fullName",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "userName",
+ "columnName": "userName",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentName",
+ "columnName": "studentName",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "schoolNameShort",
+ "columnName": "schoolNameShort",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "type",
+ "columnName": "type",
+ "affinity": "TEXT",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "globalKey"
+ ],
+ "autoGenerate": false
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Recipients",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`mailboxGlobalKey` TEXT NOT NULL, `studentMailboxGlobalKey` TEXT NOT NULL, `fullName` TEXT NOT NULL, `userName` TEXT NOT NULL, `schoolShortName` TEXT NOT NULL, `type` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "mailboxGlobalKey",
+ "columnName": "mailboxGlobalKey",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "studentMailboxGlobalKey",
+ "columnName": "studentMailboxGlobalKey",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "fullName",
+ "columnName": "fullName",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "userName",
+ "columnName": "userName",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "schoolShortName",
+ "columnName": "schoolShortName",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "type",
+ "columnName": "type",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "MobileDevices",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`user_login_id` INTEGER NOT NULL, `device_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `date` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "userLoginId",
+ "columnName": "user_login_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "deviceId",
+ "columnName": "device_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Teachers",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `class_id` INTEGER NOT NULL, `subject` TEXT NOT NULL, `name` TEXT NOT NULL, `short_name` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "classId",
+ "columnName": "class_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "shortName",
+ "columnName": "short_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "School",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `class_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `address` TEXT NOT NULL, `contact` TEXT NOT NULL, `headmaster` TEXT NOT NULL, `pedagogue` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "classId",
+ "columnName": "class_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "name",
+ "columnName": "name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "address",
+ "columnName": "address",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "contact",
+ "columnName": "contact",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "headmaster",
+ "columnName": "headmaster",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "pedagogue",
+ "columnName": "pedagogue",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Conferences",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `subject` TEXT NOT NULL, `agenda` TEXT NOT NULL, `present_on_conference` TEXT NOT NULL, `conference_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "title",
+ "columnName": "title",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "agenda",
+ "columnName": "agenda",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "presentOnConference",
+ "columnName": "present_on_conference",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "conferenceId",
+ "columnName": "conference_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "TimetableAdditional",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `start` INTEGER NOT NULL, `end` INTEGER NOT NULL, `date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `repeat_id` BLOB DEFAULT NULL, `is_added_by_user` INTEGER NOT NULL DEFAULT 0)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "start",
+ "columnName": "start",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "end",
+ "columnName": "end",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "repeatId",
+ "columnName": "repeat_id",
+ "affinity": "BLOB",
+ "notNull": false,
+ "defaultValue": "NULL"
+ },
+ {
+ "fieldPath": "isAddedByUser",
+ "columnName": "is_added_by_user",
+ "affinity": "INTEGER",
+ "notNull": true,
+ "defaultValue": "0"
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "StudentInfo",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `full_name` TEXT NOT NULL, `first_name` TEXT NOT NULL, `second_name` TEXT NOT NULL, `surname` TEXT NOT NULL, `birth_date` INTEGER NOT NULL, `birth_place` TEXT NOT NULL, `gender` TEXT NOT NULL, `has_polish_citizenship` INTEGER NOT NULL, `family_name` TEXT NOT NULL, `parents_names` TEXT NOT NULL, `address` TEXT NOT NULL, `registered_address` TEXT NOT NULL, `correspondence_address` TEXT NOT NULL, `phone_number` TEXT NOT NULL, `cell_phone_number` TEXT NOT NULL, `email` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `first_guardian_full_name` TEXT, `first_guardian_kinship` TEXT, `first_guardian_address` TEXT, `first_guardian_phones` TEXT, `first_guardian_email` TEXT, `second_guardian_full_name` TEXT, `second_guardian_kinship` TEXT, `second_guardian_address` TEXT, `second_guardian_phones` TEXT, `second_guardian_email` TEXT)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "fullName",
+ "columnName": "full_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "firstName",
+ "columnName": "first_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "secondName",
+ "columnName": "second_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "surname",
+ "columnName": "surname",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "birthDate",
+ "columnName": "birth_date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "birthPlace",
+ "columnName": "birth_place",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "gender",
+ "columnName": "gender",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "hasPolishCitizenship",
+ "columnName": "has_polish_citizenship",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "familyName",
+ "columnName": "family_name",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "parentsNames",
+ "columnName": "parents_names",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "address",
+ "columnName": "address",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "registeredAddress",
+ "columnName": "registered_address",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "correspondenceAddress",
+ "columnName": "correspondence_address",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "phoneNumber",
+ "columnName": "phone_number",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "cellPhoneNumber",
+ "columnName": "cell_phone_number",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "email",
+ "columnName": "email",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "firstGuardian.fullName",
+ "columnName": "first_guardian_full_name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "firstGuardian.kinship",
+ "columnName": "first_guardian_kinship",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "firstGuardian.address",
+ "columnName": "first_guardian_address",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "firstGuardian.phones",
+ "columnName": "first_guardian_phones",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "firstGuardian.email",
+ "columnName": "first_guardian_email",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "secondGuardian.fullName",
+ "columnName": "second_guardian_full_name",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "secondGuardian.kinship",
+ "columnName": "second_guardian_kinship",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "secondGuardian.address",
+ "columnName": "second_guardian_address",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "secondGuardian.phones",
+ "columnName": "second_guardian_phones",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "secondGuardian.email",
+ "columnName": "second_guardian_email",
+ "affinity": "TEXT",
+ "notNull": false
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "TimetableHeaders",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `diary_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `content` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "diaryId",
+ "columnName": "diary_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "content",
+ "columnName": "content",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "SchoolAnnouncements",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`user_login_id` INTEGER NOT NULL, `date` INTEGER NOT NULL, `subject` TEXT NOT NULL, `content` TEXT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `is_notified` INTEGER NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "userLoginId",
+ "columnName": "user_login_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "subject",
+ "columnName": "subject",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "content",
+ "columnName": "content",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isNotified",
+ "columnName": "is_notified",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "Notifications",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`student_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `type` TEXT NOT NULL, `destination` TEXT NOT NULL DEFAULT '{\"type\":\"io.github.wulkanowy.ui.modules.Destination.Dashboard\"}', `date` INTEGER NOT NULL, `data` TEXT, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)",
+ "fields": [
+ {
+ "fieldPath": "studentId",
+ "columnName": "student_id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "title",
+ "columnName": "title",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "content",
+ "columnName": "content",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "type",
+ "columnName": "type",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "destination",
+ "columnName": "destination",
+ "affinity": "TEXT",
+ "notNull": true,
+ "defaultValue": "'{\"type\":\"io.github.wulkanowy.ui.modules.Destination.Dashboard\"}'"
+ },
+ {
+ "fieldPath": "date",
+ "columnName": "date",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "data",
+ "columnName": "data",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": true
+ },
+ "indices": [],
+ "foreignKeys": []
+ },
+ {
+ "tableName": "AdminMessages",
+ "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `title` TEXT NOT NULL, `content` TEXT NOT NULL, `version_name` INTEGER, `version_max` INTEGER, `target_register_host` TEXT, `target_flavor` TEXT, `destination_url` TEXT, `priority` TEXT NOT NULL, `type` TEXT NOT NULL, `is_dismissible` INTEGER NOT NULL, PRIMARY KEY(`id`))",
+ "fields": [
+ {
+ "fieldPath": "id",
+ "columnName": "id",
+ "affinity": "INTEGER",
+ "notNull": true
+ },
+ {
+ "fieldPath": "title",
+ "columnName": "title",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "content",
+ "columnName": "content",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "versionMin",
+ "columnName": "version_name",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "versionMax",
+ "columnName": "version_max",
+ "affinity": "INTEGER",
+ "notNull": false
+ },
+ {
+ "fieldPath": "targetRegisterHost",
+ "columnName": "target_register_host",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "targetFlavor",
+ "columnName": "target_flavor",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "destinationUrl",
+ "columnName": "destination_url",
+ "affinity": "TEXT",
+ "notNull": false
+ },
+ {
+ "fieldPath": "priority",
+ "columnName": "priority",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "type",
+ "columnName": "type",
+ "affinity": "TEXT",
+ "notNull": true
+ },
+ {
+ "fieldPath": "isDismissible",
+ "columnName": "is_dismissible",
+ "affinity": "INTEGER",
+ "notNull": true
+ }
+ ],
+ "primaryKey": {
+ "columnNames": [
+ "id"
+ ],
+ "autoGenerate": false
+ },
+ "indices": [],
+ "foreignKeys": []
+ }
+ ],
+ "views": [],
+ "setupQueries": [
+ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
+ "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '1dc96a366125ec9f8567da87cdc9c863')"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt b/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt
index 792611a8..cfb53485 100644
--- a/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt
+++ b/app/src/main/java/io/github/wulkanowy/data/db/AppDatabase.kt
@@ -56,7 +56,7 @@ import javax.inject.Singleton
abstract class AppDatabase : RoomDatabase() {
companion object {
- const val VERSION_SCHEMA = 53
+ const val VERSION_SCHEMA = 54
fun getMigrations(sharedPrefProvider: SharedPrefProvider, appInfo: AppInfo) = arrayOf(
Migration2(),
@@ -107,6 +107,7 @@ abstract class AppDatabase : RoomDatabase() {
Migration50(),
Migration51(),
Migration53(),
+ Migration54(),
)
fun newInstance(
diff --git a/app/src/main/java/io/github/wulkanowy/data/db/migrations/Migration54.kt b/app/src/main/java/io/github/wulkanowy/data/db/migrations/Migration54.kt
new file mode 100644
index 00000000..678bd32f
--- /dev/null
+++ b/app/src/main/java/io/github/wulkanowy/data/db/migrations/Migration54.kt
@@ -0,0 +1,26 @@
+package io.github.wulkanowy.data.db.migrations
+
+import androidx.room.migration.Migration
+import androidx.sqlite.db.SupportSQLiteDatabase
+
+class Migration54 : Migration(53, 54) {
+
+ override fun migrate(database: SupportSQLiteDatabase) {
+ migrateResman(database)
+ removeTomaszowMazowieckiStudents(database)
+ }
+
+ private fun migrateResman(database: SupportSQLiteDatabase) {
+ database.execSQL("""
+ UPDATE Students SET
+ scrapper_base_url = 'https://vulcan.net.pl',
+ login_type = 'ADFSLightScoped',
+ symbol = 'rzeszowprojekt'
+ WHERE scrapper_base_url = 'https://resman.pl'
+ """.trimIndent())
+ }
+
+ private fun removeTomaszowMazowieckiStudents(database: SupportSQLiteDatabase) {
+ database.execSQL("DELETE FROM Students WHERE symbol = 'tomaszowmazowiecki'")
+ }
+}
diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/message/send/SendMessagePresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/message/send/SendMessagePresenter.kt
index 5ab8f8fc..e776e994 100644
--- a/app/src/main/java/io/github/wulkanowy/ui/modules/message/send/SendMessagePresenter.kt
+++ b/app/src/main/java/io/github/wulkanowy/ui/modules/message/send/SendMessagePresenter.kt
@@ -55,7 +55,7 @@ class SendMessagePresenter @Inject constructor(
view.showMessageBackupDialog()
}
reason?.let {
- setSubject("Usprawiedliwenie")
+ setSubject("Usprawiedliwienie")
setContent(it)
}
message?.let {
diff --git a/app/src/main/play/release-notes/pl-PL/default.txt b/app/src/main/play/release-notes/pl-PL/default.txt
index 7b2fda86..c4f4c6cf 100644
--- a/app/src/main/play/release-notes/pl-PL/default.txt
+++ b/app/src/main/play/release-notes/pl-PL/default.txt
@@ -1,9 +1,7 @@
-Wersja 1.8.1
+Wersja 1.8.2
-- naprawiliśmy liczenie średniej ucznia w ocenach klasy dla wykresu "Wszystkie"
-- zmieniliśmy kolejność przycisków akcji w podglądzie wiadomości
-- ulepszyliśmy oznaczenie nieodczytanych wiadomości
-- naprawiliśmy pokazywanie informacji o odczytanej wiadomości w wysłanych
-- dodaliśmy opcję ręcznego wybierania skrzynki pocztowej
+- naprawiliśmy logowanie dla użytkowników systemu Resman Rzeszów
+- dodaliśmy wsparcie dla nowej platformy z Tomaszowa Mazowieckiego
+- naprawiliśmy literówkę w tytule wiadomości z szablonem usprawiedliwienia
Pełna lista zmian: https://github.com/wulkanowy/wulkanowy/releases
diff --git a/app/src/main/res/values/api_hosts.xml b/app/src/main/res/values/api_hosts.xml
index 8413d68e..a2a08db6 100644
--- a/app/src/main/res/values/api_hosts.xml
+++ b/app/src/main/res/values/api_hosts.xml
@@ -6,8 +6,9 @@
- Gdańska Platforma Edukacyjna
- Lubelski Portal Oświatowy
- EduNet Miasta Tarnowa
- - ResMan Rzeszów
- Platforma Edukacyjna Koszalina
+ - Gmina-miasto Tomaszów Mazowiecki - System zarządzania oświatą
+ - ResMan Rzeszów
- Rawa Mazowiecka - Platforma vEdukacja
- Zduńska Wola - e-Urząd
- Sieradz - Portal oświatowy
@@ -27,7 +28,6 @@
- https://edu.gdansk.pl
- https://edu.lublin.eu
- https://umt.tarnow.pl
- - https://resman.pl
- https://eduportal.koszalin.pl
- https://vulcan.net.pl/?login
- https://vulcan.net.pl/?login
@@ -40,6 +40,8 @@
- https://vulcan.net.pl/?login
- https://vulcan.net.pl/?login
- https://vulcan.net.pl/?login
+ - https://vulcan.net.pl/?login
+ - https://vulcan.net.pl/?login
- http://fakelog.cf/?email
@@ -48,8 +50,9 @@
- gdansk
- lublin
- tarnow
- - rzeszow
- koszalin
+ - tomaszowmazowieckiprojekt
+ - rzeszowprojekt
- rawamazowiecka
- zdunskawola
- sieradz
diff --git a/app/src/main/res/values/api_symbols.xml b/app/src/main/res/values/api_symbols.xml
index 6f9b1739..4b61db48 100644
--- a/app/src/main/res/values/api_symbols.xml
+++ b/app/src/main/res/values/api_symbols.xml
@@ -4,13 +4,11 @@
- Andrychów
- Augustów
- Baranów Sandomierski
- - Bartoszyce
- Będzin
- Bełchatów
- Bełżyce
- Biała Podlaska
- Biała Rawska
- - Białogard
- Biały Bór
- Białystok
- Biecz
@@ -18,11 +16,9 @@
- Bielsko-Biała
- Bierawa
- Bierutów
- - Biskupice
- Blachownia
- Błaszki
- Błonie
- - Bochnia
- Bogatynia
- Boguchwała
- Boguty-Pianki
@@ -45,6 +41,7 @@
- Chełmża
- Chocianów
- Chodzież
+ - Chojnice
- Chojnów
- Chorzów
- Ciechanów
@@ -58,7 +55,9 @@
- Dąbrowa Górnicza
- Dąbrowa Tarnowska
- Dębica
+ - Dębno
- Dobrzeń Wielki
+ - Dobrzeń Wielki 2
- Dobrzyń Nad Wisłą
- Dolnośląskie
- Duszniki-Zdrój
@@ -76,6 +75,9 @@
- Głogów Małopolski
- Głowno
- Głubczyce
+ - Głubczyce 2
+ - Głuchołazy
+ - Gmina Abramów
- Gmina Adamówka
- Gmina Aleksandrów Kujawski
- Gmina Aleksandrów Łódzki
@@ -87,14 +89,17 @@
- Gmina Bądkowo
- Gmina Bałtów
- Gmina Baranów
- - Gmina Barciany
- Gmina Barcin
+ - Gmina Barczewo
- Gmina Baruchowo
+ - Gmina Batorz
- Gmina Będzino
- Gmina Bełchatów
+ - Gmina Besko
- Gmina Białaczów
- Gmina Białe Błota
- - Gmina Bielsk Podlaski
+ - Gmina Białopole
+ - Gmina Bielsk
- Gmina Bircza
- Gmina Błażowa
- Gmina Błędów
@@ -104,7 +109,6 @@
- Gmina Bobrowniki
- Gmina Bodzentyn
- Gmina Bogoria
- - Gmina Bojanów
- Gmina Bojanowo
- Gmina Bojszowy
- Gmina Bolesławiec
@@ -113,10 +117,14 @@
- Gmina Borów
- Gmina Borowa
- Gmina Borzęcin
+ - Gmina Borzytuchom
+ - Gmina Bralin
- Gmina Branice
- Gmina Braniewo
+ - Gmina Brańszczyk
- Gmina Brąszewice
- Gmina Brenna
+ - Gmina Brok
- Gmina Brzeg Dolny
- Gmina Brzeziny
- Gmina Brzeźnio
@@ -125,13 +133,14 @@
- Gmina Brzuze
- Gmina Brzyska
- Gmina Buczek
- - Gmina Buczkowice
- Gmina Budzów
- Gmina Budzyń
+ - Gmina Bukowina Tatrzańska
- Gmina Bukowsko
- Gmina Byczyna
- Gmina Bystra-Sidzina
- - Gmina Bytoń
+ - Gmina Cegłów
+ - Gmina Cekcyn
- Gmina Ceków-Kolonia
- Gmina Celestynów
- Gmina Cewice
@@ -139,16 +148,25 @@
- Gmina Chełm
- Gmina Chełmiec
- Gmina Chełmno
+ - Gmina Chłopice
- Gmina Chmielnik
+ - Gmina Chociwel
- Gmina Chocz
- Gmina Chodel
+ - Gmina Chodów
- Gmina Chojnice
- Gmina Chojnów
+ - Gmina Chotcza
+ - Gmina Chrząstowice
- Gmina Chrzypsko Wielkie
- Gmina Chybie
- Gmina Ciasna
+ - Gmina Ciechanów
- Gmina Ciechocin
+ - Gmina Cielądz
+ - Gmina Cieszanów
- Gmina Ciężkowice
+ - Gmina Cisek
- Gmina Cisna
- Gmina Cmolas
- Gmina Cyców
@@ -156,19 +174,26 @@
- Gmina Czarna
- Gmina Czarnków
- Gmina Czarny Dunajec
+ - Gmina Czastary
- Gmina Czechowice-Dziedzice
- Gmina Czernichów
- Gmina Czerniejewo
+ - Gmina Czerniewice
+ - Gmina Czernikowo
- Gmina Czerwionka-Leszczyny
- - Gmina Czerwonka
+ - Gmina Czerwonak
- Gmina Człuchów
- Gmina Czosnów
+ - Gmina Dąbrowa Zielona
+ - Gmina Dąbrowice
- Gmina Damasławek
- Gmina Damnica
- Gmina Darłowo
- Gmina Dębe Wielkie
- Gmina Dębica
- Gmina Dębno
+ - Gmina Dębowa Kłoda
+ - Gmina Debrzno
- Gmina Dłutów
- Gmina Dobczyce
- Gmina Dobra
@@ -176,19 +201,31 @@
- Gmina Dobrodzień
- Gmina Dobroń
- Gmina Dobrzany
+ - Gmina Dobrzyca
- Gmina Dobrzyniewo Duże
+ - Gmina Dolsk
- Gmina Dominowo
- Gmina Dorohusk
+ - Gmina Doruchów
+ - Gmina Dragacz
+ - Gmina Drawsko
+ - Gmina Drużbice
- Gmina Drzewica
- Gmina Dubiecko
+ - Gmina Dubienka
- Gmina Dukla
- Gmina Dwikozy
+ - Gmina Dydnia
- Gmina Dynów
- Gmina Dziadowa Kłoda
- Gmina Działoszyce
+ - Gmina Dziemiany
- Gmina Dzierżoniów
+ - Gmina Dzwola
- Gmina Elbląg
- - Gmina Fajsławice
+ - Gmina Ełk
+ - Gmina Fredropol
+ - Gmina Garbatka-Letnisko
- Gmina Garbów
- Gmina Garwolin
- Gmina Gąsawa
@@ -198,29 +235,37 @@
- Gmina Gdów
- Gmina Gielniów
- Gmina Gierałtowice
- - Gmina Glinojeck
- Gmina Głogów
+ - Gmina Głogówek
- Gmina Głuchów
+ - Gmina Głusk
- Gmina Głuszyca
- Gmina Gniew
+ - Gmina Gniewino
- Gmina Gniewoszów
- Gmina Gniezno
- Gmina Goczałkowice-Zdrój
- Gmina Godkowo
- Gmina Godów
- Gmina Godziesze Wielkie
+ - Gmina Godziszów
- Gmina Gołańcz
+ - Gmina Gołcza
- Gmina Goleszów
- Gmina Golina
- Gmina Golub-Dobrzyń
+ - Gmina Gołuchów
+ - Gmina Gomunice
- Gmina Goraj
- Gmina Gorlice
- Gmina Górno
+ - Gmina Górzyca
- Gmina Gościeradów
- Gmina Gostyń
- Gmina Gostynin
- Gmina Goszczyn
- Gmina Gózd
+ - Gmina Grabica
- Gmina Grabów
- Gmina Grabowiec
- Gmina Grabów Nad Pilicą
@@ -239,45 +284,52 @@
- Gmina Grudziądz
- Gmina Gruta
- Gmina Grybów
+ - Gmina Gryfice
+ - Gmina Grzmiąca
- Gmina Haczów
- Gmina Halinów
- Gmina Hańsk
- Gmina Harasiuki
- Gmina Hażlach
- Gmina Herby
+ - Gmina Horodło
- Gmina Hrubieszów
- Gmina Huszlew
- Gmina Hyżne
- Gmina Imielno
- Gmina Inowrocław
+ - Gmina Irządze
- Gmina Istebna
+ - Gmina Iwanowice
- Gmina Iwierzyce
- Gmina Iwonicz-Zdrój
- Gmina Izabelin
- Gmina Izbica
- - Gmina Jadów
+ - Gmina Izbicko
+ - Gmina Jabłoń
- Gmina Jaktorów
+ - Gmina Jakubów
- Gmina Janikowo
+ - Gmina Janów
- Gmina Janowiec
- Gmina Janów Podlaski
- - Gmina Jaraczewo
+ - Gmina Jarczów
- Gmina Jarocin
- Gmina Jasienica Rosielna
+ - Gmina Jaśliska
- Gmina Jasło
- Gmina Jastków
- Gmina Jastrowie
- Gmina Jastrząb
- Gmina Jedlicze
- - Gmina Jedlińsk
- - Gmina Jedlnia-Letnisko
- Gmina Jejkowice
- Gmina Jemielnica
- - Gmina Jemielno
- Gmina Jerzmanowa
- Gmina Jeżewo
- Gmina Jeziora Wielkie
- Gmina Jeziorzany
- Gmina Jeżowe
+ - Gmina Joniec
- Gmina Jordanów
- Gmina Józefów
- Gmina Józefów Nad Wisłą
@@ -285,14 +337,18 @@
- Gmina Kąkolewnica
- Gmina Kamień
- Gmina Kamienica
- - Gmina Kamieniec
+ - Gmina Kamiennik
- Gmina Kamionka
- Gmina Karczmiska
- Gmina Kargowa
+ - Gmina Karlino
+ - Gmina Karniewo
- Gmina Kawęczyn
- Gmina Kazimierz Biskupi
- Gmina Kępice
+ - Gmina Kęsowo
- Gmina Kiełczygłów
+ - Gmina Kietrz
- Gmina Kikół
- Gmina Kiszkowo
- Gmina Kleczew
@@ -307,22 +363,30 @@
- Gmina Klucze
- Gmina Kluczewsko
- Gmina Kobiele Wielkie
+ - Gmina Kobylanka
- Gmina Kochanowice
- Gmina Kock
- Gmina Kodrąb
- Gmina Kołaczyce
- Gmina Kołbaskowo
+ - Gmina Kołbiel
- Gmina Kołczygłowy
+ - Gmina Kołobrzeg
- Gmina Koluszki
- Gmina Komańcza
+ - Gmina Komarówka Podlaska
- Gmina Komorniki
- Gmina Komprachcice
- Gmina Konarzyny
- Gmina Kondratowice
+ - Gmina Koneck
- Gmina Koniusza
- Gmina Konopiska
- Gmina Końskowola
+ - Gmina Konstantynów
- Gmina Koprzywnica
+ - Gmina Korfantów
+ - Gmina Kórnik
- Gmina Korsze
- Gmina Korycin
- Gmina Korzenna
@@ -332,10 +396,14 @@
- Gmina Kościerzyna
- Gmina Kosów Lacki
- Gmina Kostrzyn
- - Gmina Koszyce
+ - Gmina Koszęcin
- Gmina Kotla
- Gmina Kotuń
+ - Gmina Kowiesy
+ - Gmina Koziegłowy
- Gmina Kozłów
+ - Gmina Kramsk
+ - Gmina Kraśniczyn
- Gmina Kraśnik
- Gmina Krasnobród
- Gmina Krasnystaw
@@ -345,12 +413,16 @@
- Gmina Krośnice
- Gmina Krupski Młyn
- Gmina Kruszwica
+ - Gmina Krynice
- Gmina Krynki
- Gmina Krzanowice
- Gmina Krzemieniewo
+ - Gmina Krzeszów
- Gmina Krzymów
+ - Gmina Krzywcza
- Gmina Krzywiń
- Gmina Krzyżanowice
+ - Gmina Ksawerów
- Gmina Książ Wielki
- Gmina Kunice
- Gmina Kunów
@@ -360,15 +432,19 @@
- Gmina Kwilcz
- Gmina Łabowa
- Gmina Łabunie
+ - Gmina Łączna
+ - Gmina Lądek
- Gmina Łambinowice
- Gmina Lanckorona
+ - Gmina Łańcut
+ - Gmina Łapanów
- Gmina Łapsze Niżne
- Gmina Łasin
- Gmina Łaskarzew
- Gmina Lasowice Wielkie
- Gmina Łaszczów
- - Gmina Laszki
- Gmina Latowicz
+ - Gmina Łaziska
- Gmina Łazy
- Gmina Łęczyca
- Gmina Łęczyce
@@ -378,11 +454,14 @@
- Gmina Lelów
- Gmina Leśna
- Gmina Leśna Podlaska
+ - Gmina Leśniowice
- Gmina Lesznowola
- Gmina Leżajsk
- Gmina Lichnowy
- Gmina Limanowa
- Gmina Linia
+ - Gmina Liniewo
+ - Gmina Lipiany
- Gmina Lipinki
- Gmina Lipnik
- Gmina Lipowa
@@ -390,43 +469,51 @@
- Gmina Liszki
- Gmina Liw
- Gmina Łobez
+ - Gmina Łochów
- Gmina Łodygowice
- Gmina Łomazy
+ - Gmina Łomianki
+ - Gmina Łoniów
- Gmina Łopiennik Górny
- Gmina Łopuszno
+ - Gmina Łosice
- Gmina Lubań
- Gmina Lubartów
- Gmina Lubasz
+ - Gmina Lubawka
- Gmina Lubenia
- Gmina Łubianka
- Gmina Lubicz
+ - Gmina Lubień
- Gmina Lubiewo
- Gmina Lubin
- Gmina Łubniany
- Gmina Lubochnia
- - Gmina Lubomia
- Gmina Luboń
+ - Gmina Lubsza
+ - Gmina Lubycza Królewska
- Gmina Łuków
- Gmina Łukowica
- Gmina Lutowiska
+ - Gmina Lututów
- Gmina Luzino
- Gmina Łużna
- Gmina Łysomice
+ - Gmina Maciejowice
- Gmina Magnuszew
+ - Gmina Majdan Królewski
- Gmina Maków Podhalański
- - Gmina Mała Wieś
- Gmina Malbork
- Gmina Małdyty
- Gmina Małkinia Górna
- Gmina Marcinowice
- Gmina Margonin
- Gmina Marianowo
- - Gmina Markusy
- - Gmina Masłów
+ - Gmina Markuszów
+ - Gmina Męcinka
- Gmina Medyka
- Gmina Mełgiew
- Gmina Michałów
- - Gmina Michałowo
- Gmina Miedziana Góra
- Gmina Miedźna
- Gmina Miedźno
@@ -435,7 +522,10 @@
- Gmina Międzyrzec Podlaski
- Gmina Międzyzdroje
- Gmina Miejsce Piastowe
+ - Gmina Miękinia
- Gmina Mielec
+ - Gmina Mielno
+ - Gmina Mieszkowice
- Gmina Milanów
- Gmina Milejów
- Gmina Milicz
@@ -444,21 +534,26 @@
- Gmina Miłosław
- Gmina Milówka
- Gmina Mińsk Mazowiecki
+ - Gmina Mirów
- Gmina Mirsk
- Gmina Młynary
+ - Gmina Modliborzyce
- Gmina Mogielnica
- Gmina Mogilany
+ - Gmina Mogilno
+ - Gmina Morawica
- Gmina Mordy
- Gmina Moryń
- Gmina Mrocza
- Gmina Mrozy
+ - Gmina Mściwojów
+ - Gmina Mstów
- Gmina Mszana
- Gmina Mszana Dolna
- Gmina Murów
- Gmina Mycielin
- - Gmina Mysłakowice
+ - Gmina Mykanów
- Gmina Myślibórz
- - Gmina Nadarzyn
- Gmina Namysłów
- Gmina Nasielsk
- Gmina Nawojowa
@@ -469,23 +564,25 @@
- Gmina Niedrzwica Duża
- Gmina Niedźwiada
- Gmina Niedźwiedź
- - Gmina Niegosławice
- - Gmina Niwiska
+ - Gmina Nowa Karczma
- Gmina Nowa Ruda
- Gmina Nowa Wieś Lęborska
+ - Gmina Nowe
- Gmina Nowe Miasto
- Gmina Nowe Miasto Nad Wartą
- - Gmina Nowogród Bobrzański
+ - Gmina Nowogród
- Gmina Nowosolna
- Gmina Nowy Kawęczyn
+ - Gmina Nowy Korczyn
- Gmina Nowy Staw
- Gmina Nowy Targ
- Gmina Nowy Tomyśl
+ - Gmina Nozdrzec
- Gmina Nur
- Gmina Obrazów
- Gmina Ochotnica Dolna
- Gmina Ogrodzieniec
- - Gmina Olecko
+ - Gmina Olszanica
- Gmina Olsztynek
- Gmina Olszyna
- Gmina Opatowiec
@@ -495,11 +592,15 @@
- Gmina Osiek Jasielski
- Gmina Osiek Mały
- Gmina Osielsko
+ - Gmina Osina
+ - Gmina Osjaków
+ - Gmina Ostroróg
- Gmina Ostrów
- Gmina Ostrówek
- Gmina Ostrów Lubelski
- Gmina Ostrów Mazowiecka
- Gmina Ostrów Wielkopolski
+ - Gmina Otmuchów
- Gmina Otyń
- Gmina Ożarów
- Gmina Ożarowice
@@ -507,27 +608,32 @@
- Gmina Ozorków
- Gmina Pabianice
- Gmina Pacanów
+ - Gmina Pacyna
- Gmina Paczków
- Gmina Padew Narodowa
- - Gmina Pajęczno
- Gmina Pakosław
- Gmina Pakosławice
- Gmina Pałecznica
- Gmina Panki
- Gmina Parchowo
- Gmina Parczew
- - Gmina Pawłosiów
+ - Gmina Pasłęk
+ - Gmina Pątnów
- Gmina Pawłowice
- Gmina Pawłowiczki
+ - Gmina Pawonków
- Gmina Pęcław
- Gmina Pelplin
+ - Gmina Pępowo
- Gmina Piaski
- Gmina Piątnica
- - Gmina Piecki
- Gmina Piekoszów
+ - Gmina Pieniężno
- Gmina Pilchowice
+ - Gmina Pińczów
- Gmina Pionki
- - Gmina Piotrków Trybunalski
+ - Gmina Płaska
+ - Gmina Platerówka
- Gmina Pleśna
- Gmina Pleszew
- Gmina Płońsk
@@ -535,6 +641,7 @@
- Gmina Poczesna
- Gmina Podedwórze
- Gmina Podegrodzie
+ - Gmina Podgórzyn
- Gmina Pokój
- Gmina Połajewo
- Gmina Połaniec
@@ -543,16 +650,18 @@
- Gmina Police
- Gmina Polkowice
- Gmina Pomiechówek
+ - Gmina Poniatowa
- Gmina Popielów
- Gmina Popów
- - Gmina Poraj
- Gmina Potęgowo
+ - Gmina Potok Wielki
- Gmina Praszka
- - Gmina Prażmów
- Gmina Prochowice
- Gmina Promna
- Gmina Prószków
+ - Gmina Prusice
- Gmina Pruszcz Gdański
+ - Gmina Przechlewo
- Gmina Przecław
- Gmina Przedecz
- Gmina Przemęt
@@ -562,7 +671,9 @@
- Gmina Przodkowo
- Gmina Przykona
- Gmina Przyłęk
+ - Gmina Przyrów
- Gmina Przystajń
+ - Gmina Przytoczna
- Gmina Puchaczów
- Gmina Puck
- Gmina Puławy
@@ -570,10 +681,10 @@
- Gmina Puszcza Mariańska
- Gmina Pysznica
- Gmina Pyzdry
+ - Gmina Raba Wyżna
- Gmina Rachanie
- Gmina Raciechowice
- - Gmina Racławice
- - Gmina Radecznica
+ - Gmina Radgoszcz
- Gmina Radków
- Gmina Radłów
- Gmina Radomin
@@ -581,16 +692,29 @@
- Gmina Radomyśl Nad Sanem
- Gmina Radoszyce
- Gmina Radwanice
+ - Gmina Radymno
+ - Gmina Radziejów
- Gmina Radziłów
+ - Gmina Rajgród
+ - Gmina Raków
+ - Gmina Rakszawa
- Gmina Rawa Mazowiecka
+ - Gmina Regnów
- Gmina Reńska Wieś
+ - Gmina Rogóźno
+ - Gmina Rokitno
+ - Gmina Ropa
- Gmina Rossosz
- Gmina Rozprza
- Gmina Ruciane-Nida
- Gmina Ruda-Huta
- Gmina Rudna
- Gmina Rudniki
+ - Gmina Rudnik Nad Sanem
+ - Gmina Rudziniec
- Gmina Rusiec
+ - Gmina Rusinów
+ - Gmina Rybczewice
- Gmina Rychliki
- Gmina Rychtal
- Gmina Ryczywół
@@ -598,32 +722,39 @@
- Gmina Rypin
- Gmina Rytro
- Gmina Rytwiany
- - Gmina Rząśnia
- Gmina Rzeczyca
- Gmina Rzepiennik Strzyżewski
- Gmina Rzepin
+ - Gmina Rzezawa
- Gmina Rzgów
- Gmina Sadki
- Gmina Sadowne
- Gmina Samborzec
- Gmina Sanok
+ - Gmina Sawin
- Gmina Ścinawa
- Gmina Sędziejowice
+ - Gmina Sejny
+ - Gmina Sękowa
- Gmina Sępopol
- Gmina Serokomla
- Gmina Sianów
- Gmina Sicienko
- Gmina Sieciechów
- Gmina Siedlce
+ - Gmina Siedliszcze
- Gmina Siemiatycze
+ - Gmina Siemień
- Gmina Siemyśl
- Gmina Siennica
- Gmina Siennica Różana
- Gmina Sienno
- Gmina Siepraw
- Gmina Sieradz
+ - Gmina Sieraków
- Gmina Sierakowice
- Gmina Siewierz
+ - Gmina Sitkówka-Nowiny
- Gmina Sitno
- Gmina Skarżysko Kościelne
- Gmina Skępe
@@ -631,16 +762,22 @@
- Gmina Skoczów
- Gmina Skoki
- Gmina Skołyszyn
+ - Gmina Skrwilno
- Gmina Skrzyszów
- Gmina Skulsk
+ - Gmina Skwierzyna
- Gmina Sława
+ - Gmina Śliwice
- Gmina Słopnice
+ - Gmina Słubice
- Gmina Słupca
- Gmina Słupia
+ - Gmina Słupia (Konecka)
+ - Gmina Śmigiel
- Gmina Sobienie-Jeziory
+ - Gmina Sobolew
- Gmina Sobótka
- Gmina Sokółka
- - Gmina Sokoły
- Gmina Solina
- Gmina Sośnicowice
- Gmina Sośnie
@@ -655,11 +792,16 @@
- Gmina Stare Miasto
- Gmina Stare Pole
- Gmina Starogard Gdański
+ - Gmina Stary Brus
+ - Gmina Stary Dzierzgoń
+ - Gmina Stary Targ
- Gmina Stawiszyn
+ - Gmina Stepnica
- Gmina Stoczek Łukowski
- Gmina Stopnica
- Gmina Strawczyn
- Gmina Stryków
+ - Gmina Stryszawa
- Gmina Stryszów
- Gmina Strzałkowo
- Gmina Strzelce Opolskie
@@ -668,38 +810,43 @@
- Gmina Strzyżewice
- Gmina Stupsk
- Gmina Subkowy
+ - Gmina Suchań
- Gmina Suchedniów
- Gmina Suchożebry
- Gmina Suchy Las
- Gmina Sulechów
- Gmina Sulęcin
+ - Gmina Sulejów
- Gmina Sulików
- Gmina Sulmierzyce
- Gmina Sułów
- Gmina Susiec
- - Gmina Świerklaniec
+ - Gmina Świercze
+ - Gmina Świerczów
+ - Gmina Świerklany
- Gmina Świerzawa
- Gmina Świeszyno
- Gmina Świlcza
- Gmina Szadek
- Gmina Szaflary
- Gmina Szastarka
+ - Gmina Szczawin Kościelny
- Gmina Szczebrzeszyn
- Gmina Szczekociny
- Gmina Szczerców
- - Gmina Szczutowo
- Gmina Szczytna
- Gmina Szczytniki
- - Gmina Szemud
+ - Gmina Szczytno
- Gmina Szerzyny
- Gmina Szlichtyngowa
+ - Gmina Szreńsk
+ - Gmina Szudziałowo
- Gmina Szydłów
- Gmina Tarłów
- Gmina Tarnów
- Gmina Tarnowiec
- Gmina Tarnów Opolski
- Gmina Teresin
- - Gmina Terespol
- Gmina Tereszpol
- Gmina Tłuchowo
- Gmina Tłuszcz
@@ -709,12 +856,15 @@
- Gmina Toszek
- Gmina Trąbki Wielkie
- Gmina Trzebiatów
+ - Gmina Trzebielino
- Gmina Trzebinia
- - Gmina Trzeszczany
- Gmina Trzyciąż
+ - Gmina Trzydnik Duży
- Gmina Tuchów
+ - Gmina Tułowice
- Gmina Turośń Kościelna
- Gmina Tuszów Narodowy
+ - Gmina Tworóg
- Gmina Tyczyn
- Gmina Tymbark
- Gmina Tyrawa Wołoska
@@ -723,15 +873,21 @@
- Gmina Ulan-Majorat
- Gmina Ulanów
- Gmina Ułęż
+ - Gmina Ulhówek
- Gmina Urszulin
- Gmina Urzędów
+ - Gmina Uście Gorlickie
- Gmina Uścimów
- Gmina Wąchock
+ - Gmina Wądroże Wielkie
- Gmina Wągrowiec
+ - Gmina Walce
- Gmina Wąpielsk
- Gmina Wasilków
+ - Gmina Wąsosz
- Gmina Wąwolnica
- Gmina Wejherowo
+ - Gmina Werbkowice
- Gmina Wiązów
- Gmina Wiązowna
- Gmina Wicko
@@ -739,16 +895,21 @@
- Gmina Wielbark
- Gmina Wieleń
- Gmina Wielgie
+ - Gmina Wielgomłyny
- Gmina Wieliszew
- Gmina Wielka Nieszawka
- Gmina Wieniawa
- Gmina Wieprz
- Gmina Wieruszów
+ - Gmina Wierzbinek
- Gmina Wierzbno
+ - Gmina Wierzchlas
- Gmina Wierzchosławice
- Gmina Wietrzychowice
- Gmina Wijewo
+ - Gmina Wilczyce
- Gmina Wilczyn
+ - Gmina Wilkołaz
- Gmina Wilków
- Gmina Wilkowice
- Gmina Winnica
@@ -759,12 +920,14 @@
- Gmina Witkowo
- Gmina Władysławów
- Gmina Wleń
+ - Gmina Włocławek
- Gmina Włodawa
- Gmina Włoszczowa
- Gmina Wodzierady
- Gmina Wodzisław
- Gmina Wojcieszków
- Gmina Wojnicz
+ - Gmina Wojsławice
- Gmina Wola Krzysztoporska
- Gmina Wolanów
- Gmina Wolbrom
@@ -775,15 +938,18 @@
- Gmina Wręczyca Wielka
- Gmina Wronki
- Gmina Wyrzysk
- - Gmina Zabierzów
+ - Gmina Wysokie
- Gmina Żabno
- Gmina Żagań
- - Gmina Zagórz
+ - Gmina Zagórów
- Gmina Zaklików
- Gmina Zakroczym
- Gmina Zakrzówek
+ - Gmina Zalesie
- Gmina Zaleszany
+ - Gmina Załuski
- Gmina Zamość
+ - Gmina Żarnów
- Gmina Żarnowiec
- Gmina Żarów
- Gmina Zarszyn
@@ -795,20 +961,26 @@
- Gmina Zbójno
- Gmina Zbrosławice
- Gmina Zduńska Wola
- - Gmina Zduny
- Gmina Zdzieszowice
+ - Gmina Zębowice
- Gmina Zebrzydowice
+ - Gmina Żegocina
- Gmina Żelazków
+ - Gmina Zembrzyce
- Gmina Zgierz
- Gmina Zgorzelec
- Gmina Ziębice
- Gmina Zielonki
- Gmina Zławieś Wielka
+ - Gmina Złota
+ - Gmina Złotniki Kujawskie
- Gmina Żmudź
- Gmina Żnin
- Gmina Żółkiewka
- Gmina Żołynia
- Gmina Żukowice
+ - Gmina Żurawica
+ - Gmina Żyraków
- Gmina Żyrzyn
- Gmina Żytno
- Gniezno
@@ -817,19 +989,19 @@
- Góra
- Góra Kalwaria
- Gorlice
+ - Górzno
- Gorzów Śląski
- Gorzów Wielkopolski
- Gostynin
- Grajewo
- Grodzisk Mazowiecki
- - Gronowo Elbląskie
- Grudziądz
+ - Grybów
- Gryfino
- Gryfów Śląski
- Hel
- Hrubieszów
- Inowrocław
- - Iwanowice
- Izbica Kujawska
- Jabłonowo Pomorskie
- Janowiec Wielkopolski
@@ -839,7 +1011,6 @@
- Jasło
- Jastrzębie-Zdrój
- Jawor
- - Jaworzno
- Jedlina-Zdrój
- Jelcz-Laskowice
- Jelenia Góra
@@ -860,9 +1031,9 @@
- Kępno
- Kętrzyn
- Kielce
- - Kiełczygłów
- Kłodawa
- Kłodzko
+ - Kluczbork
- Knurów
- Kobyłka
- Koło
@@ -892,11 +1063,13 @@
- Krzeszowice
- Krzyż Wielkopolski
- Książ Wielkopolski
- - Kudowa-Zdrój
- Kujawsko-Pomorskie
+ - Kutno
- Kuźnia Raciborska
+ - Kwidzyn
- Łabiszyn
- Lądek-Zdrój
+ - Łańcut
- Łapy
- Łask
- Łaskarzew
@@ -908,10 +1081,10 @@
- Legnica
- Leszno
- Lewin Brzeski
+ - Lewin Brzeski 2
- Leżajsk
- Limanowa
- Lipno
- - Lipsko
- Łódź
- Łódzkie
- Łowicz
@@ -928,11 +1101,8 @@
- Lwówek Śląski
- Malbork
- Małopolskie
- - Marciszów
- Marki
- - Masłowice
- Mazowieckie
- - Miastko
- Michałowice
- Miechów
- Międzyrzec Podlaski
@@ -940,6 +1110,7 @@
- Mielec
- Milanówek
- Mińsk Mazowiecki
+ - Mniszków
- Mosina
- Mrągowo
- Mrągowski
@@ -949,18 +1120,17 @@
- Mysłowice
- Myszków
- Nakło Nad Notecią
- - Nasielsk
- Niemodlin
- Niepołomice
- Nisko
- Nowa Dęba
- Nowa Sarzyna
+ - Nowa Sól
- Nowe Miasteczko
- Nowe Skalmierzyce
- Nowogard
- Nowogród Bobrzański
- Nowogrodziec
- - Nowosolna
- Nowy Dwór Mazowiecki
- Nowy Sącz
- Nowy Targ
@@ -974,6 +1144,8 @@
- Opoczno
- Opole
- Opole Lubelskie
+ - Opolskie
+ - Orzesze
- Osieczna
- Osiecznica
- Ostróda
@@ -991,13 +1163,16 @@
- Piekary Śląskie
- Pieńsk
- Piła
+ - Pilzno
- Piotrków Trybunalski
- Pisz
- Płock
- Płońsk
- Pniewy
+ - Pobiedziska
- Podkarpackie
- Podkowa Leśna
+ - Podlaskie
- Połczyn-Zdrój
- Pomorskie
- Poniec
@@ -1006,7 +1181,7 @@
- Powiat augustowski
- Powiat będziński
- Powiat bełchatowski
- - Powiat białobrzeski
+ - Powiat białostocki
- Powiat bialski
- Powiat bielski
- Powiat bieszczadzki
@@ -1032,6 +1207,7 @@
- Powiat człuchowski
- Powiat dąbrowski
- Powiat dębicki
+ - Powiat drawski
- Powiat działdowski
- Powiat dzierżoniowski
- Powiat elbląski
@@ -1046,10 +1222,11 @@
- Powiat goleniowski
- Powiat golubsko-dobrzyński
- Powiat gorlicki
+ - Powiat górowski
- Powiat gorzowski
- Powiat gostyński
+ - Powiat grajewski
- Powiat grójecki
- - Powiat grudziądzki
- Powiat gryficki
- Powiat gryfiński
- Powiat hajnowski
@@ -1064,6 +1241,7 @@
- Powiat jędrzejowski
- Powiat jeleniogórski
- Powiat kaliski
+ - Powiat kamiennogórski
- Powiat kamieński
- Powiat kartuski
- Powiat kazimierski
@@ -1088,6 +1266,7 @@
- Powiat krośnieński
- Powiat krotoszyński
- Powiat kutnowski
+ - Powiat łańcucki
- Powiat łaski
- Powiat lęborski
- Powiat łęczycki
@@ -1102,6 +1281,7 @@
- Powiat lipski
- Powiat łobeski
- Powiat łódzki wschodni
+ - Powiat łosicki
- Powiat łowicki
- Powiat lubaczowski
- Powiat lubański
@@ -1122,9 +1302,11 @@
- Powiat myślenicki
- Powiat myszkowski
- Powiat nakielski
+ - Powiat namysłowski
- Powiat nidzicki
- Powiat niżański
- Powiat nowodworski
+ - Powiat nowomiejski
- Powiat nowosądecki
- Powiat nowosolski
- Powiat nowotarski
@@ -1160,7 +1342,6 @@
- Powiat proszowicki
- Powiat prudnicki
- Powiat pruszkowski
- - Powiat przasnyski
- Powiat przemyski
- Powiat przeworski
- Powiat przysuski
@@ -1183,6 +1364,7 @@
- Powiat rzeszowski
- Powiat sandomierski
- Powiat sanocki
+ - Powiat sejneński
- Powiat sępoleński
- Powiat siedlecki
- Powiat siemiatycki
@@ -1210,6 +1392,7 @@
- Powiat świdnicki
- Powiat świdwiński
- Powiat świebodziński
+ - Powiat świecki
- Powiat szamotulski
- Powiat szczycieński
- Powiat sztumski
@@ -1228,6 +1411,7 @@
- Powiat wągrowiecki
- Powiat wałecki
- Powiat warszawski zachodni
+ - Powiat węgorzewski
- Powiat węgrowski
- Powiat wejherowski
- Powiat wielicki
@@ -1247,7 +1431,6 @@
- Powiat wyszkowski
- Powiat ząbkowicki
- Powiat żagański
- - Powiat zambrowski
- Powiat zamojski
- Powiat żarski
- Powiat zawierciański
@@ -1258,34 +1441,33 @@
- Powiat złotoryjski
- Powiat złotowski
- Powiat żniński
- - Powiat żuromiński
- Powiat żyrardowski
- Powiat żywiecki
- Poznań
- - Prostki
- Proszowice
- Prudnik
+ - Pruszcz Gdański
- Pruszków
- Przasnysz
- Przemyśl
- Przeworsk
- Przysucha
- Pszczyna
- - Pszów
- Puck
- Puławy
+ - Pułtusk
+ - Puszczykowo
- Pyskowice
- Rabka-Zdrój
- Raciąż
- Racibórz
- - Raciechowice
- Radom
- Radomsko
+ - Radomyśl Wielki
- Radymno
- Radziejów
- Radzionków
- Radzyń Podlaski
- - Raków
- Rawa Mazowiecka
- Rawicz
- Reda
@@ -1299,6 +1481,7 @@
- Rymanów
- Rypin
- Rzeszów
+ - Rzeszów projekt
- Sandomierz
- Sanok
- Sędziszów Małopolski
@@ -1306,7 +1489,6 @@
- Siedlce
- Siemianowice Śląskie
- Siemiatycze
- - Sieniawa
- Sieradz
- Skarżysko-Kamienna
- Skawina
@@ -1325,17 +1507,15 @@
- Środa Śląska
- Środa Wielkopolska
- Starachowice
+ - Stargard
- Starogard Gdański
- Stary Sącz
- Staszów
- Stronie Śląskie
- - Strzegom
- Strzyżów
- - Suchy Las
- Sulejówek
- Sułkowice
- Sulmierzyce
- - Suwalski
- Swarzędz
- Świdnica
- Świdnik
@@ -1358,8 +1538,10 @@
- Terespol
- Tomaszów Lubelski
- Tomaszów Mazowiecki
+ - Tomaszów Mazowiecki projekt
- Toruń
- Trzcianka
+ - Trzcińsko-Zdrój
- Trzebnica
- Trzemeszno
- Tuliszków
@@ -1372,7 +1554,7 @@
- Ustrzyki Dolne
- Wadowice
- Wągrowiec
- - Wałbrzych
+ - Wałcz
- Warmińsko-Mazurskie
- Warszawa
- Wąsosz
@@ -1381,7 +1563,7 @@
- Więcbork
- Wieliczka
- Wielkopolskie
- - Wizna
+ - Wieluń
- Władysławowo
- Włocławek
- Włodawa
@@ -1410,6 +1592,7 @@
- Zielona Góra
- Zielonka
- Złotoryja
+ - Złotów
- Żory
- Zwoleń
- Żyrardów
@@ -1418,13 +1601,11 @@
- andrychow
- augustow
- baranowsandomierski
- - bartoszyce
- bedzin
- belchatow
- belzyce
- bialapodlaska
- bialarawska
- - bialogard
- bialybor
- bialystok
- biecz
@@ -1432,11 +1613,9 @@
- bielskobiala
- bierawa
- bierutow
- - biskupice
- blachownia
- blaszki
- blonie
- - bochnia
- bogatynia
- boguchwala
- bogutypianki
@@ -1459,6 +1638,7 @@
- chelmza
- chocianow
- chodziez
+ - chojnice
- chojnow
- chorzow
- ciechanow
@@ -1472,7 +1652,9 @@
- dabrowagornicza
- dabrowatarnowska
- debica
+ - debno
- dobrzenwielki
+ - dobrzenwielki2
- dobrzynnadwisla
- dolnoslaskie
- dusznikizdroj
@@ -1490,6 +1672,9 @@
- glogowmalopolski
- glowno
- glubczyce
+ - glubczyce2
+ - glucholazy
+ - gminaabramow
- gminaadamowka
- gminaaleksandrowkujawski
- gminaaleksandrowlodzki
@@ -1501,14 +1686,17 @@
- gminabadkowo
- gminabaltow
- gminabaranow
- - gminabarciany
- gminabarcin
+ - gminabarczewo
- gminabaruchowo
+ - gminabatorz
- gminabedzino
- gminabelchatow
+ - gminabesko
- gminabialaczow
- gminabialeblota
- - gminabielskpodlaski
+ - gminabialopole
+ - gminabielsk
- gminabircza
- gminablazowa
- gminabledow
@@ -1518,7 +1706,6 @@
- gminabobrowniki
- gminabodzentyn
- gminabogoria
- - gminabojanow
- gminabojanowo
- gminabojszowy
- gminaboleslawiec
@@ -1527,10 +1714,14 @@
- gminaborow
- gminaborowa
- gminaborzecin
+ - gminaborzytuchom
+ - gminabralin
- gminabranice
- gminabraniewo
+ - gminabranszczyk
- gminabraszewice
- gminabrenna
+ - gminabrok
- gminabrzegdolny
- gminabrzeziny
- gminabrzeznio
@@ -1539,13 +1730,14 @@
- gminabrzuze
- gminabrzyska
- gminabuczek
- - gminabuczkowice
- gminabudzow
- gminabudzyn
+ - gminabukowinatatrzanska
- gminabukowsko
- gminabyczyna
- gminabystrasidzina
- - gminabyton
+ - gminaceglow
+ - gminacekcyn
- gminacekowkolonia
- gminacelestynow
- gminacewice
@@ -1553,16 +1745,25 @@
- gminachelm
- gminachelmiec
- gminachelmno
+ - gminachlopice
- gminachmielnik
+ - gminachociwel
- gminachocz
- gminachodel
+ - gminachodow
- gminachojnice
- gminachojnow
+ - gminachotcza
+ - gminachrzastowice
- gminachrzypskowielkie
- gminachybie
- gminaciasna
+ - gminaciechanow
- gminaciechocin
+ - gminacieladz
+ - gminacieszanow
- gminaciezkowice
+ - gminacisek
- gminacisna
- gminacmolas
- gminacycow
@@ -1570,19 +1771,26 @@
- gminaczarna
- gminaczarnkow
- gminaczarnydunajec
+ - gminaczastary
- gminaczechowicedziedzice
- gminaczernichow
- gminaczerniejewo
+ - gminaczerniewice
+ - gminaczernikowo
- gminaczerwionkaleszczyny
- - gminaczerwonka
+ - gminaczerwonak
- gminaczluchow
- gminaczosnow
+ - gminadabrowazielona
+ - gminadabrowice
- gminadamaslawek
- gminadamnica
- gminadarlowo
- gminadebewielkie
- gminadebica
- gminadebno
+ - gminadebowakloda
+ - gminadebrzno
- gminadlutow
- gminadobczyce
- gminadobra
@@ -1590,19 +1798,31 @@
- gminadobrodzien
- gminadobron
- gminadobrzany
+ - gminadobrzyca
- gminadobrzyniewoduze
+ - gminadolsk
- gminadominowo
- gminadorohusk
+ - gminadoruchow
+ - gminadragacz
+ - gminadrawsko
+ - gminadruzbice
- gminadrzewica
- gminadubiecko
+ - gminadubienka
- gminadukla
- gminadwikozy
+ - gminadydnia
- gminadynow
- gminadziadowakloda
- gminadzialoszyce
+ - gminadziemiany
- gminadzierzoniow
+ - gminadzwola
- gminaelblag
- - gminafajslawice
+ - gminaelk
+ - gminafredropol
+ - gminagarbatkaletnisko
- gminagarbow
- gminagarwolin
- gminagasawa
@@ -1612,29 +1832,37 @@
- gminagdow
- gminagielniow
- gminagieraltowice
- - gminaglinojeck
- gminaglogow
+ - gminaglogowek
- gminagluchow
+ - gminaglusk
- gminagluszyca
- gminagniew
+ - gminagniewino
- gminagniewoszow
- gminagniezno
- gminagoczalkowicezdroj
- gminagodkowo
- gminagodow
- gminagodzieszewielkie
+ - gminagodziszow
- gminagolancz
+ - gminagolcza
- gminagoleszow
- gminagolina
- gminagolubdobrzyn
+ - gminagoluchow
+ - gminagomunice
- gminagoraj
- gminagorlice
- gminagorno
+ - gminagorzyca
- gminagoscieradow
- gminagostyn
- gminagostynin
- gminagoszczyn
- gminagozd
+ - gminagrabica
- gminagrabow
- gminagrabowiec
- gminagrabownadpilica
@@ -1653,45 +1881,52 @@
- gminagrudziadz
- gminagruta
- gminagrybow
+ - gminagryfice
+ - gminagrzmiaca
- gminahaczow
- gminahalinow
- gminahansk
- gminaharasiuki
- gminahazlach
- gminaherby
+ - gminahorodlo
- gminahrubieszow
- gminahuszlew
- gminahyzne
- gminaimielno
- gminainowroclaw
+ - gminairzadze
- gminaistebna
+ - gminaiwanowice
- gminaiwierzyce
- gminaiwoniczzdroj
- gminaizabelin
- gminaizbica
- - gminajadow
+ - gminaizbicko
+ - gminajablon
- gminajaktorow
+ - gminajakubow
- gminajanikowo
+ - gminajanow
- gminajanowiec
- gminajanowpodlaski
- - gminajaraczewo
+ - gminajarczow
- gminajarocin
- gminajasienicarosielna
+ - gminajasliska
- gminajaslo
- gminajastkow
- gminajastrowie
- gminajastrzab
- gminajedlicze
- - gminajedlinsk
- - gminajedlnialetnisko
- gminajejkowice
- gminajemielnica
- - gminajemielno
- gminajerzmanowa
- gminajezewo
- gminajeziorawielkie
- gminajeziorzany
- gminajezowe
+ - gminajoniec
- gminajordanow
- gminajozefow
- gminajozefownadwisla
@@ -1699,14 +1934,18 @@
- gminakakolewnica
- gminakamien
- gminakamienica
- - gminakamieniec
+ - gminakamiennik
- gminakamionka
- gminakarczmiska
- gminakargowa
+ - gminakarlino
+ - gminakarniewo
- gminakaweczyn
- gminakazimierzbiskupi
- gminakepice
+ - gminakesowo
- gminakielczyglow
+ - gminakietrz
- gminakikol
- gminakiszkowo
- gminakleczew
@@ -1721,22 +1960,30 @@
- gminaklucze
- gminakluczewsko
- gminakobielewielkie
+ - gminakobylanka
- gminakochanowice
- gminakock
- gminakodrab
- gminakolaczyce
- gminakolbaskowo
+ - gminakolbiel
- gminakolczyglowy
+ - gminakolobrzeg
- gminakoluszki
- gminakomancza
+ - gminakomarowkapodlaska
- gminakomorniki
- gminakomprachcice
- gminakonarzyny
- gminakondratowice
+ - gminakoneck
- gminakoniusza
- gminakonopiska
- gminakonskowola
+ - gminakonstantynow
- gminakoprzywnica
+ - gminakorfantow
+ - gminakornik
- gminakorsze
- gminakorycin
- gminakorzenna
@@ -1746,10 +1993,14 @@
- gminakoscierzyna
- gminakosowlacki
- gminakostrzyn
- - gminakoszyce
+ - gminakoszecin
- gminakotla
- gminakotun
+ - gminakowiesy
+ - gminakozieglowy
- gminakozlow
+ - gminakramsk
+ - gminakrasniczyn
- gminakrasnik
- gminakrasnobrod
- gminakrasnystaw
@@ -1759,12 +2010,16 @@
- gminakrosnice
- gminakrupskimlyn
- gminakruszwica
+ - gminakrynice
- gminakrynki
- gminakrzanowice
- gminakrzemieniewo
+ - gminakrzeszow
- gminakrzymow
+ - gminakrzywcza
- gminakrzywin
- gminakrzyzanowice
+ - gminaksawerow
- gminaksiazwielki
- gminakunice
- gminakunow
@@ -1774,15 +2029,19 @@
- gminakwilcz
- gminalabowa
- gminalabunie
+ - gminalaczna
+ - gminaladek
- gminalambinowice
- gminalanckorona
+ - gminalancut
+ - gminalapanow
- gminalapszenizne
- gminalasin
- gminalaskarzew
- gminalasowicewielkie
- gminalaszczow
- - gminalaszki
- gminalatowicz
+ - gminalaziska
- gminalazy
- gminaleczyca
- gminaleczyce
@@ -1792,11 +2051,14 @@
- gminalelow
- gminalesna
- gminalesnapodlaska
+ - gminalesniowice
- gminalesznowola
- gminalezajsk
- gminalichnowy
- gminalimanowa
- gminalinia
+ - gminaliniewo
+ - gminalipiany
- gminalipinki
- gminalipnik
- gminalipowa
@@ -1804,43 +2066,51 @@
- gminaliszki
- gminaliw
- gminalobez
+ - gminalochow
- gminalodygowice
- gminalomazy
+ - gminalomianki
+ - gminaloniow
- gminalopiennikgorny
- gminalopuszno
+ - gminalosice
- gminaluban
- gminalubartow
- gminalubasz
+ - gminalubawka
- gminalubenia
- gminalubianka
- gminalubicz
+ - gminalubien
- gminalubiewo
- gminalubin
- gminalubniany
- gminalubochnia
- - gminalubomia
- gminalubon
+ - gminalubsza
+ - gminalubyczakrolewska
- gminalukow
- gminalukowica
- gminalutowiska
+ - gminalututow
- gminaluzino
- gminaluzna
- gminalysomice
+ - gminamaciejowice
- gminamagnuszew
+ - gminamajdankrolewski
- gminamakowpodhalanski
- - gminamalawies
- gminamalbork
- gminamaldyty
- gminamalkiniagorna
- gminamarcinowice
- gminamargonin
- gminamarianowo
- - gminamarkusy
- - gminamaslow
+ - gminamarkuszow
+ - gminamecinka
- gminamedyka
- gminamelgiew
- gminamichalow
- - gminamichalowo
- gminamiedzianagora
- gminamiedzna
- gminamiedzno
@@ -1849,7 +2119,10 @@
- gminamiedzyrzecpodlaski
- gminamiedzyzdroje
- gminamiejscepiastowe
+ - gminamiekinia
- gminamielec
+ - gminamielno
+ - gminamieszkowice
- gminamilanow
- gminamilejow
- gminamilicz
@@ -1858,21 +2131,26 @@
- gminamiloslaw
- gminamilowka
- gminaminskmazowiecki
+ - gminamirow
- gminamirsk
- gminamlynary
+ - gminamodliborzyce
- gminamogielnica
- gminamogilany
+ - gminamogilno
+ - gminamorawica
- gminamordy
- gminamoryn
- gminamrocza
- gminamrozy
+ - gminamsciwojow
+ - gminamstow
- gminamszana
- gminamszanadolna
- gminamurow
- gminamycielin
- - gminamyslakowice
+ - gminamykanow
- gminamysliborz
- - gminanadarzyn
- gminanamyslow
- gminanasielsk
- gminanawojowa
@@ -1883,23 +2161,25 @@
- gminaniedrzwicaduza
- gminaniedzwiada
- gminaniedzwiedz
- - gminaniegoslawice
- - gminaniwiska
+ - gminanowakarczma
- gminanowaruda
- gminanowawiesleborska
+ - gminanowe
- gminanowemiasto
- gminanowemiastonadwarta
- - gminanowogrodbobrzanski
+ - gminanowogrod
- gminanowosolna
- gminanowykaweczyn
+ - gminanowykorczyn
- gminanowystaw
- gminanowytarg
- gminanowytomysl
+ - gminanozdrzec
- gminanur
- gminaobrazow
- gminaochotnicadolna
- gminaogrodzieniec
- - gminaolecko
+ - gminaolszanica
- gminaolsztynek
- gminaolszyna
- gminaopatowiec
@@ -1909,11 +2189,15 @@
- gminaosiekjasielski
- gminaosiekmaly
- gminaosielsko
+ - gminaosina
+ - gminaosjakow
+ - gminaostrorog
- gminaostrow
- gminaostrowek
- gminaostrowlubelski
- gminaostrowmazowiecka
- gminaostrowwielkopolski
+ - gminaotmuchow
- gminaotyn
- gminaozarow
- gminaozarowice
@@ -1921,27 +2205,32 @@
- gminaozorkow
- gminapabianice
- gminapacanow
+ - gminapacyna
- gminapaczkow
- gminapadewnarodowa
- - gminapajeczno
- gminapakoslaw
- gminapakoslawice
- gminapalecznica
- gminapanki
- gminaparchowo
- gminaparczew
- - gminapawlosiow
+ - gminapaslek
+ - gminapatnow
- gminapawlowice
- gminapawlowiczki
+ - gminapawonkow
- gminapeclaw
- gminapelplin
+ - gminapepowo
- gminapiaski
- gminapiatnica
- - gminapiecki
- gminapiekoszow
+ - gminapieniezno
- gminapilchowice
+ - gminapinczow
- gminapionki
- - gminapiotrkowtrybunalski
+ - gminaplaska
+ - gminaplaterowka
- gminaplesna
- gminapleszew
- gminaplonsk
@@ -1949,6 +2238,7 @@
- gminapoczesna
- gminapodedworze
- gminapodegrodzie
+ - gminapodgorzyn
- gminapokoj
- gminapolajewo
- gminapolaniec
@@ -1957,16 +2247,18 @@
- gminapolice
- gminapolkowice
- gminapomiechowek
+ - gminaponiatowa
- gminapopielow
- gminapopow
- - gminaporaj
- gminapotegowo
+ - gminapotokwielki
- gminapraszka
- - gminaprazmow
- gminaprochowice
- gminapromna
- gminaproszkow
+ - gminaprusice
- gminapruszczgdanski
+ - gminaprzechlewo
- gminaprzeclaw
- gminaprzedecz
- gminaprzemet
@@ -1976,7 +2268,9 @@
- gminaprzodkowo
- gminaprzykona
- gminaprzylek
+ - gminaprzyrow
- gminaprzystajn
+ - gminaprzytoczna
- gminapuchaczow
- gminapuck
- gminapulawy
@@ -1984,10 +2278,10 @@
- gminapuszczamarianska
- gminapysznica
- gminapyzdry
+ - gminarabawyzna
- gminarachanie
- gminaraciechowice
- - gminaraclawice
- - gminaradecznica
+ - gminaradgoszcz
- gminaradkow
- gminaradlow
- gminaradomin
@@ -1995,16 +2289,29 @@
- gminaradomyslnadsanem
- gminaradoszyce
- gminaradwanice
+ - gminaradymno
+ - gminaradziejow
- gminaradzilow
+ - gminarajgrod
+ - gminarakow
+ - gminarakszawa
- gminarawamazowiecka
+ - gminaregnow
- gminarenskawies
+ - gminarogozno
+ - gminarokitno
+ - gminaropa
- gminarossosz
- gminarozprza
- gminarucianenida
- gminarudahuta
- gminarudna
- gminarudniki
+ - gminarudniknadsanem
+ - gminarudziniec
- gminarusiec
+ - gminarusinow
+ - gminarybczewice
- gminarychliki
- gminarychtal
- gminaryczywol
@@ -2012,32 +2319,39 @@
- gminarypin
- gminarytro
- gminarytwiany
- - gminarzasnia
- gminarzeczyca
- gminarzepiennikstrzyzewski
- gminarzepin
+ - gminarzezawa
- gminarzgow
- gminasadki
- gminasadowne
- gminasamborzec
- gminasanok
+ - gminasawin
- gminascinawa
- gminasedziejowice
+ - gminasejny
+ - gminasekowa
- gminasepopol
- gminaserokomla
- gminasianow
- gminasicienko
- gminasieciechow
- gminasiedlce
+ - gminasiedliszcze
- gminasiemiatycze
+ - gminasiemien
- gminasiemysl
- gminasiennica
- gminasiennicarozana
- gminasienno
- gminasiepraw
- gminasieradz
+ - gminasierakow
- gminasierakowice
- gminasiewierz
+ - gminasitkowkanowiny
- gminasitno
- gminaskarzyskokoscielne
- gminaskepe
@@ -2045,16 +2359,22 @@
- gminaskoczow
- gminaskoki
- gminaskolyszyn
+ - gminaskrwilno
- gminaskrzyszow
- gminaskulsk
+ - gminaskwierzyna
- gminaslawa
+ - gminasliwice
- gminaslopnice
+ - gminaslubice
- gminaslupca
- gminaslupia
+ - gminaslupiakonecka
+ - gminasmigiel
- gminasobieniejeziory
+ - gminasobolew
- gminasobotka
- gminasokolka
- - gminasokoly
- gminasolina
- gminasosnicowice
- gminasosnie
@@ -2069,11 +2389,16 @@
- gminastaremiasto
- gminastarepole
- gminastarogardgdanski
+ - gminastarybrus
+ - gminastarydzierzgon
+ - gminastarytarg
- gminastawiszyn
+ - gminastepnica
- gminastoczeklukowski
- gminastopnica
- gminastrawczyn
- gminastrykow
+ - gminastryszawa
- gminastryszow
- gminastrzalkowo
- gminastrzelceopolskie
@@ -2082,38 +2407,43 @@
- gminastrzyzewice
- gminastupsk
- gminasubkowy
+ - gminasuchan
- gminasuchedniow
- gminasuchozebry
- gminasuchylas
- gminasulechow
- gminasulecin
+ - gminasulejow
- gminasulikow
- gminasulmierzyce
- gminasulow
- gminasusiec
- - gminaswierklaniec
+ - gminaswiercze
+ - gminaswierczow
+ - gminaswierklany
- gminaswierzawa
- gminaswieszyno
- gminaswilcza
- gminaszadek
- gminaszaflary
- gminaszastarka
+ - gminaszczawinkoscielny
- gminaszczebrzeszyn
- gminaszczekociny
- gminaszczercow
- - gminaszczutowo
- gminaszczytna
- gminaszczytniki
- - gminaszemud
+ - gminaszczytno
- gminaszerzyny
- gminaszlichtyngowa
+ - gminaszrensk
+ - gminaszudzialowo
- gminaszydlow
- gminatarlow
- gminatarnow
- gminatarnowiec
- gminatarnowopolski
- gminateresin
- - gminaterespol
- gminatereszpol
- gminatluchowo
- gminatluszcz
@@ -2123,12 +2453,15 @@
- gminatoszek
- gminatrabkiwielkie
- gminatrzebiatow
+ - gminatrzebielino
- gminatrzebinia
- - gminatrzeszczany
- gminatrzyciaz
+ - gminatrzydnikduzy
- gminatuchow
+ - gminatulowice
- gminaturosnkoscielna
- gminatuszownarodowy
+ - gminatworog
- gminatyczyn
- gminatymbark
- gminatyrawawoloska
@@ -2137,15 +2470,21 @@
- gminaulanmajorat
- gminaulanow
- gminaulez
+ - gminaulhowek
- gminaurszulin
- gminaurzedow
+ - gminausciegorlickie
- gminauscimow
- gminawachock
+ - gminawadrozewielkie
- gminawagrowiec
+ - gminawalce
- gminawapielsk
- gminawasilkow
+ - gminawasosz
- gminawawolnica
- gminawejherowo
+ - gminawerbkowice
- gminawiazow
- gminawiazowna
- gminawicko
@@ -2153,16 +2492,21 @@
- gminawielbark
- gminawielen
- gminawielgie
+ - gminawielgomlyny
- gminawieliszew
- gminawielkanieszawka
- gminawieniawa
- gminawieprz
- gminawieruszow
+ - gminawierzbinek
- gminawierzbno
+ - gminawierzchlas
- gminawierzchoslawice
- gminawietrzychowice
- gminawijewo
+ - gminawilczyce
- gminawilczyn
+ - gminawilkolaz
- gminawilkow
- gminawilkowice
- gminawinnica
@@ -2173,12 +2517,14 @@
- gminawitkowo
- gminawladyslawow
- gminawlen
+ - gminawloclawek
- gminawlodawa
- gminawloszczowa
- gminawodzierady
- gminawodzislaw
- gminawojcieszkow
- gminawojnicz
+ - gminawojslawice
- gminawolakrzysztoporska
- gminawolanow
- gminawolbrom
@@ -2189,15 +2535,18 @@
- gminawreczycawielka
- gminawronki
- gminawyrzysk
- - gminazabierzow
+ - gminawysokie
- gminazabno
- gminazagan
- - gminazagorz
+ - gminazagorow
- gminazaklikow
- gminazakroczym
- gminazakrzowek
+ - gminazalesie
- gminazaleszany
+ - gminazaluski
- gminazamosc
+ - gminazarnow
- gminazarnowiec
- gminazarow
- gminazarszyn
@@ -2209,20 +2558,26 @@
- gminazbojno
- gminazbroslawice
- gminazdunskawola
- - gminazduny
- gminazdzieszowice
+ - gminazebowice
- gminazebrzydowice
+ - gminazegocina
- gminazelazkow
+ - gminazembrzyce
- gminazgierz
- gminazgorzelec
- gminaziebice
- gminazielonki
- gminazlawieswielka
+ - gminazlota
+ - gminazlotnikikujawskie
- gminazmudz
- gminaznin
- gminazolkiewka
- gminazolynia
- gminazukowice
+ - gminazurawica
+ - gminazyrakow
- gminazyrzyn
- gminazytno
- gniezno
@@ -2231,19 +2586,19 @@
- gora
- gorakalwaria
- gorlice
+ - gorzno
- gorzowslaski
- gorzowwielkopolski
- gostynin
- grajewo
- grodziskmazowiecki
- - gronowoelblaskie
- grudziadz
+ - grybow
- gryfino
- gryfowslaski
- hel
- hrubieszow
- inowroclaw
- - iwanowice
- izbicakujawska
- jablonowopomorskie
- janowiecwielkopolski
@@ -2253,7 +2608,6 @@
- jaslo
- jastrzebiezdroj
- jawor
- - jaworzno
- jedlinazdroj
- jelczlaskowice
- jeleniagora
@@ -2274,9 +2628,9 @@
- kepno
- ketrzyn
- kielce
- - kielczyglow
- klodawa
- klodzko
+ - kluczbork
- knurow
- kobylka
- kolo
@@ -2306,11 +2660,13 @@
- krzeszowice
- krzyzwielkopolski
- ksiazwielkopolski
- - kudowazdroj
- kujawskopomorskie
+ - kutno
- kuzniaraciborska
+ - kwidzyn
- labiszyn
- ladekzdroj
+ - lancut
- lapy
- lask
- laskarzew
@@ -2322,10 +2678,10 @@
- legnica
- leszno
- lewinbrzeski
+ - lewinbrzeski2
- lezajsk
- limanowa
- lipno
- - lipsko
- lodz
- lodzkie
- lowicz
@@ -2342,11 +2698,8 @@
- lwowekslaski
- malbork
- malopolskie
- - marciszow
- marki
- - maslowice
- mazowieckie
- - miastko
- michalowice
- miechow
- miedzyrzecpodlaski
@@ -2354,6 +2707,7 @@
- mielec
- milanowek
- minskmazowiecki
+ - mniszkow
- mosina
- mragowo
- mragowski
@@ -2363,18 +2717,17 @@
- myslowice
- myszkow
- naklonadnotecia
- - nasielsk
- niemodlin
- niepolomice
- nisko
- nowadeba
- nowasarzyna
+ - nowasol
- nowemiasteczko
- noweskalmierzyce
- nowogard
- nowogrodbobrzanski
- nowogrodziec
- - nowosolna
- nowydwormazowiecki
- nowysacz
- nowytarg
@@ -2388,6 +2741,8 @@
- opoczno
- opole
- opolelubelskie
+ - opolskie
+ - orzesze
- osieczna
- osiecznica
- ostroda
@@ -2405,13 +2760,16 @@
- piekaryslaskie
- piensk
- pila
+ - pilzno
- piotrkowtrybunalski
- pisz
- plock
- plonsk
- pniewy
+ - pobiedziska
- podkarpackie
- podkowalesna
+ - podlaskie
- polczynzdroj
- pomorskie
- poniec
@@ -2420,7 +2778,7 @@
- powiataugustowski
- powiatbedzinski
- powiatbelchatowski
- - powiatbialobrzeski
+ - powiatbialostocki
- powiatbialski
- powiatbielski
- powiatbieszczadzki
@@ -2446,6 +2804,7 @@
- powiatczluchowski
- powiatdabrowski
- powiatdebicki
+ - powiatdrawski
- powiatdzialdowski
- powiatdzierzoniowski
- powiatelblaski
@@ -2460,10 +2819,11 @@
- powiatgoleniowski
- powiatgolubskodobrzynski
- powiatgorlicki
+ - powiatgorowski
- powiatgorzowski
- powiatgostynski
+ - powiatgrajewski
- powiatgrojecki
- - powiatgrudziadzki
- powiatgryficki
- powiatgryfinski
- powiathajnowski
@@ -2478,6 +2838,7 @@
- powiatjedrzejowski
- powiatjeleniogorski
- powiatkaliski
+ - powiatkamiennogorski
- powiatkamienski
- powiatkartuski
- powiatkazimierski
@@ -2502,6 +2863,7 @@
- powiatkrosnienski
- powiatkrotoszynski
- powiatkutnowski
+ - powiatlancucki
- powiatlaski
- powiatleborski
- powiatleczycki
@@ -2516,6 +2878,7 @@
- powiatlipski
- powiatlobeski
- powiatlodzkiwschodni
+ - powiatlosicki
- powiatlowicki
- powiatlubaczowski
- powiatlubanski
@@ -2536,9 +2899,11 @@
- powiatmyslenicki
- powiatmyszkowski
- powiatnakielski
+ - powiatnamyslowski
- powiatnidzicki
- powiatnizanski
- powiatnowodworski
+ - powiatnowomiejski
- powiatnowosadecki
- powiatnowosolski
- powiatnowotarski
@@ -2574,7 +2939,6 @@
- powiatproszowicki
- powiatprudnicki
- powiatpruszkowski
- - powiatprzasnyski
- powiatprzemyski
- powiatprzeworski
- powiatprzysuski
@@ -2597,6 +2961,7 @@
- powiatrzeszowski
- powiatsandomierski
- powiatsanocki
+ - powiatsejnenski
- powiatsepolenski
- powiatsiedlecki
- powiatsiemiatycki
@@ -2624,6 +2989,7 @@
- powiatswidnicki
- powiatswidwinski
- powiatswiebodzinski
+ - powiatswiecki
- powiatszamotulski
- powiatszczycienski
- powiatsztumski
@@ -2642,6 +3008,7 @@
- powiatwagrowiecki
- powiatwalecki
- powiatwarszawskizachodni
+ - powiatwegorzewski
- powiatwegrowski
- powiatwejherowski
- powiatwielicki
@@ -2661,7 +3028,6 @@
- powiatwyszkowski
- powiatzabkowicki
- powiatzaganski
- - powiatzambrowski
- powiatzamojski
- powiatzarski
- powiatzawiercianski
@@ -2672,34 +3038,33 @@
- powiatzlotoryjski
- powiatzlotowski
- powiatzninski
- - powiatzurominski
- powiatzyrardowski
- powiatzywiecki
- poznan
- - prostki
- proszowice
- prudnik
+ - pruszczgdanski
- pruszkow
- przasnysz
- przemysl
- przeworsk
- przysucha
- pszczyna
- - pszow
- puck
- pulawy
+ - pultusk
+ - puszczykowo
- pyskowice
- rabkazdroj
- raciaz
- raciborz
- - raciechowice
- radom
- radomsko
+ - radomyslwielki
- radymno
- radziejow
- radzionkow
- radzynpodlaski
- - rakow
- rawamazowiecka
- rawicz
- reda
@@ -2713,6 +3078,7 @@
- rymanow
- rypin
- rzeszow
+ - rzeszowprojekt
- sandomierz
- sanok
- sedziszowmalopolski
@@ -2720,7 +3086,6 @@
- siedlce
- siemianowiceslaskie
- siemiatycze
- - sieniawa
- sieradz
- skarzyskokamienna
- skawina
@@ -2739,17 +3104,15 @@
- srodaslaska
- srodawielkopolska
- starachowice
+ - stargard
- starogardgdanski
- starysacz
- staszow
- stronieslaskie
- - strzegom
- strzyzow
- - suchylas
- sulejowek
- sulkowice
- sulmierzyce
- - suwalski
- swarzedz
- swidnica
- swidnik
@@ -2772,8 +3135,10 @@
- terespol
- tomaszowlubelski
- tomaszowmazowiecki
+ - tomaszowmazowieckiprojekt
- torun
- trzcianka
+ - trzcinskozdroj
- trzebnica
- trzemeszno
- tuliszkow
@@ -2786,7 +3151,7 @@
- ustrzykidolne
- wadowice
- wagrowiec
- - walbrzych
+ - walcz
- warminskomazurskie
- warszawa
- wasosz
@@ -2795,7 +3160,7 @@
- wiecbork
- wieliczka
- wielkopolskie
- - wizna
+ - wielun
- wladyslawowo
- wloclawek
- wlodawa
@@ -2824,6 +3189,7 @@
- zielonagora
- zielonka
- zlotoryja
+ - zlotow
- zory
- zwolen
- zyrardow
diff --git a/app/src/test/java/io/github/wulkanowy/data/db/migrations/AbstractMigrationTest.kt b/app/src/test/java/io/github/wulkanowy/data/db/migrations/AbstractMigrationTest.kt
index cc31d893..18249ba8 100644
--- a/app/src/test/java/io/github/wulkanowy/data/db/migrations/AbstractMigrationTest.kt
+++ b/app/src/test/java/io/github/wulkanowy/data/db/migrations/AbstractMigrationTest.kt
@@ -3,6 +3,7 @@ package io.github.wulkanowy.data.db.migrations
import android.content.Context
import androidx.preference.PreferenceManager
import androidx.room.Room
+import androidx.room.migration.Migration
import androidx.room.testing.MigrationTestHelper
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
import androidx.test.core.app.ApplicationProvider
@@ -16,7 +17,7 @@ abstract class AbstractMigrationTest {
val dbName = "migration-test"
- val context: Context get() = ApplicationProvider.getApplicationContext()
+ private val context: Context get() = ApplicationProvider.getApplicationContext()
@get:Rule
val helper: MigrationTestHelper = MigrationTestHelper(
@@ -25,6 +26,10 @@ abstract class AbstractMigrationTest {
FrameworkSQLiteOpenHelperFactory()
)
+ fun runMigrationsAndValidate(migration: Migration) {
+ helper.runMigrationsAndValidate(dbName, migration.endVersion, true, migration).close()
+ }
+
fun getMigratedRoomDatabase(): AppDatabase {
val database = Room.databaseBuilder(
ApplicationProvider.getApplicationContext(),
diff --git a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration12Test.kt b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration12Test.kt
index a0290473..f614c8ca 100644
--- a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration12Test.kt
+++ b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration12Test.kt
@@ -33,7 +33,7 @@ class Migration12Test : AbstractMigrationTest() {
close()
}
- helper.runMigrationsAndValidate(dbName, 12, true, Migration12())
+ runMigrationsAndValidate(Migration12())
val db = getMigratedRoomDatabase()
val students = runBlocking { db.studentDao.loadAll() }
@@ -49,6 +49,7 @@ class Migration12Test : AbstractMigrationTest() {
assertEquals(2, studentId)
assertEquals(6, classId)
}
+ db.close()
}
@Test
@@ -62,7 +63,7 @@ class Migration12Test : AbstractMigrationTest() {
close()
}
- helper.runMigrationsAndValidate(dbName, 12, true, Migration12())
+ runMigrationsAndValidate(Migration12())
val db = getMigratedRoomDatabase()
val students = runBlocking { db.studentDao.loadAll() }
@@ -73,6 +74,7 @@ class Migration12Test : AbstractMigrationTest() {
assertEquals(2, studentId)
assertEquals(1, classId)
}
+ db.close()
}
@Test
@@ -88,7 +90,7 @@ class Migration12Test : AbstractMigrationTest() {
close()
}
- helper.runMigrationsAndValidate(dbName, 12, true, Migration12())
+ runMigrationsAndValidate(Migration12())
val db = getMigratedRoomDatabase()
val students = runBlocking { db.studentDao.loadAll() }
@@ -107,6 +109,7 @@ class Migration12Test : AbstractMigrationTest() {
assertEquals(studentId, 3)
assertEquals(true, isCurrent)
}
+ db.close()
}
private fun createStudent(db: SupportSQLiteDatabase, studentId: Int, isCurrent: Boolean) {
diff --git a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration13Test.kt b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration13Test.kt
index bdfb4137..b0c03fb1 100644
--- a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration13Test.kt
+++ b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration13Test.kt
@@ -57,6 +57,8 @@ class Migration13Test : AbstractMigrationTest() {
assertEquals("C", className)
assertEquals("Publiczna szkoła Wulkanowego-fejka nr 2 w fakelog.cf", schoolName)
}
+
+ db.close()
}
@Test
@@ -85,6 +87,8 @@ class Migration13Test : AbstractMigrationTest() {
assertEquals("", className)
assertEquals("Publiczna szkoła Wulkanowego-fejka nr 1 w fakelog.cf", schoolName)
}
+
+ db.close()
}
@Test
@@ -148,6 +152,7 @@ class Migration13Test : AbstractMigrationTest() {
assertFalse(semesters[2].second)
assertTrue(semesters[3].second)
}
+ db.close()
}
private fun getSemesters(db: SupportSQLiteDatabase, query: String): List> {
diff --git a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration27Test.kt b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration27Test.kt
index 8e744f27..19eda9ba 100644
--- a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration27Test.kt
+++ b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration27Test.kt
@@ -27,7 +27,7 @@ class Migration27Test : AbstractMigrationTest() {
close()
}
- helper.runMigrationsAndValidate(dbName, 27, true, Migration27())
+ runMigrationsAndValidate(Migration27())
val db = getMigratedRoomDatabase()
val students = runBlocking { db.studentDao.loadAll() }
@@ -39,6 +39,8 @@ class Migration27Test : AbstractMigrationTest() {
assertEquals(123, userLoginId)
assertEquals("Student Jan", userName)
}
+
+ db.close()
}
@Test
@@ -49,7 +51,7 @@ class Migration27Test : AbstractMigrationTest() {
close()
}
- helper.runMigrationsAndValidate(dbName, 27, true, Migration27())
+ runMigrationsAndValidate(Migration27())
val db = getMigratedRoomDatabase()
val students = runBlocking { db.studentDao.loadAll() }
@@ -61,6 +63,8 @@ class Migration27Test : AbstractMigrationTest() {
assertEquals(2, userLoginId)
assertEquals("Unit Jan", userName)
}
+
+ db.close()
}
@Test
@@ -73,7 +77,7 @@ class Migration27Test : AbstractMigrationTest() {
close()
}
- helper.runMigrationsAndValidate(dbName, 27, true, Migration27())
+ runMigrationsAndValidate(Migration27())
val db = getMigratedRoomDatabase()
val students = runBlocking { db.studentDao.loadAll() }
@@ -90,6 +94,8 @@ class Migration27Test : AbstractMigrationTest() {
assertEquals(333, userLoginId)
assertEquals("Unit Tomasz", userName)
}
+
+ db.close()
}
private fun createStudent(db: SupportSQLiteDatabase, id: Long, userLoginId: Int, studentName: String) {
diff --git a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration35Test.kt b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration35Test.kt
index 883cdb81..79c24f2e 100644
--- a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration35Test.kt
+++ b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration35Test.kt
@@ -29,7 +29,7 @@ class Migration35Test : AbstractMigrationTest() {
close()
}
- helper.runMigrationsAndValidate(dbName, 35, true, Migration35(AppInfo()))
+ runMigrationsAndValidate(Migration35(AppInfo()))
val db = getMigratedRoomDatabase()
val students = runBlocking { db.studentDao.loadAll() }
@@ -38,6 +38,8 @@ class Migration35Test : AbstractMigrationTest() {
assertTrue { students[0].avatarColor in AppInfo().defaultColorsForAvatar }
assertTrue { students[1].avatarColor in AppInfo().defaultColorsForAvatar }
+
+ db.close()
}
private fun createStudent(db: SupportSQLiteDatabase, id: Long) {
diff --git a/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration54Test.kt b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration54Test.kt
new file mode 100644
index 00000000..1855e0d5
--- /dev/null
+++ b/app/src/test/java/io/github/wulkanowy/data/db/migrations/Migration54Test.kt
@@ -0,0 +1,130 @@
+package io.github.wulkanowy.data.db.migrations
+
+import android.content.ContentValues
+import android.database.sqlite.SQLiteDatabase
+import android.os.Build
+import androidx.sqlite.db.SupportSQLiteDatabase
+import dagger.hilt.android.testing.HiltAndroidTest
+import dagger.hilt.android.testing.HiltTestApplication
+import io.github.wulkanowy.sdk.Sdk
+import io.github.wulkanowy.sdk.Sdk.ScrapperLoginType.*
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
+import kotlin.random.Random
+import kotlin.test.assertEquals
+
+@HiltAndroidTest
+@RunWith(RobolectricTestRunner::class)
+@OptIn(ExperimentalCoroutinesApi::class)
+@Config(sdk = [Build.VERSION_CODES.O_MR1], application = HiltTestApplication::class)
+class Migration54Test : AbstractMigrationTest() {
+
+ @Test
+ fun `don't touch unrelated students`() = runTest {
+ with(helper.createDatabase(dbName, 53)) {
+ createStudent(1, STANDARD, "vulcan.net.pl", "rzeszow", "Jan Michniewicz")
+ createStudent(2, ADFSLight, "umt.tarnow.pl", "tarnow", "Joanna Marcinkiewicz")
+ close()
+ }
+
+ runMigrationsAndValidate(Migration54())
+ val db = getMigratedRoomDatabase()
+ val students = db.studentDao.loadAll()
+
+ assertEquals(2, students.size)
+ with(students[0]) {
+ assertEquals(STANDARD.name, loginType)
+ assertEquals("https://vulcan.net.pl", scrapperBaseUrl)
+ assertEquals("rzeszow", symbol)
+ }
+ with(students[1]) {
+ assertEquals(ADFSLight.name, loginType)
+ assertEquals("https://umt.tarnow.pl", scrapperBaseUrl)
+ assertEquals("tarnow", symbol)
+ }
+ db.close()
+ }
+
+ @Test
+ fun `remove tomaszow mazowiecki students`() = runTest {
+ with(helper.createDatabase(dbName, 53)) {
+ createStudent(1, STANDARD, "vulcan.net.pl", "rzeszow", "Jan Michniewicz")
+ createStudent(2, STANDARD, "vulcan.net.pl", "tomaszowmazowiecki", "Joanna Stec")
+ createStudent(3, STANDARD, "vulcan.net.pl", "tomaszowmazowiecki", "Kacper Morawiecki")
+ close()
+ }
+
+ runMigrationsAndValidate(Migration54())
+ val db = getMigratedRoomDatabase()
+ val students = db.studentDao.loadAll()
+ assertEquals(1, students.size)
+ with(students[0]) {
+ assertEquals("rzeszow", symbol)
+ }
+ db.close()
+ }
+
+ @Test
+ fun `migrate resman students`() = runTest {
+ with(helper.createDatabase(dbName, 53)) {
+ createStudent(1, ADFSLight, "resman.pl", "rzeszow", "Joanna Stec")
+ createStudent(2, ADFSLight, "resman.pl", "rzeszow", "Kacper Morawiecki")
+ createStudent(3, STANDARD, "vulcan.net.pl", "rzeszow", "Jan Michniewicz")
+ close()
+ }
+ runMigrationsAndValidate(Migration54())
+ val db = getMigratedRoomDatabase()
+ val students = db.studentDao.loadAll()
+ assertEquals(3, students.size)
+ with(students[0]) {
+ assertEquals(ADFSLightScoped.name, loginType)
+ assertEquals("https://vulcan.net.pl", scrapperBaseUrl)
+ assertEquals("rzeszowprojekt", symbol)
+ }
+ with(students[1]) {
+ assertEquals(ADFSLightScoped.name, loginType)
+ assertEquals("https://vulcan.net.pl", scrapperBaseUrl)
+ assertEquals("rzeszowprojekt", symbol)
+ }
+ db.close()
+ }
+
+ private fun SupportSQLiteDatabase.createStudent(
+ id: Long,
+ loginType: Sdk.ScrapperLoginType,
+ host: String,
+ symbol: String,
+ studentName: String,
+ ) {
+ insert("Students", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
+ put("scrapper_base_url", "https://$host")
+ put("mobile_base_url", "")
+ put("login_type", loginType.name)
+ put("login_mode", "SCRAPPER")
+ put("certificate_key", "")
+ put("private_key", "")
+ put("is_parent", false)
+ put("email", "jan@fakelog.cf")
+ put("password", "******")
+ put("symbol", symbol)
+ put("student_id", Random.nextInt())
+ put("user_login_id", id)
+ put("user_name", studentName)
+ put("student_name", studentName)
+ put("school_id", "123")
+ put("school_short", "")
+ put("school_name", "")
+ put("class_name", "")
+ put("class_id", Random.nextInt())
+ put("is_current", false)
+ put("registration_date", "0")
+ put("id", id)
+ put("nick", "")
+ put("avatar_color", "")
+ })
+ }
+}
diff --git a/build.gradle b/build.gradle
index e8e1052b..174a3cb6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -31,6 +31,7 @@ allprojects {
mavenCentral()
google()
maven { url "https://jitpack.io" }
+ maven { url "https://s01.oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://developer.huawei.com/repo/" }
}
}