def convida_alumnes(request): if request.method == "POST": # dades form cicle = Cicle.objects.get(pk=request.POST["cicle"]) centre = Centre.objects.get(pk=request.POST["centre"]) finalitzat = False data_finalitzacio = None dia = request.POST.get("data_finalitzacio_day", None) print("DIA: " + dia) mes = request.POST.get("data_finalitzacio_month", None) anyo = request.POST.get("data_finalitzacio_year", None) if dia and mes and anyo: data_finalitzacio = "{}-{}-{}".format(anyo, mes.zfill(2), dia) print("DATA FINALITZACIO: {}".format(data_finalitzacio)) if request.POST.get("finalitzat", False): finalitzat = True # emails emails = request.POST["emails"].split("\n") emails_ok = [] emails_repetits = [] emails_erronis = [] # grup alumnes galumnes = Group.objects.get(name="alumnes") for email in emails: email = email.strip() #print("("+email+")") # comprovar si repetit users = User.objects.filter(email=email) if not validate_email(email): emails_erronis.append(email) elif users: usuari = users[0] # no cal crear usuari emails_repetits.append(email) # resetejem TOS usuari.is_staff = False usuari.tos = False usuari.data_notificacio_tos = None usuari.save() # creem titol si necessari if Titol.objects.filter(cicle=cicle, centre=centre, alumne=usuari).count() == 0: titol = Titol(cicle=cicle, centre=centre, graduat=finalitzat, alumne=usuari, data=data_finalitzacio) titol.save() # afegim al grup alumnes galumnes.user_set.add(usuari) elif validate_email(email, check_mx=True): # crear usuari (al grup alumnes) user = User(username=email.replace("@", "_"), email=email, is_staff=True, centre=centre) user.is_staff = False user.tos = False user.data_notificacio_tos = None user.save() emails_ok.append(email) # crear títol de l'alumne titol = Titol(cicle=cicle, centre=centre, graduat=finalitzat, alumne=user, data=data_finalitzacio) titol.save() # afegir al grup alumnes galumnes.user_set.add(user) else: emails_erronis.append(email) # s'envia email d'invitació a l'alumne amb la comanda email_tos (CRON) return render( request, 'borsApp/convida.html', { "tipus": "alumnes", "cicle": cicle, "centre": centre, "emails_ok": emails_ok, "emails_repetits": emails_repetits, "emails_erronis": emails_erronis }) # GET: creem form per introduir emails d'invitació form = ConvidaAlumnesForm(request.GET) # TODO: arreglar initial, no va form.fields["data_finalitzacio"].initial = timezone.now() if request.user.is_superuser: form.fields["centre"].queryset = Centre.objects.all() form.fields["cicle"].queryset = Cicle.objects.all() else: # filtrem cicles dels centres implicats # TODO: selects encadenats centres = request.user.centres_admin.all() form.fields["centre"].queryset = centres form.fields["cicle"].queryset = Cicle.objects.filter( centres__in=centres) #request.user.centres_admin.all().cicles.all() return render(request, 'borsApp/convida.html', { "form": form, "tipus": "alumnes" })
def convida_profes(request): if request.method == "POST": # dades form centre = Centre.objects.get(pk=request.POST["centre"]) finalitzat = False if request.POST.get("finalitzat", False): finalitzat = True # emails emails = request.POST["emails"].split("\n") emails_ok = [] emails_repetits = [] emails_erronis = [] # grup alumnes gprofes = Group.objects.get(name="profes") for email in emails: email = email.strip() #print("("+email+")") # comprovar si repetit users = User.objects.filter(email=email) if not validate_email(email): emails_erronis.append(email) elif users: usuari = users[0] # no cal crear usuari emails_repetits.append(email) # afegim al grup profes gprofes.user_set.add(usuari) # resetejem els permisos fins q accepti el TOS usuari.is_staff = False usuari.tos = False usuari.data_notificacio_tos = None usuari.save() elif validate_email(email, check_mx=True): # crear usuari (al grup profes) usuari = User(username=email.replace("@", "_"), email=email, is_staff=True, centre=centre) usuari.save() emails_ok.append(email) # afegir al grup alumnes gprofes.user_set.add(usuari) # resetejem els permisos fins q accepti el TOS usuari.is_staff = False usuari.tos = False usuari.data_notificacio_tos = None usuari.save() else: emails_erronis.append(email) # TODO: enviar email al profe return render( request, 'borsApp/convida.html', { "tipus": "profes", "centre": centre, "emails_ok": emails_ok, "emails_repetits": emails_repetits, "emails_erronis": emails_erronis }) # GET: creem form per introduir emails d'invitació form = ConvidaProfesForm(request.GET) if request.user.is_superuser: form.fields["centre"].queryset = Centre.objects.all() else: centres = request.user.centres_admin.all() form.fields["centre"].queryset = centres return render(request, 'borsApp/convida.html', { "form": form, "tipus": "profes" })