From 682eec59a82d4fa54c4693108bf864b31a5bdee1 Mon Sep 17 00:00:00 2001
From: dcz <dcz@ipipan.waw.pl>
Date: Fri, 25 Aug 2023 14:26:35 +0200
Subject: [PATCH] Redirect from login page to entries page. Additional info for
 predefined selectional preferencies.

---
 entries/views.py                              |  1 +
 importer/Argument.py                          |  4 +-
 semantics/models.py                           |  9 +-
 shellvalier/settings.py                       |  3 +-
 .../commands/add_predefined_preferences.py    | 97 +++++++++++++------
 syntax/management/commands/import_tei.py      | 11 ++-
 6 files changed, 88 insertions(+), 37 deletions(-)

diff --git a/entries/views.py b/entries/views.py
index 9708d31..7823586 100644
--- a/entries/views.py
+++ b/entries/views.py
@@ -615,6 +615,7 @@ def get_prefs_list(argument):
             'id'   : p.pk,
             'type' : p._meta.label,
             'str'  : str(p),
+            'info' : str(p.info),
         } for p in argument.predefined.all()),
         key=lambda x: x['str']
     ) + sorted(
diff --git a/importer/Argument.py b/importer/Argument.py
index 5b09f2a..50ea3f5 100644
--- a/importer/Argument.py
+++ b/importer/Argument.py
@@ -105,8 +105,8 @@ class SemanticRole:
         if self._attribute is not None:
             attribute = semantics.models.RoleAttribute.objects.get(attribute=self._attribute)
         else:
-            attribute=None
-        argument_role = semantics.models.ArgumentRole.objects.get(role=role, attribute=attribute)
+            attribute = None
+        argument_role = semantics.models.ArgumentRole.objects.get(role=role, attribute=attribute, sub_attribute=None)
         return argument_role
         
     def __str__(self):
diff --git a/semantics/models.py b/semantics/models.py
index 4dda269..e2c242c 100644
--- a/semantics/models.py
+++ b/semantics/models.py
@@ -58,7 +58,7 @@ class Argument(models.Model):
 class ArgumentRole(models.Model):
     role = models.ForeignKey('SemanticRole', on_delete=models.PROTECT)
     attribute = models.ForeignKey('RoleAttribute', null=True, on_delete=models.PROTECT)
-    sub_attribute = models.ForeignKey('RoleSubAttribute', null=True, on_delete=models.PROTECT)
+    sub_attribute = models.ForeignKey('RoleSubAttribute', default=None, blank=True, null=True, on_delete=models.PROTECT)
 
     def __str__(self):
         if self.attribute is None:
@@ -112,6 +112,7 @@ class RoleType(models.Model):
 class PredefinedSelectionalPreference(models.Model):
     name = models.CharField(max_length=20, unique=True)
     members = models.ForeignKey('SelectivePreference', null=True, on_delete=models.PROTECT)
+    info = models.CharField(max_length=200, unique=True)
     # name = TODO: wymaga lokalizacji
 
     def __str__(self):
@@ -146,6 +147,12 @@ class SelectivePreference(models.Model):
     relations = models.ManyToManyField(RelationalSelectionalPreference)
     synset_relations = models.ManyToManyField(SynsetRelationalSelectivePreference)
 
+    def __str__(self):
+        return ', '.join([str(arg) for arg in self.generals.all()]) + \
+               ', '.join([str(arg) for arg in self.synsets.all()]) + \
+               ', '.join([str(arg) for arg in self.relations.all()]) + \
+               ', '.join([str(arg) for arg in self.synset_relations.all()])
+
 
 class SelectionalPreferenceRelation(models.Model):
     key = models.CharField(max_length=40, unique=True)
diff --git a/shellvalier/settings.py b/shellvalier/settings.py
index 29a44e7..d1843ec 100644
--- a/shellvalier/settings.py
+++ b/shellvalier/settings.py
@@ -174,7 +174,8 @@ STATICFILES_DIRS = [
 ]
 
 LOGIN_URL = reverse_lazy('users:login')
-LOGIN_REDIRECT_URL = reverse_lazy('dash')
+# LOGIN_REDIRECT_URL = reverse_lazy('dash')
+LOGIN_REDIRECT_URL = reverse_lazy('entries:entries')
 LOGOUT_REDIRECT_URL = reverse_lazy('dash')
 
 EMAIL_BACKEND = get_environment('EMAIL_BACKEND')
diff --git a/syntax/management/commands/add_predefined_preferences.py b/syntax/management/commands/add_predefined_preferences.py
index f8fd1b8..89fd8fd 100644
--- a/syntax/management/commands/add_predefined_preferences.py
+++ b/syntax/management/commands/add_predefined_preferences.py
@@ -28,7 +28,7 @@ def create_predefined_preferences():
     # LUDZIE: osoba-1, grupa ludzi-1
     ludzie_members = SelectivePreference()
     ludzie_members.save()
-    osoba_1 = LexicalUnit.objects.get(base='osoba', 
+    osoba_1 = LexicalUnit.objects.get(base='osoba',
                                       sense='1',
                                       pos='noun').synset
     grupa_ludzi_1 = LexicalUnit.objects.get(base='grupa ludzi', 
@@ -36,8 +36,10 @@ def create_predefined_preferences():
                                             pos='noun').synset
     ludzie_members.synsets.add(osoba_1)
     ludzie_members.synsets.add(grupa_ludzi_1)
+    ludzie_members.save()
     ludzie, xx = PredefinedSelectionalPreference.objects.get_or_create(name='LUDZIE',
-                                                                  members=ludzie_members)
+                                                                       members=ludzie_members,
+                                                                       info='osoba-1, grupa ludzi-1')
     
     # ISTOTY: osoba-1, istota żywa-1, grupa istot-1
     istoty_members = SelectivePreference()
@@ -51,8 +53,10 @@ def create_predefined_preferences():
                                             sense='1',
                                             pos='noun').synset
     istoty_members.synsets.add(grupa_istot_1)
+    istoty_members.save()
     istoty, xx = PredefinedSelectionalPreference.objects.get_or_create(name='ISTOTY',
-                                                                  members=istoty_members)
+                                                                       members=istoty_members,
+                                                                       info='osoba-1, istota żywa-1, grupa istot-1')
     
     # PODMIOTY: LUDZIE, podmiot-3
     podmioty_members = SelectivePreference()
@@ -62,13 +66,15 @@ def create_predefined_preferences():
                                         sense='3',
                                         pos='noun').synset
     podmioty_members.synsets.add(podmiot_3)
+    podmioty_members.save()
     podmioty, xx = PredefinedSelectionalPreference.objects.get_or_create(name='PODMIOTY',
-                                                                    members=podmioty_members)
+                                                                         members=podmioty_members,
+                                                                         info='LUDZIE, podmiot-3')
     
     # DOBRA: jedzenie-2, mienie-1, przedmiot-1, wytwór-1 ==> JADŁO, mienie-1, przedmiot-1, wytwór-1
     dobra_members = SelectivePreference()
     dobra_members.save()
-    jedzenie_2 = LexicalUnit.objects.get(base='jedzenie', 
+    jedzenie_2 = LexicalUnit.objects.get(base='jedzenie',
                                         sense='2',
                                         pos='noun').synset
     dobra_members.synsets.add(jedzenie_2)
@@ -84,13 +90,15 @@ def create_predefined_preferences():
                                        sense='1',
                                        pos='noun').synset
     dobra_members.synsets.add(wytwor_1)
+    dobra_members.save()
     dobra, xx = PredefinedSelectionalPreference.objects.get_or_create(name='DOBRA',
-                                                                 members=dobra_members)
+                                                                      members=dobra_members,
+                                                                      info='JADŁO, mienie-1, przedmiot-1, wytwór-1')
     
     # KOMUNIKAT: informacja-1, wypowiedź-1
     komunikat_members = SelectivePreference()
     komunikat_members.save()
-    informacja_1 = LexicalUnit.objects.get(base='informacja', 
+    informacja_1 = LexicalUnit.objects.get(base='informacja',
                                            sense='1',
                                            pos='noun').synset
     komunikat_members.synsets.add(informacja_1)
@@ -98,8 +106,10 @@ def create_predefined_preferences():
                                           sense='1',
                                           pos='noun').synset
     komunikat_members.synsets.add(wypowiedz_1)
+    komunikat_members.save()
     komunikat, xx = PredefinedSelectionalPreference.objects.get_or_create(name='KOMUNIKAT',
-                                                                     members=komunikat_members)
+                                                                          members=komunikat_members,
+                                                                          info='informacja-1, wypowiedź-1')
     
     # KONCEPCJA: informacja-1, wytwór umysłu-1
     koncepcja_members = SelectivePreference()
@@ -109,21 +119,25 @@ def create_predefined_preferences():
                                               sense='1',
                                               pos='noun').synset
     koncepcja_members.synsets.add(wytwor_umyslu_1)
+    koncepcja_members.save()
     koncepcja, xx = PredefinedSelectionalPreference.objects.get_or_create(name='KONCEPCJA',
-                                                                     members=koncepcja_members)
+                                                                          members=koncepcja_members,
+                                                                          info='informacja-1, wytwór umysłu-1')
     
     # WYTWÓR: przedmiot-1, wytwór-1
     wytwor_members = SelectivePreference()
     wytwor_members.save()
     wytwor_members.synsets.add(przedmiot_1)
     wytwor_members.synsets.add(wytwor_1)
+    wytwor_members.save()
     wytwor, xx = PredefinedSelectionalPreference.objects.get_or_create(name='WYTWÓR',
-                                                                  members=wytwor_members)
+                                                                       members=wytwor_members,
+                                                                       info='przedmiot-1, wytwór-1')
     
     # JADŁO: pokarm-1, napój-1
     jadlo_members = SelectivePreference()
     jadlo_members.save()
-    pokarm_1 = LexicalUnit.objects.get(base='pokarm', 
+    pokarm_1 = LexicalUnit.objects.get(base='pokarm',
                                        sense='1',
                                        pos='noun').synset
     jadlo_members.synsets.add(pokarm_1)
@@ -131,13 +145,18 @@ def create_predefined_preferences():
                                       sense='1',
                                       pos='noun').synset
     jadlo_members.synsets.add(napoj_1)
+    jadlo_members.save()
     jadlo, xx = PredefinedSelectionalPreference.objects.get_or_create(name='JADŁO',
-                                                                 members=jadlo_members)
-    
+                                                                      members=jadlo_members,
+                                                                      info='pokarm-1, napój-1')
+
+    polozenie, xx = PredefinedSelectionalPreference.objects.get_or_create(name='POŁOŻENIE',
+                                                                          info='miejsce-1, przestrzeń-1, obiekt-2')
+
     # MIEJSCE: miejsce-1, przestrzeń-1, obiekt-2 ==> lokal-1, budynek-1, rejon-1, obszar-1, państwo-1, jednostka administracyjna-1, woda-4
     miejsce_members = SelectivePreference()
     miejsce_members.save()
-    miejsce_1 = LexicalUnit.objects.get(base='miejsce', 
+    miejsce_1 = LexicalUnit.objects.get(base='miejsce',
                                         sense='1',
                                         pos='noun').synset
     miejsce_members.synsets.add(miejsce_1)
@@ -149,13 +168,18 @@ def create_predefined_preferences():
                                         sense='2',
                                         pos='noun').synset
     miejsce_members.synsets.add(obiekt_2)
+    miejsce_members.save()
     miejsce, xx = PredefinedSelectionalPreference.objects.get_or_create(name='MIEJSCE',
-                                                                   members=miejsce_members)
-    
-    # CZAS: chwila-1, czas-3, czas-8, godzina-3
+                                                                        members=miejsce_members,
+                                                                        info='lokal-1, budowla-1, rejon-1, obszar-1, państwo-1, jednostka administracyjna-1, woda-4')
+
+    polozenie, xx = PredefinedSelectionalPreference.objects.get_or_create(name='OTOCZENIE',
+                                                                          info='powierzchnia-2, rzecz-4, wytwór-2, pomieszczenie-3, osoba-1')
+
+# CZAS: chwila-1, czas-3, czas-8, godzina-3
     czas_members = SelectivePreference()
     czas_members.save()
-    chwila_1 = LexicalUnit.objects.get(base='chwila', 
+    chwila_1 = LexicalUnit.objects.get(base='chwila',
                                        sense='1',
                                        pos='noun').synset
     czas_members.synsets.add(chwila_1)
@@ -171,8 +195,10 @@ def create_predefined_preferences():
                                         sense='3',
                                         pos='noun').synset
     czas_members.synsets.add(godzina_3)
+    czas_members.save()
     czas, xx = PredefinedSelectionalPreference.objects.get_or_create(name='CZAS',
-                                                                members=czas_members)
+                                                                     members=czas_members,
+                                                                     info='chwila-1, czas-3, czas-8, godzina-3')
     
     # OBIEKTY: osoba-1, obiekt-2, zbiór-1
     obiekty_members = SelectivePreference()
@@ -183,39 +209,48 @@ def create_predefined_preferences():
                                       sense='1',
                                       pos='noun').synset
     obiekty_members.synsets.add(zbior_1)
+    obiekty_members.save()
     obiekty, xx = PredefinedSelectionalPreference.objects.get_or_create(name='OBIEKTY',
-                                                                   members=obiekty_members)
+                                                                        members=obiekty_members,
+                                                                        info='osoba-1, obiekt-2, zbiór-1')
     
     # CECHA: cecha-1
     cecha_members = SelectivePreference()
     cecha_members.save()
-    cecha_1 = LexicalUnit.objects.get(base='cecha', 
+    cecha_1 = LexicalUnit.objects.get(base='cecha',
                                       sense='1',
                                       pos='noun').synset
     cecha_members.synsets.add(cecha_1)
+    cecha_members.save()
     cecha, xx = PredefinedSelectionalPreference.objects.get_or_create(name='CECHA',
-                                                                 members=cecha_members)
+                                                                      members=cecha_members,
+                                                                      info='cecha-1')
     
     # CZYNNOŚĆ: czynność-1
     czynnosc_members = SelectivePreference()
     czynnosc_members.save()
-    czynnosc_1 = LexicalUnit.objects.get(base='czynność', 
+    czynnosc_1 = LexicalUnit.objects.get(base='czynność',
                                          sense='1',
                                          pos='noun').synset
     czynnosc_members.synsets.add(czynnosc_1)
+    czynnosc_members.save()
     czynnosc, xx = PredefinedSelectionalPreference.objects.get_or_create(name='CZYNNOŚĆ',
-                                                                    members=czynnosc_members)
+                                                                         members=czynnosc_members,
+                                                                         info='czynność-1, czyn-1')
     
     # SYTUACJA ==> czynność-1, zdarzenie-2, okoliczność-1, ciąg zdarzeń-1
-    sytuacja, xx = PredefinedSelectionalPreference.objects.get_or_create(name='SYTUACJA')
+    sytuacja, xx = PredefinedSelectionalPreference.objects.get_or_create(name='SYTUACJA',
+                                                                         info='czynność-1, zdarzenie-2, okoliczność-1, ciąg zdarzeń-1')
     
     # KIEDY: CZAS, SYTUACJA
     kiedy_members = SelectivePreference()
     kiedy_members.save()
     kiedy_members.generals.add(czas)
     kiedy_members.generals.add(sytuacja)
+    kiedy_members.save()
     kiedy, xx = PredefinedSelectionalPreference.objects.get_or_create(name='KIEDY',
-                                                                 members=kiedy_members)
+                                                                      members=kiedy_members,
+                                                                      info='CZAS, SYTUACJA')
     
     # CZEMU: CECHA, SYTUACJA, LUDZIE
     czemu_members = SelectivePreference()
@@ -223,13 +258,15 @@ def create_predefined_preferences():
     czemu_members.generals.add(cecha)
     czemu_members.generals.add(sytuacja)
     czemu_members.generals.add(ludzie)
+    czemu_members.save()
     czemu, xx = PredefinedSelectionalPreference.objects.get_or_create(name='CZEMU',
-                                                                 members=czemu_members)
+                                                                      members=czemu_members,
+                                                                      info='CECHA, SYTUACJA, LUDZIE')
     
     # ILOŚĆ: ilość-1, rozmiar-1, rozmiar-2, jednostka-4, wielkość-6
     ilosc_members = SelectivePreference()
     ilosc_members.save()
-    ilosc_1 = LexicalUnit.objects.get(base='ilość', 
+    ilosc_1 = LexicalUnit.objects.get(base='ilość',
                                       sense='1',
                                       pos='noun').synset
     ilosc_members.synsets.add(ilosc_1)
@@ -249,5 +286,7 @@ def create_predefined_preferences():
                                          sense='6',
                                          pos='noun').synset
     ilosc_members.synsets.add(wielkosc_6)
+    ilosc_members.save()
     ilosc, xx = PredefinedSelectionalPreference.objects.get_or_create(name='ILOŚĆ',
-                                                                 members=ilosc_members)
+                                                                      members=ilosc_members,
+                                                                      info='ilość-1, rozmiar-1, rozmiar-2, jednostka-4, wielkość-6')
diff --git a/syntax/management/commands/import_tei.py b/syntax/management/commands/import_tei.py
index b6ac6c8..2afef61 100644
--- a/syntax/management/commands/import_tei.py
+++ b/syntax/management/commands/import_tei.py
@@ -188,14 +188,16 @@ def import_semantic_roles():
         (150, u'Time', u'242,236,54', None),
         (160, u'Duration', u'233,192,6', None),
         (170, u'Measure', u'238,72,154', None),
+        (180, u'Lemma', u'238,72,154', None),
         (190, u'Disponent', u'127,255,212', None),
-        (200, u'Means', u'pre', None)
+        (200, u'Means', u'188,143,143', None)
     ]
+
     # priorities set so that, when role and attribute priorities are added,
     # Role_Source < Role_Foreground < Role_Background < Role_Goal
     # and Role can be inserted anywhere into that hierarchy
     attributes = [(1, u'Source', None, u'left'), (3, u'Foreground', None, u'top'), (5, u'Background', None, u'bottom'),
-                  (7, u'Goal', None, u'right'), (8, u'Source', None, u'right')]
+                  (7, u'Goal', None, u'right')]
 
     sub_attributes = [(1, u'Part'), (2, u'Attrib')]
 
@@ -213,7 +215,7 @@ def import_semantic_roles():
         r = ArgumentRole(role=role, attribute=None)
         r.save()
         for attribute in RoleAttribute.objects.all():
-            r = ArgumentRole(role=role, attribute=attribute)
+            r = ArgumentRole(role=role, attribute=attribute, sub_attribute=None)
             r.save()
             for sub_attribute in RoleSubAttribute.objects.all():
                 r = ArgumentRole(role=role, attribute=attribute, sub_attribute=sub_attribute)
@@ -221,7 +223,8 @@ def import_semantic_roles():
 
 
 def import_semantic_role_types():
-    role_types = [(10, u'required'), (20, u'alternative'), (30, u'typical')]
+    # role_types = [(10, u'required'), (20, u'alternative'), (30, u'typical')]
+    role_types = [(10, u'role'), (20, u'alernative'), (30, u'modifier')]
     for pri, name in role_types:
         cont = RoleType(type=name)
         cont.save()
-- 
GitLab