greathector7

inlineformset problema no despliega

Oct 3rd, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 21.91 KB | None | 0 0
  1. forms:
  2. Padre:
  3.  
  4. from django import forms
  5. from django.forms.models import modelformset_factory, inlineformset_factory
  6. from rcivil.models import PartidaUnionEhecho, HijosUnionEstable
  7. # from parsley.decorators import parsleyfy
  8.  
  9.  
  10. class PartidaUnionEhechoForms(forms.ModelForm):
  11.  
  12.     class Meta:
  13.         model = PartidaUnionEhecho
  14.  
  15.         fields = [
  16.             'to1',
  17.             'acta',
  18.             'letra',
  19.             'fo',
  20.             'a',
  21.             'art',
  22.             'nompre',
  23.             'nomsec',
  24.             'conm',
  25.             'cedm',
  26.             'edacm',
  27.             'fechm',
  28.             'edocm',
  29.             'nacm',
  30.             'profm',
  31.             'cnam',
  32.             'edom',
  33.             'nomp',
  34.             'nomm',
  35.             # 'prpc',
  36.             # 'prmc',
  37.             # 'edpcm',
  38.             'edmcm',
  39.             'dire',
  40.  
  41.             'conf',
  42.             'cedf',
  43.             'edacf',
  44.             'fenf',
  45.             'fenm',
  46.             'fechf',
  47.             'edocf',
  48.             # 'nacf',
  49.             'proff',
  50.             'cnaf',
  51.             'edof',
  52.             'nomp1',
  53.             'nomm1',
  54.             # 'prpcf',
  55.             # 'prmcf',
  56.             # 'edpcf',
  57.             # 'edmcf',
  58.             'dire1',
  59.            
  60.             'fechama',
  61.             'hora',
  62.             'hor',
  63.             'tes1',
  64.             'cedt1',
  65.             'proft1',
  66.             'tes2',
  67.             'cedt2',
  68.             'proft2',
  69.             'dirt1',
  70.             'dirt2',
  71.             'tes3',
  72.             'cedt3',
  73.             'proft3',
  74.             'tes4',
  75.             'cedt4',
  76.             'proft4',
  77.             'dirt3',
  78.             'dirt4',
  79.             'not1',
  80.             'not2',
  81.             'not3',
  82.             'not4',
  83.             # 'edp1',
  84.             # 'edfm1',
  85.             # 'edfpm1',
  86.             # 'edm1',
  87.             'dir3',
  88.         ]
  89.         labels = {
  90.             'to1': 'Tomo',
  91.             'acta': 'Acta',
  92.             'letra': 'Letra',
  93.             'fo': 'Folio',
  94.             'a': 'Año',
  95.             'art': 'Articulo',
  96.             'nompre': 'Prefecto(a)',
  97.             'nomsec': 'Secretario(a)',
  98.             'conm': 'Nombre',
  99.             'cedm': 'Cedula',
  100.             'edacm': 'Edad',
  101.             'fechm': 'Fecha Union',
  102.             'edocm': 'E-Civil',
  103.             'nacm': 'Nacimiento',
  104.             'profm': 'Profesion',
  105.             'cnam': 'Ciudad',
  106.             'edom': 'Edo',
  107.             'nomp': 'Padre',
  108.             'nomm': 'Madre',
  109.             # 'prpc': '-prpc',
  110.             # 'prmc': '-prmc',
  111.             # 'edpcm': '-edpcm',
  112.             'edmcm': 'edmcm',
  113.             'dire': 'Direccion',
  114.  
  115.             'conf': 'Nombre',
  116.             'cedf': 'Cedula',
  117.             'edacf': 'Edad',
  118.             'fenf': 'Naci',
  119.             'fenm': 'Naci',
  120.             'fechf': '-fechf',
  121.             'edocf': 'E-Civil',
  122.             # 'nacf': '-nacf',
  123.             'proff': 'Profesion',
  124.             'cnaf': 'Ciudad',
  125.             'edof': 'Edo',
  126.             'nomp1': 'Padre', # Nombre Padre
  127.             'nomm1': 'Madre', # nombre madre
  128.             # 'prpcf': '-prpcf',
  129.             # 'prmcf': '-prmcf',
  130.             # 'edpcf': '-edpcf',
  131.             # 'edmcf': '-edmcf',
  132.             'dire1': 'Direccion',
  133.  
  134.             'fechama': 'Fecha',     #fecha matrimonio
  135.             'hora': 'Hora',         #Hora Matrimonio
  136.             'hor': 'Horario',
  137.  
  138.             'tes1': 'Nombre',
  139.             'cedt1': 'Cedula',
  140.             'proft1': 'Profesion',
  141.  
  142.             'tes2': 'Nombre',
  143.             'cedt2': 'Cedula',
  144.             'proft2': 'Profesion',
  145.  
  146.             'dirt1': 'Direccion',
  147.             'dirt2': 'Direccion',
  148.  
  149.             'tes3': 'Nombre',
  150.             'cedt3': 'Cedula',
  151.             'proft3': 'Profesion',
  152.  
  153.             'tes4': 'Nombre',
  154.             'cedt4': 'Cedula',
  155.             'proft4': 'Profesion',
  156.  
  157.             'dirt3': 'Direccion',
  158.             'dirt4': 'Direccion',
  159.  
  160.             'not1': 'Nota 1',
  161.             'not2': 'Nota 2',
  162.             'not3': 'Nota 3',
  163.             'not4': 'Nota 4',
  164.  
  165.             # 'edp1': '',
  166.             # 'edfm1': '',
  167.             # 'edfpm1': '',
  168.             # 'edm1': '',
  169.             'dir3': 'Direccion del Acto',
  170.         }
  171.         widgets = {
  172.             'to1': forms.TextInput(
  173.                 attrs={'class': 'form-control'}),
  174.             'acta': forms.TextInput(
  175.                 attrs={'class': 'form-control col-md-7'}),
  176.             'letra': forms.TextInput(
  177.                 attrs={'class': 'form-control col-md-7'}),
  178.             'fo': forms.TextInput(
  179.                 attrs={'class': 'form-control col-md-7'}),
  180.             'a': forms.TextInput(
  181.                 attrs={'class': 'form-control col-md-7'}),
  182.             'art': forms.TextInput(
  183.                 attrs={'class': 'form-control col-md-7'}),
  184.             'nompre': forms.TextInput(
  185.                 attrs={'class': 'form-control col-md-7'}),
  186.             'nomsec': forms.TextInput(
  187.                 attrs={'class': 'form-control col-md-7'}),
  188.             'conm': forms.TextInput(
  189.                 attrs={'class': 'form-control col-md-7'}),
  190.             'cedm': forms.TextInput(
  191.                 attrs={'class': 'form-control col-md-7 cedula'}),
  192.             'edacm': forms.TextInput(
  193.                 attrs={'class': 'form-control col-md-7'}),
  194.             'fechm': forms.DateInput(
  195.                 format=('%Y-%m-%d'),
  196.                 attrs={'class': 'form-control col-md-7', 'type': 'date'}),
  197.             'edocm': forms.Select(
  198.                 attrs={'class': 'form-control col-md-7'}),
  199.             'nacm': forms.TextInput(
  200.                 attrs={'class': 'form-control col-md-7'}),
  201.             'profm': forms.TextInput(
  202.                 attrs={'class': 'form-control col-md-7'}),
  203.             'cnam': forms.TextInput(
  204.                 attrs={'class': 'form-control col-md-7'}),
  205.             'edom': forms.TextInput(
  206.                 attrs={'class': 'form-control col-md-7 estado'}),
  207.             'nomp': forms.TextInput(
  208.                 attrs={'class': 'form-control col-md-7'}),
  209.             'nomm': forms.TextInput(
  210.                 attrs={'class': 'form-control col-md-7'}),
  211.             # 'prpc': forms.TextInput(
  212.             #     attrs={'class': 'form-control col-md-7'}),
  213.             # 'prmc': forms.TextInput(
  214.             #     attrs={'class': 'form-control col-md-7'}),
  215.             # 'edpcm': forms.TextInput(
  216.             #     attrs={'class': 'form-control col-md-7'}),
  217.             'edmcm': forms.TextInput(
  218.                 attrs={'class': 'form-control col-md-7'}),
  219.             'dire': forms.TextInput(
  220.                 attrs={'class': 'form-control col-md-7'}),
  221.  
  222.  
  223.             'conf': forms.TextInput(
  224.                 attrs={'class': 'form-control col-md-7'}),
  225.             'cedf': forms.TextInput(
  226.                 attrs={'class': 'form-control col-md-7 cedula'}),
  227.             'edacf': forms.TextInput(
  228.                 attrs={'class': 'form-control col-md-7'}),
  229.             'fenf': forms.DateInput(
  230.                 format=('%Y-%m-%d'),
  231.                 attrs={'class': 'form-control col-md-7', 'type': 'date'}),
  232.             'fenm': forms.DateInput(
  233.                 format=('%Y-%m-%d'),
  234.                 attrs={'class': 'form-control col-md-7', 'type': 'date'}),
  235.             'fechf': forms.TextInput(
  236.                 attrs={'class': 'form-control col-md-7'}),
  237.             'edocf': forms.Select(
  238.                 attrs={'class': 'form-control col-md-7'}),
  239.             # 'nacf': forms.TextInput(
  240.             #     attrs={'class': 'form-control col-md-7'}),
  241.             'proff': forms.TextInput(
  242.                 attrs={'class': 'form-control col-md-7'}),
  243.             'cnaf': forms.TextInput(
  244.                 attrs={'class': 'form-control col-md-7'}),
  245.             'edof': forms.TextInput(
  246.                 attrs={'class': 'form-control col-md-7 estado'}),
  247.             'nomp1': forms.TextInput(
  248.                 attrs={'class': 'form-control col-md-7'}),
  249.             'nomm1': forms.TextInput(
  250.                 attrs={'class': 'form-control col-md-7'}),
  251.             # 'prpcf': forms.TextInput(
  252.             #     attrs={'class': 'form-control col-md-7'}),
  253.             # 'prmcf': forms.TextInput(
  254.             #     attrs={'class': 'form-control col-md-7'}),
  255.             # 'edpcf': forms.TextInput(
  256.             #     attrs={'class': 'form-control col-md-7'}),
  257.             # 'edmcf': forms.TextInput(
  258.             #     attrs={'class': 'form-control col-md-7'}),
  259.             'dire1': forms.TextInput(
  260.                 attrs={'class': 'form-control col-md-7'}),
  261.  
  262.  
  263.             'fechama': forms.DateInput(
  264.                 format=('%Y-%m-%d'),
  265.                 attrs={'class': 'form-control col-md-7', 'type': 'date'}),
  266.             'hora': forms.TextInput(
  267.                 attrs={'class': 'form-control col-md-7 timen'}),
  268.             'hor': forms.Select(
  269.                 attrs={'class': 'form-control col-md-7'}),
  270.             'tes1': forms.TextInput(
  271.                 attrs={'class': 'form-control col-md-7'}),
  272.             'cedt1': forms.TextInput(
  273.                 attrs={'class': 'form-control col-md-7 cedula'}),
  274.             'proft1': forms.TextInput(
  275.                 attrs={'class': 'form-control col-md-7'}),
  276.             'tes2': forms.TextInput(
  277.                 attrs={'class': 'form-control col-md-7'}),
  278.             'cedt2': forms.TextInput(
  279.                 attrs={'class': 'form-control col-md-7 cedula'}),
  280.             'proft2': forms.TextInput(
  281.                 attrs={'class': 'form-control col-md-7'}),
  282.             'dirt1': forms.TextInput(
  283.                 attrs={'class': 'form-control col-md-7'}),
  284.             'dirt2': forms.TextInput(
  285.                 attrs={'class': 'form-control col-md-7'}),
  286.             'tes3': forms.TextInput(
  287.                 attrs={'class': 'form-control col-md-7'}),
  288.             'cedt3': forms.TextInput(
  289.                 attrs={'class': 'form-control col-md-7 cedula'}),
  290.             'proft3': forms.TextInput(
  291.                 attrs={'class': 'form-control col-md-7'}),
  292.             'tes4': forms.TextInput(
  293.                 attrs={'class': 'form-control col-md-7'}),
  294.             'cedt4': forms.TextInput(
  295.                 attrs={'class': 'form-control col-md-7 cedula'}),
  296.             'proft4': forms.TextInput(
  297.                 attrs={'class': 'form-control col-md-7'}),
  298.             'dirt3': forms.TextInput(
  299.                 attrs={'class': 'form-control col-md-7'}),
  300.             'dirt4': forms.TextInput(
  301.                 attrs={'class': 'form-control col-md-7'}),
  302.             'not1': forms.TextInput(
  303.                 attrs={'class': 'form-control col-md-7'}),
  304.             'not2': forms.TextInput(
  305.                 attrs={'class': 'form-control col-md-7'}),
  306.             'not3': forms.TextInput(
  307.                 attrs={'class': 'form-control col-md-7'}),
  308.             'not4': forms.TextInput(
  309.                 attrs={'class': 'form-control col-md-7'}),
  310.             # 'edp1': forms.TextInput(
  311.             #     attrs={'class': 'form-control col-md-7'}),
  312.             # 'edfm1': forms.TextInput(
  313.             #     attrs={'class': 'form-control col-md-7'}),
  314.             # 'edfpm1': forms.TextInput(
  315.             #     attrs={'class': 'form-control col-md-7'}),
  316.             # 'edm1': forms.TextInput(
  317.             #     attrs={'class': 'form-control col-md-7'}),
  318.             'dir3': forms.TextInput(
  319.                 attrs={'class': 'form-control col-md-7'}),
  320.         }
  321.  
  322.  
  323. class HijosUnionEstableForm(forms.ModelForm):
  324.  
  325.     class Meta:
  326.         model = HijosUnionEstable
  327.  
  328.         fields = [
  329.             'nomhijo',
  330.             'dident',
  331.             'edad',
  332.             'anaci',
  333.             'fecha',
  334.             'oficina',
  335.             'reconocido',
  336.         ]
  337.         labels = {
  338.             'nomhijo': 'Nombre Completo',
  339.             'dident': 'Documento Identidad',
  340.             'edad': 'Edad',
  341.             'anaci': 'Acta Nacimiento N°',
  342.             'fecha': 'Fecha nac',
  343.             'oficina': 'Oficina',
  344.             'reconocido': 'Reconocido',
  345.         }
  346.         widgets = {
  347.             'nomhijo': forms.TextInput(
  348.                 attrs={'class': 'form-control col-md-7 '}),
  349.             'dident': forms.TextInput(
  350.                 attrs={'class': 'form-control col-md-7'}),
  351.             'edad': forms.TextInput(
  352.                 attrs={'class': 'form-control col-md-7 '}),
  353.             'anaci': forms.TextInput(
  354.                 attrs={'class': 'form-control col-md-7 '}),
  355.             'fecha': forms.DateInput(
  356.                 format=('%Y-%m-%d'),
  357.                 attrs={'class': 'form-control col-md-7', 'type': 'date'}),
  358.             'oficina': forms.TextInput(
  359.                 attrs={'class': 'form-control col-md-7 '}),
  360.             'reconocido': forms.TextInput(
  361.                 attrs={'class': 'form-control col-md-7 '}),
  362.         }
  363.  
  364.  
  365. HijosUnionEstableFormSet = inlineformset_factory(
  366.     PartidaUnionEhecho, HijosUnionEstable,
  367.     form=HijosUnionEstableForm, extra=4)
  368.  
  369.  
  370.  
  371. ------------------------------------------------------------------------------------------------------------------
  372. vista
  373. class UnionEstableCreate(CreateView):
  374.     model = PartidaUnionEhecho
  375.     form_class = PartidaUnionEhechoForms
  376.     initial = {'nompre': prefectoactual(),
  377.                'fechama': fechaactual(),
  378.                'a': anoactual(),
  379.                'hora': '08:00',
  380.                'hor': 'AM',
  381.                }
  382.     template_name = 'rcivil/unionestable_form_wizard.html'
  383.  
  384.  
  385. class UnionEstableCreate2(CreateView):
  386.     model = PartidaUnionEhecho
  387.     template_name = 'rcivil/form.html'
  388.     form_class = PartidaUnionEhechoForms
  389.     initial = {'nompre': prefectoactual(),
  390.                'fechama': fechaactual(),
  391.                'a': anoactual(),
  392.                'hora': '08:00',
  393.                'hor': 'AM',
  394.                }
  395.     def get(self, request, *args, **kwargs):
  396.         self.object = None
  397.         form_class = self.get_form_class()
  398.         form = self.get_form(form_class)
  399.         formset1 = HijosUnionEstableFormSet()
  400.         return self.render_to_response(
  401.             self.get_context_data(
  402.                 form=form, formset=formset1))
  403.  
  404.     def post(self, request, *args, **kwargs):
  405.         form_class = self.get_form_class()
  406.         form = self.get_form(form_class)
  407.         formset1 = HijosUnionEstableFormSet(request.POST)
  408.         if form.is_valid() and formset1.is_valid():
  409.             return self.form_valid(form, formset1)
  410.         else:
  411.             return self.form_invalid(form, formset1)
  412.  
  413.     def form_valid(self, form, formset1):
  414.         self.object = form.save()
  415.         formset1.instance = self.object
  416.         formset1.save()
  417.         return HttpResponseRedirect(self.success_url)
  418.  
  419.     def form_invalid(self, form, formset1):
  420.         return self.render_to_response(
  421.             self.get_context_data(
  422.                 form=form, formset1=formset1))
  423.  
  424. ---------------------------------------------------------------------------------------------------------------------
  425. templates:
  426. {% extends 'base/plataforma.html' %}
  427. {% block contenido %}
  428.  
  429. <div class="right_col" role="main">
  430.           <div class="">
  431.             <div class="page-title">
  432.               <div class="title_left">
  433.                 <h3>Despliegue automatico</h3>
  434.               </div>
  435.  
  436.               <div class="title_right">
  437.                 <div class="col-md-5 col-sm-5 col-xs-12 form-group pull-right top_search">
  438.                   <div class="input-group">
  439.                     <!-- <input type="text" class="form-control" placeholder="Buscar...">
  440.                     <span class="input-group-btn">
  441.                       <button class="btn btn-default" type="button">Ir!</button>
  442.                     </span> -->
  443.                   </div>
  444.                 </div>
  445.               </div>
  446.             </div>
  447.             <div class="clearfix"></div>
  448.             <div class="row">
  449.               <div class="col-md-12 col-sm-12 col-xs-12">
  450.                 <div class="x_panel">
  451.                   <div class="x_title">
  452.                     <h2>Profesiones <small>Busqueda de</small></h2>
  453.                     <ul class="nav navbar-right panel_toolbox">
  454.                       <li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
  455.                       </li>
  456.                       <li class="dropdown">
  457.                         <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-wrench"></i></a>
  458.                         <ul class="dropdown-menu" role="menu">
  459.                           <li><a href="#">Settings 1</a>
  460.                           </li>
  461.                           <li><a href="#">Settings 2</a>
  462.                           </li>
  463.                         </ul>
  464.                       </li>
  465.                       <li><a class="close-link"><i class="fa fa-close"></i></a>
  466.                       </li>
  467.                     </ul>
  468.                     <div class="clearfix"></div>
  469.                   </div>
  470.                   <div class="x_content">
  471.                     <br />
  472.                     <form id="registro-form" data-parsley-validate class="form-horizontal form-label-left" method="post">
  473.                       {% csrf_token %}
  474.                       {{ form.as_p }}
  475.  
  476.  
  477. {{ formset1.management_form }}
  478.  
  479. {% for hijos in formset1 %}
  480.  
  481.   <div class="row">
  482.  
  483.  
  484.           <div class="col-md-2">
  485.             <label>Nombre</label>
  486.             {% if hijos.nomhijo.errors %}
  487.               {% for error in hijos.nomhijo.errors %}
  488.               <div class="alert alert-danger alert-dismissible" role="alert">
  489.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  490.                   <span aria-hidden="true">&times;</span>
  491.                 </button>
  492.                 <strong>Error: </strong> {{ error|escape }}
  493.               </div>
  494.               {% endfor %}
  495.             {% endif %}
  496.             {{ hijos.nomhijo }}
  497.           </div>
  498.  
  499.  
  500.           <div class="col-md-2">
  501.             <label>Documento</label>
  502.             {% if hijos.dident.errors %}
  503.               {% for error in hijos.dident.errors %}
  504.               <div class="alert alert-danger alert-dismissible" role="alert">
  505.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  506.                   <span aria-hidden="true">&times;</span>
  507.                 </button>
  508.                 <strong>Error: </strong> {{ error|escape }}
  509.               </div>
  510.               {% endfor %}
  511.             {% endif %}
  512.             {{ hijos.dident }}
  513.           </div>
  514.  
  515.  
  516.           <div class="col-md-2">
  517.             <label>Edad</label>
  518.             {% if hijos.edad.errors %}
  519.               {% for error in hijos.edad.errors %}
  520.               <div class="alert alert-danger alert-dismissible" role="alert">
  521.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  522.                   <span aria-hidden="true">&times;</span>
  523.                 </button>
  524.                 <strong>Error: </strong> {{ error|escape }}
  525.               </div>
  526.               {% endfor %}
  527.             {% endif %}
  528.             {{ hijos.edad }}
  529.           </div>
  530.  
  531.           <div class="col-md-2">
  532.             <label>Estado</label>
  533.             {% if hijos.estatus.errors %}
  534.               {% for error in hijos.estatus.errors %}
  535.               <div class="alert alert-danger alert-dismissible" role="alert">
  536.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  537.                   <span aria-hidden="true">&times;</span>
  538.                 </button>
  539.                 <strong>Error: </strong> {{ error|escape }}
  540.               </div>
  541.               {% endfor %}
  542.             {% endif %}
  543.             {{ hijos.estatus }}
  544.           </div>
  545.  
  546.           <div class="col-md-4">
  547.             <label>Acta</label>
  548.             {% if hijos.anaci.errors %}
  549.               {% for error in hijos.anaci.errors %}
  550.               <div class="alert alert-danger alert-dismissible" role="alert">
  551.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  552.                   <span aria-hidden="true">&times;</span>
  553.                 </button>
  554.                 <strong>Error: </strong> {{ error|escape }}
  555.               </div>
  556.               {% endfor %}
  557.             {% endif %}
  558.             {{ hijos.anaci }}
  559.           </div>
  560.  
  561.           <div class="col-md-4">
  562.             <label>Fecha</label>
  563.             {% if hijos.fecha.errors %}
  564.               {% for error in hijos.fecha.errors %}
  565.               <div class="alert alert-danger alert-dismissible" role="alert">
  566.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  567.                   <span aria-hidden="true">&times;</span>
  568.                 </button>
  569.                 <strong>Error: </strong> {{ error|escape }}
  570.               </div>
  571.               {% endfor %}
  572.             {% endif %}
  573.             {{ hijos.fecha }}
  574.           </div>
  575.  
  576.           <div class="col-md-4">
  577.             <label>Oficina</label>
  578.             {% if hijos.oficina.errors %}
  579.               {% for error in hijos.oficina.errors %}
  580.               <div class="alert alert-danger alert-dismissible" role="alert">
  581.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  582.                   <span aria-hidden="true">&times;</span>
  583.                 </button>
  584.                 <strong>Error: </strong> {{ error|escape }}
  585.               </div>
  586.               {% endfor %}
  587.             {% endif %}
  588.             {{ hijos.oficina }}
  589.           </div>
  590.  
  591.           <div class="col-md-4">
  592.             <label>Reconocido</label>
  593.             {% if hijos.reconocido.errors %}
  594.               {% for error in hijos.reconocido.errors %}
  595.               <div class="alert alert-danger alert-dismissible" role="alert">
  596.                 <button type="button" class="close" data-dismiss="alert" aria-label="Close">
  597.                   <span aria-hidden="true">&times;</span>
  598.                 </button>
  599.                 <strong>Error: </strong> {{ error|escape }}
  600.               </div>
  601.               {% endfor %}
  602.             {% endif %}
  603.             {{ hijos.reconocido }}
  604.           </div>
  605.  
  606.  
  607.     </div>
  608. {% endfor %}
Add Comment
Please, Sign In to add comment