-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
App per importar les actuacions d’un altre curs #213
base: master
Are you sure you want to change the base?
Conversation
Per actualitzar els comentaris per descriure el procediment.
Mancava registrar l'app
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Molt divertit això d'anar a la bd del curs passat demanant les credencials. No he provat si funciona o no, entenc que @rafatecno1 ho ha provat.
Crec recordar que @amorilla i @juaky tenen altres maneres per importar actuacions del curs anterior. Si és així, caldria un setting per 'amagar' aquesta opció del menú, per tal que no sembli la solució oficial. A no ser, clar, que en @juaky i l' @amorilla els sembli que aquesta és la solució oficial.
Personalment, m'agradaria que totes les actuacions anteriors anessin a parar a una única actuació de tipus "Resum Històric" a la que només hi tingués accés psicopedagog i direcció. Crec que simplificaria el procés: no caldria el matxing de professors, no caldria el filtre per data inici de curs, ... .El resum anual podria, fins i tot, contenir altres dades com ara % de presencialitat de cursos anteriors, si se li han enviat cartes d'absentisme, nombre d'incidències i expulsions, etc. Tot només per direcció i psicopedagog (si el tutor ha de saber alguna cosa que el psicopedagog li creï una actuació per a ell)
Podríem, més endavant, ampliar aquest procés per passar els ítems de seguiment tutorial d'un curs a l'altre amb aquest sistema de la doble bd que està molt ben pensat. Tot el que hagi de passar d'un curs per l'altre.
Molt bona feina.
|
||
<div class="collapse" id="queson"><br> | ||
<p>Les actuacions són intervencions pedagògiques fetes entre un professional del centre, normalment tutors, coordinador pedagògic o cap d'estudis, i un alumne concret. No obstant, les actuacions generades en cursos anteriors són inaccessibles en aquest curs per defecte. La decisió de no incorporar-les al nou curs ve donada per raons de disseny del DjAu, que cal ser instal·lat de nou cada curs escolar.</p> | ||
<p>Per poder consultar-les cal mantenir les instal·lacions del DjAu dels cursos anteriors actives però inaccessibles per l'ús habitual. D'aquesta manera, determinats usuaris, eventualment els adscrits a Direcció i/o a psicopedagogia, poden encara consultar-les si en fos menester.</p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
<br> | ||
|
||
<div class="collapse" id="queson"><br> | ||
<p>Les actuacions són intervencions pedagògiques fetes entre un professional del centre, normalment tutors, coordinador pedagògic o cap d'estudis, i un alumne concret. No obstant, les actuacions generades en cursos anteriors són inaccessibles en aquest curs per defecte. La decisió de no incorporar-les al nou curs ve donada per raons de disseny del DjAu, que cal ser instal·lat de nou cada curs escolar.</p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
També pot ser amb la família crec recordar.
<p>Les actuacions són intervencions pedagògiques fetes entre un professional del centre, normalment tutors, coordinador pedagògic o cap d'estudis, i un alumne concret. No obstant, les actuacions generades en cursos anteriors són inaccessibles en aquest curs per defecte. La decisió de no incorporar-les al nou curs ve donada per raons de disseny del DjAu, que cal ser instal·lat de nou cada curs escolar.</p> | ||
<p>Per poder consultar-les cal mantenir les instal·lacions del DjAu dels cursos anteriors actives però inaccessibles per l'ús habitual. D'aquesta manera, determinats usuaris, eventualment els adscrits a Direcció i/o a psicopedagogia, poden encara consultar-les si en fos menester.</p> | ||
<br> | ||
<p><strong>Aquest mòdul del DjAu importa les actuacions dels cursos anteriors al curs actual</strong>, integrant-les igual que les actuals actuacions i permetent no haver d'accedir a instal·lacions anteriors per consultar antigues actuacions.</p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Caldria evitar usar l'escape html ò
i posar simplement el caracter que toqui, en aquest cas ò
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah sí? veus? sóc de la vella escola.... Abans de fer la PR vaig canviar expressament tooots els accents pels seus escapes.... No en tenia ni idea de que ara ja no calia fer-ho.
<form action="." method="post" enctype="multipart/form-data" target="{%if target %}{{target}}{%else%}_self{%endif%}">{% csrf_token %} | ||
|
||
{% for hidden in form.hidden_fields %} | ||
{{ hidden }} | ||
{% endfor %} | ||
|
||
{% for label, value in infoForm %} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please, usar form.html de base.
# Cal fer la cerca, perquè si n' hi ha de velles, s'habilita el botó per veure-les. | ||
actuacions_antigues = Actuacio.objects.filter( professional = professional, moment_actuacio__lte = data_inici_curs ).distinct() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Què passa si el psicopedagog de centre ha fet una actuació el 2 de setembre, no hauria de ser del curs actual?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Per mi, i així ho he reflectit al codi, per coherència, la data d'inici de curs ès la data d'inici que posem als cursos. Com que poden haver-hi diferents dates d'inici, he triat la més petita de totes. No se si el cas que comentes es pot donar o si es dona. No en tinc ni idea. Es pot obligar a que sigui l'1 de setembre...(veig poc probable que ens facin començar a mitjans d'agost, però qui sap...) Es pot posar una variable en settings_local.py de data d'inici de curs global independentment de les dates de cada curs....
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Com he dit abans, indicar-ho amb una opció als settings. Nosaltres sempre volem veure tot, no esborrem la base de dades.
aula/apps/tutoria/views.py
Outdated
@@ -234,30 +234,43 @@ def tutorPosaExpulsioPerAcumulacio(request, pk): | |||
|
|||
@login_required | |||
@group_required(['professors','professional']) | |||
def lesMevesActuacions(request): | |||
def lesMevesActuacions(request, old_actuacions=''): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
old_actuacions
no hauria de ser un booleà tipus incloureActuacionsAntigues = True
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cert! he canviat, en local, alguna cosa perquè quedi més clar (de fet, ara que aquesta PR està enviada, no se com es fa per anar fent els canvis que es proposin i ja quedin incorporades a la PR, mentre pugui o sàpiga fer-los, branca nova? ni idea):
En views.py de tutoria
def lesMevesActuacions(request, incloureActuacionsAntigues=False):
Més avall:
if not incloureActuacionsAntigues or incloureActuacionsAntigues != 'actuacionsAntigues': #Cas normal
En urls.py de tutoria:
re_path(r'^lesMevesActuacions/(?P<incloureActuacionsAntigues>\w+)/$', tutoria_views.lesMevesActuacions,
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No fa falta fer un altre branch.
Fes els canvis i commit-push.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pushed!
aula/apps/tutoria/views.py
Outdated
if actuacio.professional: # Si l'actuació va ser importada, el professional ja no és al centre. | ||
te_permis = (l4 or | ||
actuacio.professional.pk == user.pk or | ||
professor in actuacio.alumne.tutorsDeLAlumne() or | ||
user.groups.filter(name__in= [u'direcció', u'psicopedagog'] ).exists() | ||
) | ||
else: | ||
te_permis = (l4 or | ||
professor in actuacio.alumne.tutorsDeLAlumne() or | ||
user.groups.filter(name__in= [u'direcció', u'psicopedagog'] ).exists() | ||
) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if actuacio.professional: # Si l'actuació va ser importada, el professional ja no és al centre. | |
te_permis = (l4 or | |
actuacio.professional.pk == user.pk or | |
professor in actuacio.alumne.tutorsDeLAlumne() or | |
user.groups.filter(name__in= [u'direcció', u'psicopedagog'] ).exists() | |
) | |
else: | |
te_permis = (l4 or | |
professor in actuacio.alumne.tutorsDeLAlumne() or | |
user.groups.filter(name__in= [u'direcció', u'psicopedagog'] ).exists() | |
) | |
te_permis = ( | |
l4 or | |
professor in actuacio.alumne.tutorsDeLAlumne() or | |
user.groups.filter(name__in= [u'direcció', u'psicopedagog'] ).exists() | |
) | |
if actuacio.professional: # Si l'actuació va ser importada, el professional ja no és al centre. | |
te_permis = (te_permis or actuacio.professional.pk == user.pk) | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Provat, funciona i pushed!
Ôbviament! Era la mare dels ous. Si no tens accès a la BD antiga i a l'actual alhora, no pots importar-les. De fet, a la pràctica, només poden importar les actuacions aquells que sàpiguen aquestes credencials (1 o 2 persones, com a màxim).
Quan vaig preguntar-ho al Telegram recordo que parlàven de fer un resum anual de dades, més que importar les actuacions. Potser ho vaig entendre jo malament. Es podria dir que aquesta app neix per no veure una manera fàcil de fer aquesta importació.
Doncs, encara que t'ho hagi llegit vegades, personalment no ho acabo de veure pràctic. Si sóc membre de l'equip directiu, psicopedagog o el tutor, si necessites buscar una actuació en concret sober un alumne pots acabar molt perdut buscant en una única actuació conjunta on hi hagin totes les actuacions, barrejades, de tothom. Seria un text molt llarg, massa, perquè se'n generen moltissimes actuacions al llarg de l'any. Suposo que el que vols dir és fer una única actuació per alumne, on hi hagi tot el que comentes, tot i que, continuo veient que pels alumnes que tinguin més actuacions, també pot ser farragos trobar l'agulla en el paller quan cerques alguna cosa concreta. En aquest cas, potser el que caldria seria no tant generar una actuació com a tal a la taula de les actuacions, sinó un altre "element"... element resum? taula nova? per poder integrar totes les dades que comentes, no només actuacions. De tota manera, crec que no són excluents, la importació de les actuacions i aquests resums integrats a l'aplicació.
|
Hola, KeyError at /importaActuacions/connexioDB/ 'CONN_HEALTH_CHECKS' Request Method: POST 'CONN_HEALTH_CHECKS' Exception Location: /home/antonio/djau/djau2018/venv38/lib/python3.8/site-packages/django/db/backends/base/base.py, line 254, in connect ['/home/antonio/eclipse-workspace/djauforktest', Un altre problema és a la sincronització de professionals, surt: Salutacions. |
Hola, Aquesta proposta entenc que és una evolució de l'opció a), per automatitzar el procés. Salutacions. |
Potser per afegir la bd cal importar des de: |
Caldrà investigar-ho. Jo tinc la 3.2.16 El que sí m'he trobat és que si torno a la pantalla de connexió amb la DB antiga, o bé perquè "m'he equivocat" a l'hora d'entrar les credencials o bé perquè vull provar-ne de noves, té comportaments estranys si no refresco la pàgina amb Ctrl-F5. Per exemple, vaig comprovar, amb debug, que si "m'equivoco" posant les credencials i després les poso bé, el sistema se'n recorda de les credencials dolentes i no em deixa entrar-hi, malgrat les dades dins el diccionari DATABASES siguin ja les correctes (vist amb debug). A l'inrevès passa exactament igual. Si ja hi he entrat correctament i després vull canviar de DB o bé posar-les de nou malment, continua recordant les que tenia, malgrat el diccionari DATABASES sí que reflexteix els canvis. Tot això "s'arregla" fent Ctrl+F5 a la pàgina de les credencials de la BD.... però és lleig, és clar. |
Sí, es pot entendre que sí, que és una evolució. Mireu, a l'inici de curs vaig preguntar-vos per aquestes formes d'incorporar la informació o d'iniciar el curs. Malgrat hi hagi informació a les issues, no només no em va quedar clar com s'havia de fer sinó que quan realment ho vaig intentar, no vaig poder (no se si recordes la conversa al Telegram). En definitiva, un administrador del Djau que no sigui informàtic ho ha de tenir molt fàcil, molt. De moment, no ho és pas. Amb aquest sistema que he programat, és molt fàcil incorporar aquesta informació. Recomando fer proves amb BD reals (còpies, és clar) per poder controlar millor la informació. Jo he fet així i és molt pràctic. |
</tr> | ||
</thead> | ||
<tbody> | ||
{% for actuacio in actuacions_olddb_list %} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hauria de ser {% for actuacio in actuacions_a_importar %}
</tr> | ||
</thead> | ||
<tbody> | ||
{% for actuacio in actuacions_olddb_list %} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
{% for actuacio in actuacions_sense_alumne_curs_actual %}
</tr> | ||
</thead> | ||
<tbody> | ||
{% for actuacio in actuacions_olddb_list %} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
{% for actuacio in actuacions_sense_professional %}
} | ||
|
||
settings_local.DATABASES[dades_connexio_dbold.get('name_dbold')] = { | ||
'ENGINE': 'django.db.backends.postgresql_psycopg2', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Podria ser que la BD no fos postgresql, proposo definir la base de dades als settings:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'djau2022',
'USER': 'djaudb',
'PASSWORD': "xxxxxxx",
'HOST': '127.0.0.1',
'PORT': '',
},
'curs2021': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'djau2021',
'USER': 'djaudb',
'PASSWORD': "xxxxxxx",
'HOST': '127.0.0.1',
'PORT': '',
}
}
Des del form només s'ha de demanar l'identificador, p.ex: curs2021
actuacions_a_importar.append(actuacio_olddb) | ||
else: | ||
actuacions_ja_importades.append(actuacio_olddb) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tinc una proposta per ajuntar les fases des de la 3 a la 6, també crec que és millor fer servir els models per a que els noms dels camps no siguin diferents. Aquest canvi implica adaptar el template importacio.html.
head = u"Llistat detallat de les actuacions que s'importaran des d'un altre curs."
# Informació a mostrar en el template.
from aula.apps.usuaris.models import Professional
global actuacions_a_importar
alumnes_desmatriculats = [] # Alumnat que ja no hi és.
actuacions_sense_alumne_curs_actual = [] # Actuacions especials donat que NO s'importaran a la BD del curs actual.
professionals_foracentre = [] # Professionals que ja no hi son.
actuacions_sense_professional = [] # actuacions especials donat se'n modificarà el seu text i SÍ que s'importaran a la BD del curs actual.
actuacions_ja_importades = []
actuacions_a_importar = []
#Totes les actuacions de la BD antiga
actuacions_olddb = Actuacio.objects.using(nom_dbold).all()
for a in actuacions_olddb:
# Existeix l'alumne a la BD actual ?
alumne=Alumne.objects.filter(ralc=a.alumne.ralc, data_baixa__isnull=True)
if alumne:
#Prepara còpia de l'actuacio
na=Actuacio(moment_actuacio = a.moment_actuacio, qui_fa_actuacio = a.qui_fa_actuacio,
amb_qui_es_actuacio = a.amb_qui_es_actuacio, assumpte = a.assumpte, actuacio = a.actuacio)
#S'assigna alumne a l'actuació
na.alumne=alumne[0]
if (a.professional.username in usernames_oldb_to_usernames_curs_actual_dict):
# S'agafa l'username del professional segons la sincronització
newusername=usernames_oldb_to_usernames_curs_actual_dict.get(a.professional.username)
else:
newusername=a.professional.username
p=Professional.objects.filter(username=newusername)
if p:
# S'assigna el professional a l'actuació
na.professional=p[0]
else:
#El professional no hi és a la BD actual
if a.professional not in professionals_foracentre: professionals_foracentre.append(a.professional)
# S'afegeix una frase a l'inici del text de l'actuació per deixar constància de qui i quan es va fer l'actuació.
text_actuacio = u'El o la professional '+a.professional.first_name+' '+a.professional.last_name
text_actuacio += ' ('+a.professional.username+')'
text_actuacio += ' va redactar aquesta actuació, però ja no es troba al centre educatiu.'
text_actuacio += ' No obstant, a continuació se\'n mostra el text original: \n\n'
text_actuacio += a.actuacio
na.actuacio = text_actuacio
na.professional=None
actuacions_sense_professional.append(na)
#Comprova si l'actuació ja existeix d'una importació anterior
check=Actuacio.objects.filter(alumne=na.alumne, professional=na.professional, moment_actuacio=na.moment_actuacio,
qui_fa_actuacio=na.qui_fa_actuacio)
if check:
actuacions_ja_importades.append(a)
else:
actuacions_a_importar.append(na)
else:
# No és alumne actualment
if a.alumne not in alumnes_desmatriculats: alumnes_desmatriculats.append(a.alumne)
actuacions_sense_alumne_curs_actual.append(a)
return render(
request,
'../templates/importacio.html',
{
'nom_dbold':nom_dbold,
'head':head,
'alumnes_desmatriculats':alumnes_desmatriculats,
'actuacions_sense_alumne_curs_actual':actuacions_sense_alumne_curs_actual,
'professionals_foracentre':professionals_foracentre,
'actuacions_sense_professional':actuacions_sense_professional,
'actuacions_olddb_list':[], # actuacions_olddb_list. No fa falta,
'actuacions_ja_importades': actuacions_ja_importades,
'actuacions_a_importar': actuacions_a_importar,
},)
connexio = check_database_connection(request) | ||
if connexio is not None: | ||
return connexio | ||
if not usernames_oldb_to_usernames_curs_actual_dict: # Per evitar un accès amb url directe |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aquest "if" provoca que si no hi ha cap canvi als usuaris, aleshores surt pàgina no trobada.
|
||
head = u"Sincronització entre cursos dels professionals del centre educatiu" | ||
|
||
usuaris_olddb_id_username_firstname_lastname_list = list(User.objects. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Millor seleccionar els usuaris segons el grup, només professor i professional.
if actuacio_olddb.get('alumne_id')!=None: # Només s'hi afegiran totes les actuacions associades a un alumne matriculat en el curs actual. | ||
|
||
# Comprovació para no importar una actuació que ja va ser importada per algú | ||
# la data exacta és gairebé impossible que es pugui repetir perquè haurien d'haver-hi dues actuacions creades en el mateix segon. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
La llei de Murphy indica que si passarà. Millor fer servir també alumne, professional, quifaactuacio, ...
|
||
{% if habilita_link_actuacions_antigues %} | ||
<div class="alert alert-info" role="alert"> | ||
<p>Les <strong>actuacions dutes a terme en cursos anteriors</strong> es poden consultar <a href="/tutoria/lesMevesActuacions/actuacionsAntigues" class="alert-link">en aquest enllaç</a>. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Millor una variable al settings per decidir això. En el meu cas no esborrem la base de dades i tenim sempre a disposició totes les actuacions.
# Preparació de les dades a inserir | ||
for actuacio in actuacions_a_importar: | ||
act = Actuacio( | ||
id = identificador_nova_actuacio, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Posar id=None, millor que s'adjudiqui automàticament. Podria haver-hi algú al mateix temps creant alguna actuació nova.
Per identificar les actuacions afegides, proposo fer servir el moment_actuació, guardant el més antic i el més modern.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Si es fa servir la meva proposta d'unificació de les fases 3 a 6, aleshores només fa falta afegir al bulk.
# Preparació de les dades a inserir
for actuacio in actuacions_a_importar:
actuacions_pel_bulkcreate.append(actuacio)
Aquesta nova opció serà útil per a qui vulgui crear la base de dades nova cada curs i afegir les actuacions d'altres anys. Salutacions. |
Bon Nadal! |
Abans de res, bon Nadal i gràcies per la currada d'estudiar-te la PR. Em miraré les teves suggerències tant bon punt pugui. Vaig amb la meva contestació, que sempre les faig llargues per intentar explicar-me bé. Volia respondre especialment aquest text teu, Antonio. Sempre he observat que el DjAu està poc documentat, especialment pensant en un professor coordinador digital típic. El professor coordinador digital que vulgui instal·lar el DjAu ha de tenir un perfil tècnic fortament marcat. No només ha de conèixer conceptes generals "informàtics", sinó que ha de conèixer, relativament bé, Linux i quantes més coses millor, perquè quan instal·les el DjAu solen haver-hi "cosetes" que fan que la instal·lació no segueixi el paradigma del "one click button". No és fàcil trobar aquest perfil de professor. Tot això ho comento perquè quan llegeixes la direcció per instal.lar el DjAu sempre es diu que està pensat per instal·lar-se de nou cada curs, per decisió de disseny, i enlloc s'explica de forma fàcil i intuïtiva què s'ha de fer quan un curs s'acaba i comença el següent. Això condiciona la visió que té aquest coordinador digital tipus i es quedarà amb la idea que curs nou, instal·lació nova, DB nova, etc. Si hi ha alguna altra manera per començar un curs nou aquesta no està documentada, i perdoneu-me però no em serveix el text d'una issue, tant la d'en Juaki pel resum anual com la teva per inicialitzar el curs. Aquestes issues no poden ser mai la documentació d'instal.lació o d'ús. Per mi, i suposo que també per un professor tipus, tot allò que hi ha allà escrit sona igual que el "conxuro da Queimada". A més a més, pel que fa a aquesta procediments, després de comentar-ho en Telegram, sort que em vau dir que un cop el curs ha començat no es podia fer... en fin. No és fàcil de fer si no saps ni com començar. A mi m'agradaria molt que el sistema que proposes, d'inicialitzar el curs, estigués ben documentat i fos senzill d'implementar per un professor coordinador digital tipus que no sigui programador. Realment, pel que expliques, ja ho tindríem i això és el que, segurament, molts instituts necessitem. De fet el motiu per crear aquesta PR va ser perquè no vaig poder o saber "inicialitzar" el curs després de preguntar en el Telegram. |
Crec que la part de "no esborrar la BD" està aquí. No sabia pas que era la recomanada. I sí, potser sí que seria necessari refer la documentació, hi ha coses que a la mateixa documentació estan malament, com que la BD s'inicialitzi com a SQLite. No ho criticare perque jo també soc el developer d'una app educativa de django mal documentada :P |
@malbareda please, on diu com que la BD s'inicialitzi com a SQLite. ? Voldria fixar-ho. Merci |
Hola,
És l'opció que jo recomano.
Es pot fer de varies maneres:
BD nova cada curs.
BD nova + dades curs anterior.
Inicialitzar BD.
La documentació s'ha de millorar. És la part que fa més mandra.
Salutacions.
El lun., 26 dic. 2022 10:18, malbareda ***@***.***> escribió:
… Aquesta nova opció serà útil per a qui vulgui crear la base de dades nova
cada curs i afegir les actuacions d'altres anys. De totes maneres recomano
fer servir l'opció d'Inicialitza i no esborrar la base de dades.
Avantatges: Es mantenen les actuacions i seguiment tutorial. Es mantenen
els usuaris, les famílies no han de canviar d'usuari cada curs. Els profes
mantenen usuari i dadesaddicionals. Es mantenen els grups i l'usuari
superuser. Es mantenen les definicions: tipusincidencia, tipussancio,
frasesincidencia, ... Es mantenen els recursos de material. Permet fer
consulta de l'històric de pagaments i sortides.
Salutacions.
Abans de res, bon Nadal i gràcies per la currada d'estudiar-te la PR. Em
miraré les teves suggerències tant bon punt pugui. Vaig amb la meva
contestació, que sempre les faig llargues per intentar explicar-me bé.
Volia respondre especialment aquest text teu, Antonio. Sempre he observat
que el DjAu està poc documentat, especialment pensant en un professor
coordinador digital típic. El professor coordinador digital que vulgui
instal·lar el DjAu ha de tenir un perfil tècnic fortament marcat. No només
ha de conèixer conceptes generals "informàtics", sinó que ha de conèixer,
relativament bé, Linux i quantes més coses millor, perquè quan instal·les
el DjAu solen haver-hi "cosetes" que fan que la instal·lació no segueixi el
paradigma del "one click button". No és fàcil trobar aquest perfil de
professor.
Tot això ho comento perquè quan llegeixes la direcció per instal.lar el
DjAu sempre es diu que està pensat per instal·lar-se de nou cada curs, per
decisió de disseny, i enlloc s'explica de forma fàcil i intuïtiva què s'ha
de fer quan un curs s'acaba i comença el següent. Això condiciona la visió
que té aquest coordinador digital tipus i es quedarà amb la idea que curs
nou, instal·lació nova, DB nova, etc. Si hi ha alguna altra manera per
començar un curs nou aquesta no està documentada, i perdoneu-me però no em
serveix el text d'una issue, tant la d'en Juaki pel resum anual com la teva
per inicialitzar el curs. Aquestes issues no poden ser mai la documentació
d'instal.lació o d'ús. Per mi, i suposo que també per un professor tipus,
tot allò que hi ha allà escrit sona igual que el "conxuro da Queimada
<https://pazladeando.es/wp-content/uploads/2019/06/conjuro.jpg>".
A més a més, pel que fa a aquesta procediments, després de comentar-ho en
Telegram, sort que em vau dir que un cop el curs ha començat no es podia
fer... en fin. No és fàcil de fer si no saps ni com començar.
A mi m'agradaria molt que el sistema que proposes, d'inicialitzar el curs,
estigués ben documentat i fos senzill d'implementar per un professor
coordinador digital tipus que no sigui programador. Realment, pel que
expliques, ja ho tindríem i això és el que, segurament, molts instituts
necessitem. De fet el motiu per crear aquesta PR va ser perquè no vaig
poder o saber "inicialitzar" el curs després de preguntar en el Telegram.
Crec que la part de "no esborrar la BD" està aquí. No sabia pas que era la
recomanada.
#109 <#109>
I sí, potser sí que seria necessari refer la documentació, hi ha coses que
a la mateixa documentació estan malament, com que la BD s'inicialitzi com a
SQLite. No ho criticare perque jo també soc el developer d'una app
educativa de django mal documentada :P
—
Reply to this email directly, view it on GitHub
<#213 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ALT6LAW4INPQTYBTLO4D4MTWPFPGRANCNFSM6AAAAAAS7X52RE>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Centrar-nos en una opció té avantatges clars:
Per ara veig avantatges a la tàctica @amorilla . Com ho veieu vosaltres? |
https://github.com/ctrl-alt-d/django-aula/blob/master/docs/Wiki/instalacion-2/instalacion.md En l'exemple de settings.py proporcionat que defineix una configuració vàlida, BD que es defineix es SQLite. És a dir, no es diu EXPLICITAMENT que s'inicii una SQLite, però podem estar d'acord que la majoria de nous usuaris que segueixin la guia de pe a pa acabaran posant accidentalment una SQLite |
@malbareda el que diu explícitament és
A l'exemple veig que posa SQLite i confon. S'hauria de substituir per una connexió a postgres, vols fer tu mateix la PR? Merci 🙌 Respecte la documentació, us sembla bé que no acceptem més PR si no van acompanyades dels canvis a la documentació? Teniu alguna altre proposta en aquest sentit? |
Esborrat path d'instal·lació de mysql seguint indicacions de: ctrl-alt-d#213 (comment) Canviat exemple de local_settings.py a un més adient. Aquests dies intentaré fer una instal·lació desde 0 seguint aquesta guia, documentaré les dificultats, i les afegiré al document.
Crec que ara mateix el que corre més pressa és tenir guies que detallin les coses que siguin més confoses.
|
Hola, He trobat la solució al problema de Django 4. DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'djau2022',
.....
},
'curs2021': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'djau2021',
.....
'CONN_HEALTH_CHECKS': True,
}
} |
Introducció
Abans d’explicar l’app vull comentar-vos que a l’inici d’octubre no havia programat mai en Python i no sabia què era Django, pgAdmin ni Bootstrap. Conec els principis generals de programació i m’han servit també per capbussar-me a la BD de postgresql, tot i que molt superficialment, i m’ha ajudat a entendre, amb traç gruixut, el funcionament de tot plegat. Per últim, també he hagut d’aprendre a fer servir Git amb Github, que si no ho has vist mai, no és trivial. Moltes i moltes hores de vídeos, especialment els de Juan @pildorasinformaticas. En definitiva, que sigueu compassius si trobeu que hi ha d’altres maneres de resoldre, tècnicament, el que he fet.
Necessitat a resoldre
Aquesta app neix de la necessitat dels equips directius, especialment el meu i segurament extrapolable a d’altres, de poder consultar les actuacions fetes en cursos anteriors sobre l’alumnat, d’una manera més transparent, sense necessitat de mantenir instal·lacions passades només per aquest fet. Una altra cosa és que calgui mantenir aquestes instal·lacions per, per exemple, tenir un registre d’assistència de l’alumnat, eventualment per processos judicials.
Instal·lació
L’ús d’aquesta app és completament opcional. Si no es volen importar les actuacions passades, el DjAu funcionarà exactament igual que sempre. No ha calgut modificar cap base de dades modificant dades o afegint taules, llevat de les actuacions que s'importen, per tant no cal fer cap migrate. Per obtenir l’actualització només caldrà baixar la nova versió des del repositori.
Funcionament des del punt de vista de l’usuari admin
L’administrador haurà d’anar al menú admin -> Sincronitza i allà hi trobarà una nova entrada “Iniciar importacions d’un curs antic”
Des d’allà podrà veure tot un seguit d’informació amb instruccions de què és el que l’app farà. El resum és:
Funcionament intern
El codi està sobradament documentat per facilitar-ne el seguiment, principalment el meu seguiment. Totes les funcions es troben a views.py.
Per poder lligar les actuacions antigues de la base de dades antiga amb la base de dades atual cal trobar una dada immutable, tant per l’alumnat com pels professionals. Per l’alumnat es treballarà amb el RALC, mentre que els professionals quedaran fixats pel seu username, però atès que aquest no és universal perquè pot canviar entre les instal·lacions de diferents anys escolars, amb l’app ens assegurarem de que coincidirà.
He intentat no tocar codi fora d’aquesta app. No obstant sí que he hagut de tocar el següent:
Bugs i problemes coneguts
Com a bugs ja no n’he trobat cap després de fer-hi moltes proves. El que sí que s'ha d'arreglar és el fet que no he aconseguit visualitzar convenientment les pàgines de l’app. Haurien d’estar integrades, amb el menú horitzontal superior i el lateral esquerre, però per molt que hagi repassat el codi, comparant-lo amb el que ja hi ha fet, no veig cap diferència.
Com a particularitats, no he sabut integrar ni els formularis ni les tables de Django correctament. Hi ha alguns formularis i algunes taules fetes a mà.
Per exemple, per sincronitzar els professionals, el formulari està fet a mà (amb molta feina) mentre que el formulari per demanar les dades de connexió sí que està integrat. Pel que fa a les taules amb dades, en el cos de l’app les taules estan fetes a mà, mentre que a la última pàgina sí que hi ha dues taules fetes amb tables2, però les dues paginen alhora, quan haurien de paginar cadascuna per separat.
Tampoc he sabut modificar la table que visualitza les actuacions, en tutoria, per que en el cas de l’actuació antiga no es veiés, com accions a fer, la de modificar i la d’esborrar l’actuació. Només volia un botó que digués “Veure les dades”
I fins aquí l'homilia...