Diferencia entre revisiones de «Usuario:Lmorillas/desarrollo web servidor/flask/ejemplo completo/con citas»
De WikiEducator
(Página creada con '{{MiTitulo| Aplicación con citas}} == Modelo == <source lang="python"> class Cita(Base): """Una cita en el calendario.""" __tablename__ = 'cita' id = Column(Integ…') |
(→Controlador) |
||
Línea 45: | Línea 45: | ||
# Either first load or validation error at this point. | # Either first load or validation error at this point. | ||
return render_template('appointment/edit.html', form=form) | return render_template('appointment/edit.html', form=form) | ||
+ | </source> | ||
+ | |||
=== Formulario === | === Formulario === | ||
<source lang="python"> | <source lang="python"> | ||
Línea 57: | Línea 59: | ||
descripcion = TextAreaField('Descripción') | descripcion = TextAreaField('Descripción') | ||
</source> | </source> | ||
+ | |||
=== Template === | === Template === |
Revisión de 10:32 14 nov 2013
Modelo
class Cita(Base): """Una cita en el calendario.""" __tablename__ = 'cita' id = Column(Integer, primary_key=True) creada = Column(DateTime, default=datetime.now) modificada = Column(DateTime, default=datetime.now, onupdate=datetime.now) evento = Column(String(255)) inicio = Column(DateTime, nullable=False) fin = Column(DateTime, nullable=False) todoeldia = Column(Boolean, default=False) lugar = Column(String(255)) descripcion = Column(Text) user_id = Column(Integer, ForeignKey('usuarios.id'), nullable=False) usuario = relationship(User, lazy='joined', join_depth=1, viewonly=True) def duracion(self): tiempo = self.fin - self.inicio return tiempo.days * 24 * 60 * 60 + tiempo.seconds def __str__(self): return "{evento} [{fecha}}".format(evento=self.evento, fecha=self.inicio)
Creación de nuevas citas
Controlador
@app.route('/appointments/create/', methods=['GET', 'POST']) @login_required def appointment_create(): """Provide HTML form to create a new appointment record.""" form = AppointmentForm(request.form) if request.method == 'POST' and form.validate(): appt = Appointment(user_id=current_user.id) form.populate_obj(appt) db.session.add(appt) db.session.commit() # Success. Send the user back to the full appointment list. return redirect(url_for('appointment_list')) # Either first load or validation error at this point. return render_template('appointment/edit.html', form=form)
Formulario
class FormCita(Form): """Formulario para el modelo Citas. Genera HTML y valida entradas """ titulo = TextField('Cita', [validators.Length(max=255)]) inicio = DateTimeField('Inicio', [validators.Required()]) fin = DateTimeField('Fin') todoeldia = BooleanField('Todo el día') lugar = TextField('Lugar', [validators.Length(max=255)]) descripcion = TextAreaField('Descripción')