extra labels wip
This commit is contained in:
parent
b060afb0ff
commit
9b4e6333a9
BIN
arw-yel-down.png
Normal file
BIN
arw-yel-down.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
63
config/instruction_images/st-ten-5/5803034807.svg
Normal file
63
config/instruction_images/st-ten-5/5803034807.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 387 KiB |
Binary file not shown.
BIN
config/label_designs/IVECO ETA30x16/ETA30x16_203dpi.nlbl
Normal file
BIN
config/label_designs/IVECO ETA30x16/ETA30x16_203dpi.nlbl
Normal file
Binary file not shown.
14
config/label_templates/ETA30x16_203dpi.prn
Normal file
14
config/label_templates/ETA30x16_203dpi.prn
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
CT~~CD,~CC^~CT~
|
||||
^XA~TA000~JSN^LT0^MNW^MTT^PON^PMN^LH0,0^JMA^PR2,2~SD20^JUS^LRN^CI0^XZ
|
||||
^XA
|
||||
^MMT
|
||||
^PW256
|
||||
^LL0144
|
||||
^LS0
|
||||
^FT160,125^BQN,2,3
|
||||
^FH\^FDLA,{PART}^FS
|
||||
^FT19,40^A0N,23,21^FH\^FD{PART}^FS
|
||||
^FT19,71^A0N,23,21^FH\^FDNum:{SN5}^FS
|
||||
^FT19,101^A0N,23,21^FH\^FD{DATE}^FS
|
||||
^FT19,126^A0N,23,21^FH\^FD{TIME}^FS
|
||||
^PQ1,0,1,Y^XZ
|
||||
38
config/label_templates/RM1.prn
Normal file
38
config/label_templates/RM1.prn
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
CT~~CD,~CC^~CT~
|
||||
^XA
|
||||
~TA000
|
||||
~JSN
|
||||
^LT0
|
||||
^MNW
|
||||
^MTT
|
||||
^PON
|
||||
^PMN
|
||||
^LH0,0
|
||||
^JMA
|
||||
^PR2,2
|
||||
~SD25
|
||||
^JUS
|
||||
^LRN
|
||||
^CI27
|
||||
^PA0,1,1,0
|
||||
^XZ
|
||||
^XA
|
||||
^MMT
|
||||
^PW679
|
||||
^LL200
|
||||
^LS0
|
||||
^FT240,56^A0R,44,43^FH\^CI28^FDRM 1^FS^CI27
|
||||
^FO222,55^GB8,61,4^FS
|
||||
^FT137,163^A0B,42,41^FH\^CI28^FDRM 1^FS^CI27
|
||||
^FO148,103^GB8,57,4^FS
|
||||
^FT398,160^A0B,42,43^FH\^CI28^FDRM 1^FS^CI27
|
||||
^FO404,99^GB8,61,4^FS
|
||||
^FT502,56^A0R,44,43^FH\^CI28^FDRM 1^FS^CI27
|
||||
^FO484,55^GB8,61,4^FS
|
||||
^LRY^FO222,116^GB60,0,57^FS^LRN
|
||||
^LRY^FO2,1^GB676,0,198^FS^LRN
|
||||
^LRY^FO100,49^GB56,0,53^FS^LRN
|
||||
^LRY^FO356,42^GB56,0,56^FS^LRN
|
||||
^LRY^FO484,116^GB60,0,57^FS^LRN
|
||||
^PQ1,0,1,Y
|
||||
^XZ
|
||||
38
config/label_templates/RM2.prn
Normal file
38
config/label_templates/RM2.prn
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
CT~~CD,~CC^~CT~
|
||||
^XA
|
||||
~TA000
|
||||
~JSN
|
||||
^LT0
|
||||
^MNW
|
||||
^MTT
|
||||
^PON
|
||||
^PMN
|
||||
^LH0,0
|
||||
^JMA
|
||||
^PR2,2
|
||||
~SD25
|
||||
^JUS
|
||||
^LRN
|
||||
^CI27
|
||||
^PA0,1,1,0
|
||||
^XZ
|
||||
^XA
|
||||
^MMT
|
||||
^PW679
|
||||
^LL200
|
||||
^LS0
|
||||
^FT240,56^A0R,44,43^FH\^CI28^FDRM 2^FS^CI27
|
||||
^FO222,55^GB8,61,4^FS
|
||||
^FT137,163^A0B,42,41^FH\^CI28^FDRM 2^FS^CI27
|
||||
^FO148,103^GB8,57,4^FS
|
||||
^FT398,160^A0B,42,43^FH\^CI28^FDRM 2^FS^CI27
|
||||
^FO404,99^GB8,61,4^FS
|
||||
^FT502,63^A0R,44,43^FH\^CI28^FDRM 2^FS^CI27
|
||||
^FO484,55^GB8,61,4^FS
|
||||
^LRY^FO222,116^GB60,0,57^FS^LRN
|
||||
^LRY^FO2,1^GB676,0,198^FS^LRN
|
||||
^LRY^FO100,49^GB56,0,53^FS^LRN
|
||||
^LRY^FO356,42^GB56,0,56^FS^LRN
|
||||
^LRY^FO484,116^GB60,0,57^FS^LRN
|
||||
^PQ1,0,1,Y
|
||||
^XZ
|
||||
|
|
@ -8,6 +8,7 @@ digital_io: absent
|
|||
second_leak_test: absent
|
||||
; archive_synchronizer: present
|
||||
; label_printer: present
|
||||
; extra_label_printer: absent
|
||||
; multicomp: present
|
||||
; neo_pixels: present
|
||||
; remote_api: present
|
||||
|
|
@ -61,7 +62,7 @@ printer: ttp247
|
|||
|
||||
[tecna_t3]
|
||||
model: t3l
|
||||
; port: ?
|
||||
port: COM4
|
||||
baudrate: 115200
|
||||
admin_pin: 603
|
||||
modify_pin: 603
|
||||
|
|
@ -114,7 +115,6 @@ r nominale: 1000000000
|
|||
tolleranza_resistenza_pos: 10
|
||||
tolleranza_resistenza_neg: 5
|
||||
prova_tenuta_abilitata: x
|
||||
config_elettrovalvole: 0
|
||||
warning_img:
|
||||
tempo_pre_riempimento: 0
|
||||
pressione_pre_riempimento: 1000
|
||||
|
|
@ -127,7 +127,8 @@ pressione_di_test_delta_minimo: 30
|
|||
pressione_di_test: 15000
|
||||
pressione_di_test_delta_massimo: 30
|
||||
tempo_svuotamento: 1
|
||||
pressione_svuotmento: 100
|
||||
pressione_svuotamento: 100
|
||||
config_elettrovalvole: 0
|
||||
prova_tenuta_abilitata_2:
|
||||
tempo_pre_riempimento_2: 0
|
||||
pressione_pre_riempimento_2: 1000
|
||||
|
|
@ -140,7 +141,8 @@ pressione_di_test_delta_minimo_2: 200
|
|||
pressione_di_test_2: 1000
|
||||
pressione_di_test_delta_massimo_2: 200
|
||||
tempo_svuotamento_2: 1
|
||||
pressione_svuotmento_2: 100
|
||||
pressione_svuotamento_2: 100
|
||||
config_elettrovalvole_2: 0
|
||||
test_visione_abilitato:
|
||||
ricetta_visione: termorestringente_923578.ini
|
||||
stampa_etichetta_abilitata: x
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ description = ST-TEN-5 IVECO DAILY ELETTRICO
|
|||
archive_synchronizer: absent
|
||||
uvc_camera: absent
|
||||
label_printer: present
|
||||
extra_label_printer: present
|
||||
remote_api: absent
|
||||
tecna_t3: present
|
||||
digital_io: present
|
||||
|
|
@ -16,7 +17,7 @@ model: t3l
|
|||
|
||||
[recipe]
|
||||
recipe_name_field: codice_ricetta
|
||||
part_number_field: codice_prodotto
|
||||
part_number_field: codice_ricetta
|
||||
label_template_field: modello_etichetta
|
||||
description_field: descrizione
|
||||
|
||||
|
|
@ -33,6 +34,8 @@ printer: xlp504
|
|||
id: USB-5862,BID#0
|
||||
|
||||
[recipes_defaults]
|
||||
|
||||
|
||||
codice_ricetta: specificare ricetta
|
||||
cliente: IVECO
|
||||
part_number: specificare part number
|
||||
|
|
@ -49,16 +52,16 @@ numero sensori presenza (sp):0
|
|||
prova_tenuta_abilitata: x
|
||||
tempo_pre_riempimento: 0
|
||||
pressione_pre_riempimento: 1000
|
||||
tempo_riempimento: 10
|
||||
tempo_riempimento: 5
|
||||
tempo_assestamento: 10
|
||||
percentuale_minima_pressione_assestamento: 5
|
||||
percentuale_massima_pressione_assestamento: 5
|
||||
tempo_di_test: 10
|
||||
pressione_di_test_delta_minimo: 30
|
||||
pressione_di_test: 6000
|
||||
pressione_di_test: 5000
|
||||
pressione_di_test_delta_massimo: 30
|
||||
tempo_svuotamento: 1
|
||||
pressione_svuotmento: 100
|
||||
pressione_svuotamento: 100
|
||||
|
||||
prova_tenuta_abilitata_2:
|
||||
tempo_pre_riempimento_2: 0
|
||||
|
|
@ -72,8 +75,8 @@ pressione_di_test_delta_minimo_2: 200
|
|||
pressione_di_test_2: 1000
|
||||
pressione_di_test_delta_massimo_2: 200
|
||||
tempo_svuotamento_2: 1
|
||||
pressione_svuotmento_2: 100
|
||||
pressione_svuotamento_2: 100
|
||||
|
||||
stampa_etichetta_abilitata: x
|
||||
modello_etichetta: ETA30x16.prn
|
||||
modello_etichetta: ETA30x16_203dpi.prn
|
||||
descrizione: inserire descrizione ricetta
|
||||
|
|
@ -38,7 +38,7 @@ pressione_di_test_delta_minimo: 30
|
|||
pressione_di_test: 7000
|
||||
pressione_di_test_delta_massimo: 30
|
||||
tempo_svuotamento: 1
|
||||
pressione_svuotmento: 100
|
||||
pressione_svuotamento: 100
|
||||
config_elettrovalvole: 0
|
||||
prova_tenuta_abilitata_2: x
|
||||
tempo_pre_riempimento_2: 0
|
||||
|
|
@ -52,7 +52,7 @@ pressione_di_test_delta_minimo_2: 30
|
|||
pressione_di_test_2: 15000
|
||||
pressione_di_test_delta_massimo_2: 30
|
||||
tempo_svuotamento_2: 1
|
||||
pressione_svuotmento_2: 100
|
||||
pressione_svuotamento_2: 100
|
||||
config_elettrovalvole_2: 1
|
||||
|
||||
[label_printer]
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ try:
|
|||
self.components_specs = {
|
||||
"archive_synchronizer": {"c": ArchiveSynchronizer},
|
||||
"label_printer": {"c": Os_Label_Printer, "t": False},
|
||||
"extra_label_printer": {"c": Os_Label_Printer, "t": False},
|
||||
"multicomp": {"c": Multicomp730424, "k": {"paused": True}},
|
||||
"remote_api": {"c": RemoteAPI, "k": {"main": self}},
|
||||
"screwdriver": {"c": TecnaScrewdriver, "k": {"paused": True}},
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
,5803033719,1,priorità 1,,,,
|
||||
,5803034025,1,priorità 1,,,,
|
||||
,5803034029,1,priorità 1,,,,
|
||||
,5803034807,1,priorità 1,,,,
|
||||
,5803034807,1,priorità 1,"RM1,RM2",2,1,
|
||||
,5803036737,1,priorità 1,,,,
|
||||
,5803041432,1,priorità 1,,,,
|
||||
,5803041433,1,priorità 1,,,,
|
||||
|
|
|
|||
|
|
|
@ -1,4 +1,4 @@
|
|||
codice_ricetta,cliente,codice_prodotto,descrizione,avvitatura_abilitata,viti,prova_tenuta_abilitata,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotmento,stampa_etichetta_abilitata,modello_etichetta
|
||||
codice_ricetta,cliente,codice_prodotto,descrizione,avvitatura_abilitata,viti,prova_tenuta_abilitata,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotamento,stampa_etichetta_abilitata,modello_etichetta
|
||||
FUGA,,FUGA,Fuga calibrata,,,x,5,10,10,10,10,5,7000,5,1,100,x,ETA30x16.prn
|
||||
R54080,IVECO,5802860939 R.03,Daily Himatic,,,x,5,5,10,10,5,30,5000,30,1,100,x,ETA30x16.prn
|
||||
R54081,IVECO,5802831453 R.03,Daily Himatic,,,x,5,5,10,10,5,30,5000,30,1,100,x,ETA30x16.prn
|
||||
|
|
|
|||
|
|
|
@ -1,4 +1,4 @@
|
|||
codice_ricetta,cliente,codice_prodotto,prova_tenuta_abilitata,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotmento,stampa_etichetta_abilitata,modello_etichetta
|
||||
codice_ricetta,cliente,codice_prodotto,prova_tenuta_abilitata,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotamento,stampa_etichetta_abilitata,modello_etichetta
|
||||
5802831451,IVECO,5802831451 R.02,x,5,1,5,10,5,30,5000,0,1,100,x,ETA37x13.prn
|
||||
5802831453,IVECO,5802831453 R.02,x,5,1,5,10,5,30,5000,0,1,100,x,ETA37x13.prn
|
||||
5802860512,IVECO,5802860512 R.02,x,5,1,5,10,5,30,5000,0,1,100,x,ETA37x13.prn
|
||||
|
|
|
|||
|
|
|
@ -1,4 +1,4 @@
|
|||
pn,rc,cliente,codice_prodotto,prova_tenuta_abilitata,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotmento,stampa_etichetta_abilitata,modello_etichetta
|
||||
pn,rc,cliente,codice_prodotto,prova_tenuta_abilitata,tempo_riempimento,tempo_assestamento,percentuale_minima_pressione_assestamento,percentuale_massima_pressione_assestamento,tempo_di_test,pressione_di_test_delta_minimo,pressione_di_test,pressione_di_test_delta_massimo,tempo_svuotamento,pressione_svuotamento,stampa_etichetta_abilitata,modello_etichetta
|
||||
5802850925,5802850925,IVECO,j5802850925,x,5,10,10,10,10,30,5000,5,0,0,x,6
|
||||
5802850926,5802850926,IVECO,j5802850926,x,5,10,10,10,10,30,5000,5,0,0,x,6
|
||||
5802850929,5802850929,IVECO,j5802850929,x,5,10,10,10,10,30,5000,5,0,0,x,6
|
||||
|
|
|
|||
|
|
|
@ -11,4 +11,5 @@ class Print_Step_Editor(Editor):
|
|||
"labeltxt_3": self.labeltxt_3,
|
||||
"labeltxt_4": self.labeltxt_4,
|
||||
"labeltxt_5": self.labeltxt_5,
|
||||
"extra_label": self.extra_label,
|
||||
})
|
||||
|
|
|
|||
|
|
@ -75,13 +75,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_34">
|
||||
<property name="text">
|
||||
<string>Campo testo 5</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="labeltxt_1">
|
||||
<property name="minimumSize">
|
||||
|
|
@ -132,6 +125,30 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_35">
|
||||
<property name="text">
|
||||
<string>Campo testo 5</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_34">
|
||||
<property name="text">
|
||||
<string>Etichette supplementari</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QLineEdit" name="extra_label">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
|||
|
|
@ -209,8 +209,8 @@ class Recipe_Selection(Widget):
|
|||
},
|
||||
"instruction": {
|
||||
"num_tape": int(self.get_def(row,"numero nastri (n)")),
|
||||
"num_piece": int(self.get_def(row,"numero sensori anello (sa)")),
|
||||
"num_ring": int(self.get_def(row,"numero sensori presenza (sp)"))
|
||||
"num_ring": int(self.get_def(row,"numero sensori anello (sa)")),
|
||||
"num_piece": int(self.get_def(row,"numero sensori presenza (sp)"))
|
||||
},
|
||||
"leak_1": {
|
||||
"pre_filling_time": int(row.get("tempo_pre_riempimento", defaults["tempo_pre_riempimento"])),
|
||||
|
|
@ -224,7 +224,7 @@ class Recipe_Selection(Widget):
|
|||
"test_pressure": int(row.get("pressione_di_test", defaults["pressione_di_test"])),
|
||||
"test_pressure_max_delta": int(row.get("pressione_di_test_delta_massimo", defaults["pressione_di_test_delta_massimo"])),
|
||||
"flush_time": int(row.get("tempo_svuotamento", defaults["tempo_svuotamento"])),
|
||||
"flush_pressure": int(row.get("pressione_svuotmento", defaults["pressione_svuotmento"])),
|
||||
"flush_pressure": int(row.get("pressione_svuotamento", defaults["pressione_svuotamento"])),
|
||||
"relay_config": int(row.get("config_elettrovalvole", defaults["config_elettrovalvole"]))
|
||||
},
|
||||
"leak_2": {
|
||||
|
|
@ -239,7 +239,7 @@ class Recipe_Selection(Widget):
|
|||
"test_pressure": int(row.get("pressione_di_test_2", defaults["pressione_di_test_2"])),
|
||||
"test_pressure_max_delta": int(row.get("pressione_di_test_delta_massimo_2", defaults["pressione_di_test_delta_massimo_2"])),
|
||||
"flush_time": int(row.get("tempo_svuotamento_2", defaults["tempo_svuotamento_2"])),
|
||||
"flush_pressure": int(row.get("pressione_svuotmento_2", defaults["pressione_svuotmento_2"])),
|
||||
"flush_pressure": int(row.get("pressione_svuotamento_2", defaults["pressione_svuotamento_2"])),
|
||||
"relay_config": int(row.get("config_elettrovalvole_2", defaults["config_elettrovalvole_2"]))
|
||||
},
|
||||
"vision": {
|
||||
|
|
@ -252,6 +252,7 @@ class Recipe_Selection(Widget):
|
|||
"labeltxt_3": row.get("testo_etich_3", ""),
|
||||
"labeltxt_4": row.get("testo_etich_4", ""),
|
||||
"labeltxt_5": row.get("testo_etich_5", ""),
|
||||
"extra_label": row.get("etichette_supplementari", ""),
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -392,7 +393,7 @@ class Recipe_Selection(Widget):
|
|||
"pressione_di_test",
|
||||
"pressione_di_test_delta_massimo",
|
||||
"tempo_svuotamento",
|
||||
"pressione_svuotmento",
|
||||
"pressione_svuotamento",
|
||||
"prova_tenuta_abilitata_2",
|
||||
"tempo_pre_riempimento_2",
|
||||
"pressione_pre_riempimento_2",
|
||||
|
|
@ -405,7 +406,7 @@ class Recipe_Selection(Widget):
|
|||
"pressione_di_test_2",
|
||||
"pressione_di_test_delta_massimo_2",
|
||||
"tempo_svuotamento_2",
|
||||
"pressione_svuotmento_2",
|
||||
"pressione_svuotamento_2",
|
||||
"test_visione_abilitato",
|
||||
"ricetta_visione",
|
||||
"stampa_etichetta_abilitata",
|
||||
|
|
@ -442,7 +443,7 @@ class Recipe_Selection(Widget):
|
|||
"pressione_di_test": steps["leak_1"].spec["test_pressure"],
|
||||
"pressione_di_test_delta_massimo": steps["leak_1"].spec["test_pressure_max_delta"],
|
||||
"tempo_svuotamento": steps["leak_1"].spec["flush_time"],
|
||||
"pressione_svuotmento": steps["leak_1"].spec["flush_pressure"],
|
||||
"pressione_svuotamento": steps["leak_1"].spec["flush_pressure"],
|
||||
"prova_tenuta_abilitata_2": "x" if recipe.spec["leak_2"] else "",
|
||||
"tempo_pre_riempimento_2": steps["leak_2"].spec["pre_filling_time"],
|
||||
"pressione_pre_riempimento_2": steps["leak_2"].spec["pre_filling_pressure"],
|
||||
|
|
@ -455,7 +456,7 @@ class Recipe_Selection(Widget):
|
|||
"pressione_di_test_2": steps["leak_2"].spec["test_pressure"],
|
||||
"pressione_di_test_delta_massimo_2": steps["leak_2"].spec["test_pressure_max_delta"],
|
||||
"tempo_svuotamento_2": steps["leak_2"].spec["flush_time"],
|
||||
"pressione_svuotmento_2": steps["leak_2"].spec["flush_pressure"],
|
||||
"pressione_svuotamento_2": steps["leak_2"].spec["flush_pressure"],
|
||||
"test_visione_abilitato": recipe.spec["vision"],
|
||||
"ricetta_visione": steps["vision"].spec["recipe"],
|
||||
"stampa_etichetta_abilitata": "x" if recipe.spec["print"] else "",
|
||||
|
|
|
|||
|
|
@ -586,6 +586,8 @@ class Test(Widget):
|
|||
|
||||
# PRINT EXTRA LABELS IF NEEDED
|
||||
if "extra_label_printer" in self.components.keys():
|
||||
self.components["extra_label_printer"].print_label(label, context=context)
|
||||
labels=printer_fields["extra_label"].split(",")
|
||||
for label in labels:
|
||||
self.components["extra_label_printer"].print_label(f"{label}.prn", context=context)
|
||||
self.log.info(f"cycle printed: {context!r}")
|
||||
return compiled_label
|
||||
|
|
|
|||
BIN
tape_black.png
Normal file
BIN
tape_black.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
BIN
tape_white.png
Normal file
BIN
tape_white.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
Loading…
Reference in New Issue
Block a user