Example #1
0
class FormTanggal(FlaskForm):
    sarpelkes = StringField('Sarpelkes', validators=[DataRequired()])
    nomorwo = StringField('No.WO', validators=[DataRequired()])
    tgl_kirim = DateField('Tanggal Kirim', validators=[DataRequired()])
    submit = SubmitField('Update')
Example #2
0
class TransactionForm(FlaskForm):
    service = StringField('Service', validators=[DataRequired()])
    provider = StringField('Provider', validators=[DataRequired()])
    date = DateField(format='%Y-%m-%d')
    amount = IntegerField('Amount', validators=[DataRequired()])
    submit = SubmitField('Submit')
Example #3
0
class Contingent_aForm(FlaskForm):
    dt1 = DateField('Date 1',format='%Y-%m-%d', validators=[DataRequired()])
    des1 = StringField('Destination 1', validators=[DataRequired()])
    amt1 = IntegerField('Amount 1', validators=[DataRequired()])
    submit = SubmitField('Submit')
Example #4
0
def ScheduleSpecialForm(FlaskForm):
    """Form for insert/update schedules"""
    username = HiddenField("username")
    date_exp = DateField("Date", validators=[InputRequired()])
    schedules = StringField("Schedules", validators=[Optional()])
    is_active = BooleanField('Active', default=True)
Example #5
0
class DateRangeForm(FlaskForm):
    """Simple date range selection form with ISO dates."""

    from_date = DateField('DatePicker', format='%Y-%m-%d')
    to_date = DateField('DatePicker', format='%Y-%m-%d')
Example #6
0
class AlunoForm(FlaskForm):
    matricula = TextField('Matrícula', validators=[DataRequired()])
    dt_nascimento = DateField('Data de Nascimento', format="%Y-%m-%d" ,validators=[DataRequired()])
    entrar = SubmitField('Entrar')
Example #7
0
class ListForm(Form):
  name        = StringField('Nafn', validators=[Required()])
  date_from   = DateField('Dagsetning 1', format='%Y-%m-%d', validators=[Required()])
  date_to     = DateField('Dagsetning 2', format='%Y-%m-%d', validators=[Required()])
  submit      = SubmitField('Útbúa lista')
Example #8
0
class EditActivityForm(FlaskForm):
    activitytype = SelectField('Activity:',
                               validators=[DataRequired()],
                               coerce=int)
    date = DateField(label='Date:')
    submit = SubmitField('Save')
Example #9
0
class GivenTime(Form):
    StartDate = DateField('date', validators=[DataRequired()])
    EndDate = DateField('date', validators=[DataRequired()])
Example #10
0
class FilmScheduleForm(Form):
    Room = StringField('Room', validators=[DataRequired()])
    Date = DateField('Date', validators=[DataRequired()])
    Time = StringField('Time', validators=[DataRequired()])
    Price = StringField('Price', validators=[DataRequired()])
    submit = SubmitField('Submit')
Example #11
0
class BiddingForm(FlaskForm):
    ccontact = IntegerField(label='Ccontact',
                            validators=[InputRequired()],
                            render_kw={
                                'placeholder': 'Ccontact',
                                'class': 'input100'
                            })

    petname = SelectField(label='Petname',
                          validators=[InputRequired()],
                          render_kw={
                              'placeholder': 'Petname',
                              'class': 'input100'
                          })
    startday = DateField(label='startday',
                         validators=[InputRequired()],
                         render_kw={
                             'placeholder': 'startday',
                             'class': 'input100'
                         })
    endday = DateField(label='endday',
                       validators=[InputRequired()],
                       render_kw={
                           'placeholder': 'endday',
                           'class': 'input100'
                       })
    paymentmode = SelectField(label='Paymentmode',
                              choices=[('creditcard', 'Credit Card'),
                                       ('cash', 'Cash')],
                              validators=[InputRequired()],
                              render_kw={
                                  'placeholder': 'Paymentmode',
                                  'class': 'input100'
                              })
    deliverymode = SelectField(label='Deliverymode',
                               validators=[InputRequired()],
                               choices=[('deliver', 'pet owner deliver'),
                                        ('pickup', 'pick up'),
                                        ('pcstransfer', 'transfer through PCS')
                                        ],
                               render_kw={
                                   'placeholder': 'Deliverymode',
                                   'class': 'input100'
                               })

    # def edit_user(request, ccontact, petname):
    #     caretaker = Cantakecare.query.get(ccontact)
    #     category = Pets.query.filter_by(petname = petname.data)
    #     form = BiddingForm(request.POST, obj=caretaker)
    #     form.ccontact.choices = [(x.ccontact, x.ccontact) for x in Cantakecare.query.order_by('ccontact').filter_by(category=category)]

    def validate_on_submit(self):
        result = super(BiddingForm, self).validate()
        if (self.startday.data - self.endday.data >= timedelta(minutes=1)):
            flash("End date cannot be earlier than Start date.")
            return False
        elif (date.today() - self.startday.data >= timedelta(minutes=1)):
            flash("Start date cannot be earlier than current date.")
            return False
        else:
            return True
Example #12
0
class TimeForm(FlaskForm):
    Date = DateField('Date', validators=[DataRequired()])
Example #13
0
class LeaveForm(FlaskForm):
    dt = DateField('Leave From')
    dt1 = DateField('Leave To')
    submit = SubmitField('Apply')
class SearchForm(FlaskForm):
    vacation_start = DateField('Start Date', format='%Y-%m-%d')
    vacation_end = DateField('End Date', format='%Y-%m-%d')
    search = SubmitField('Search')
Example #15
0
class SurgeryBlockForm(BaseForm):
    fld_surgery_block_id = StringField("Surgical Block ID", default=tbd)
    fld_surgery_no_of_blocks = IntegerField("Number of blocks", default=tbd)
    fld_surgery_block_source = SelectField(
        "Mention the laboratory from where the reports have been generated",
        choices=BiopsyDict.biopsy_block_source_choice
    )  # use same dict as biopsy
    fld_surgery_block_source_other = StringField("other")
    fld_nact_or_naht = SelectField("is NACT or NAHT done",
                                   choices=BiopsyDict.nact_naht_choice)
    fld_nact_or_naht_other = StringField("Give details")
    fld_surgery_tumour_block_reference = TextAreaField(
        "Tumour block reference", default=tbd)
    fld_surgery_nodes_block_reference = TextAreaField("Nodes block reference",
                                                      default=tbd)
    fld_surgery_adjacent_normal_block_reference = TextAreaField(
        "Adjacent Normal block reference", default=tbd)
    fld_surgery_reduction_tissue_block_reference = TextAreaField(
        "Reduction Tissue block reference", default=tbd)
    fld_surgery_date = DateField("Date of Surgery")
    fld_surgery_name_surgeon_id = StringField("Name of Surgeon",
                                              default='Dr. Koppiker')
    fld_surgery_hospital_id = StringField("Hospital ID", default=tbd)
    fld_reason_for_biopsy = StringField("Reason for biopsy", default=tbd)
    fld_surger_lesion_side = SelectField("Lesion Side",
                                         choices=CommonDict.breast_choice)
    fld_surger_lesion_side_other = StringField("Other")
    fld_surgery_right_breast_type = SelectField(
        "Type of Surgery for Right Breast",
        choices=BiopsyDict.surgery_type_choice)
    fld_surgery_right_breast_type_other = StringField("Other")
    fld_surgery_left_breast_type = SelectField(
        "Type of Surgery for Left Breast",
        choices=BiopsyDict.surgery_type_choice)
    fld_surgery_left_breast_type_other = StringField("Other")
    fld_surgery_tumour_size = StringField("Tumour size", default=tbd)
    fld_surgery_tumour_size_unit = StringField('Unit for tumour size',
                                               default='cm')
    fld_surgery_tumour_grade = SelectField(
        "Tumour Grade", choices=BiopsyDict.tumour_grade_choice)
    fld_surgery_tumour_grade_other = StringField("Other")
    fld_surgery_surgery_diagnosis = SelectField(
        "Surgery Diagnosis", choices=BiopsyDict.surgery_diagnosis_choice)
    fld_surgery_surgery_diagnosis_other = StringField("Other")
    fld_diagnosis_comment = StringField(
        "Include descriptive or indicative notes here and not in Diagnosis")
    fld_surgery_block_DCIS_percent = StringField("mention the DCIS percent")
    fld_surgery_perineural_invasion = SelectField(
        "Perineural Invasion", choices=CommonDict.absent_present_choice)
    fld_surgery_perineural_invasion_other = StringField("Other")
    fld_surgery_necrosis = SelectField(
        "Necrosis", choices=CommonDict.absent_present_choice)
    fld_surgery_necrosis_other = StringField("Other")
    fld_surgery_block_report_lymphovascular_invasion = SelectField(
        "Is lymphovascular invasion seen?",
        choices=BiopsyDict.lymphovascular_invasion_choice)
    fld_surgery_er = SelectField("Surgical block ER Status",
                                 choices=CommonDict.postive_negative_choice)
    fld_surgery_er_other = StringField("Other")
    fld_surgery_er_percent = StringField("ER Percent", default="0")
    fld_surgery_pr = SelectField("Surgical block PR Status",
                                 choices=CommonDict.postive_negative_choice)
    fld_surgery_pr_other = StringField("Other")
    fld_surgery_pr_percent = StringField("PR Percent", default="0")
    fld_surgery_her2 = SelectField("Surgical block HER2 Status",
                                   choices=BiopsyDict.tumour_her2_choice)
    fld_surgery_her2_other = StringField("Other")
    fld_surgery_her2_grade = StringField("HER2 Grade", default="0")
    fld_surgery_fish = SelectField("Tumour block FISH",
                                   choices=CommonDict.postive_negative_choice)
    fld_surgery_ki67 = StringField("Ki67 Percent", default="0")
    fld_surgery_block_report_sentinel_node_number_removed = IntegerField(
        "if sentinel nodes are removed,"
        "enter the number of nodes removed",
        default=tbd)
    fld_surgery_block_report_sentinel_node_number_removed_other = StringField(
        "NA")
    fld_surgery_block_report_sentinel_node_number_positive = IntegerField(
        "if sentinel nodes are removed,"
        "enter the number of nodes positive",
        default=tbd)
    fld_surgery_block_report_sentinel_node_number_positive_other = StringField(
        "NA")
    fld_surgery_block_report_axillary_node_number_positive = IntegerField(
        "if axillary nodes are removed,"
        "enter the number of nodes positive",
        default=tbd)
    fld_surgery_block_report_axillary_node_number_positive_other = StringField(
        "NA")
    fld_surgery_block_report_apical_node_number_positive = IntegerField(
        "if apical nodes are removed,"
        "enter the number of nodes positive",
        default=tbd)
    fld_surgery_block_report_apical_node_number_positive_other = StringField(
        "NA")
    fld_node_block_report_perinodal_spread = SelectField(
        "Block Report Perinodal spread",
        choices=BiopsyDict.lymphovascular_invasion_choice)
    fld_node_block_report_perinodal_spread_other = StringField(
        "Requires follow-up")
    fld_pathological_staging_pt = SelectField(
        "Pathological staging pT",
        choices=BiopsyDict.pathological_staging_pt_choice)
    fld_pathological_staging_pt_other = StringField("other")
    fld_pathological_staging_pn = SelectField(
        "Pathological staging pN",
        choices=BiopsyDict.pathological_staging_pt_choice)
    fld_pathological_staging_pn_other = StringField("other")
    fld_pathological_staging_m = SelectField(
        "Pathological staging M",
        choices=BiopsyDict.pathological_staging_m_choice)
    fld_pathological_staging_m_other = StringField("other")
    fld_pathological_staging_p_stage = SelectField(
        "Pathological staging p",
        choices=BiopsyDict.pathological_staging_p_stage_choice)
    fld_additional_comments = StringField("Additional comments", default=tbd)
    fld_stromal_tumour_infiltrating_lymphocytes = StringField(
        "Stromal Tumor infiltrating lymphocytes", default=tbd)
    fld_tumour_desmoplastic_response = StringField(
        "Tumor desmoplastic response", default=tbd)
Example #16
0
class CompleteOrderForm(FlaskForm):
    number=IntegerField('Unit')
    order_date = DateField('Pick up Date',validators=[DataRequired()])
    submit = SubmitField('Complete order')
Example #17
0
class BiopsyForm(SectionForm):
    def get_summary(self):
        return self.fld_biopsy_tumour_diagnosis.data

    fld_block_serial_number_biopsy = StringField(
        'Block Serial Number', [validators.Length(min=1, max=50)], default=tbd)
    fld_block_location_biopsy = StringField(
        "Block Location ID (Cabinet No.-Drawer No.-Column No.-Front/Back",
        default='To be Filled')
    fld_block_current_location_biopsy = StringField(
        "Current location of block", default=tbd)
    fld_reason_for_biopsy = SelectField(
        "Reason for biopsy", choices=BiopsyDict.biopsy_reason_choice)
    fld_reason_for_biopsy_other = StringField("Give details")

    fld_biopsy_site = SelectField("Site of biopsy",
                                  choices=BiopsyDict.biopsy_site_choice)
    fld_biopsy_site_other = StringField("Other")
    fld_biopsy_custody_pccm = SelectField(
        'Is the biopsy report in PCCM custody?',
        choices=BiopsyDict.biopsy_custody_pccm_choice
    )  #is this the cjoice as mentioned or yes/no?
    fld_biopsy_custody_pccm_other = StringField("Other")
    fld_block_received_pccm_date = DateField(
        "Date when block was placed in the cabinet", default=date.today())
    fld_biopsy_ihc_report_pccm = SelectField(
        "Biopsy IHC report in PCCM custody", choices=CommonDict.yes_no_choice)
    fld_biopsy_block_id = StringField("Biopsy Block ID",
                                      default=tbd)  #major doubt
    fld_biopsy_block_id_other = StringField("other")
    fld_biopsy_no_of_blocks = IntegerField("Number of blocks", default=tbd)
    fld_biopsy_date = DateField("Date of Biopsy", default=date.today())
    fld_biopsy_block_source = SelectField(
        "Reports have been generated from",
        choices=BiopsyDict.biopsy_block_source_choice)
    fld_biopsy_block_source_other = StringField("Give details")
    fld_biopsy_lab_id_sid = StringField("Biopsy Lab ID", default=tbd)
    fld_biopsy_type = SelectField("Biopsy Type",
                                  choices=BiopsyDict.biopsy_type_choice)
    fld_biopsy_type_other = StringField("Other")
    fld_biopsy_diagnosis = TextAreaField(
        'Mention the diagnosis in its fullform.'
        ' Eg: Infiltrating Duct Carcinoma/Invasive Mammary Carcinoma/ DCIS/Fibroadenoma; '
        'Infiltrating Duct Carcinoma + DCIS',
        default=tbd)
    fld_biopsy_diagnosis_comment = StringField(
        "Include descriptive or indicative notes here and not in Diagnosis",
        default=tbd)
    fld_biopsy_tumour_grade = SelectField(
        "Tumour Grade", choices=BiopsyDict.tumour_grade_choice)
    fld_biopsy_tumour_grade_other = StringField("Give details")
    fld_biopsy_lymphovascular_emboli = SelectField(
        'Are Lymphovascular emboli seen?',
        choices=BiopsyDict.lymphovascular_emboli_choice)
    fld_biopsy_lymphovascular_emboli_other = StringField("Other")
    fld_dcis_biopsy = SelectField("Does the biopsy show DCIS",
                                  choices=BiopsyDict.dcis_biopsy_choice)
    fld_dcis_biopsy_other = StringField("Other")
    fld_tumour_er_biopsy = SelectField("Biopsy block ER Status",
                                       choices=BiopsyDict.tumour_er_choice)
    fld_tumour_er_biopsy_other = StringField("Other")
    fld_tumour_er_percent_biopsy = StringField("ER Percent", default=tbd)
    fld_tumour_pr_biopsy = SelectField("Biopsy block PR Status",
                                       choices=BiopsyDict.tumour_pr_choice)
    fld_tumour_pr_biopsy_other = StringField("Other")
    fld_tumour_pr_percent_biopsy = StringField("PR Percent", default=tbd)
    fld_tumour_her2_biopsy = SelectField("Biopsy block HER2 Status",
                                         choices=BiopsyDict.tumour_her2_choice)
    fld_tumour_her2_biopsy_other = StringField("Other")
    fld_tumour_her2_grade_biopsy = StringField("HER2 Grade", default=tbd)
    fld_tumor_biopsy_fish = SelectField(
        "Tumor biopsy FISH", choices=BiopsyDict.tumor_biopsy_fish_choice)
    fld_tumor_biopsy_fish_other = StringField("Other")
    fld_tumour_ki67_biopsy = StringField("Ki67 Percent", default=tbd)
    fld_fnac = SelectField("Lymph Node biopsy FNAC",
                           choices=BiopsyDict.fnac_choice)
    fld_fnac_other = StringField("Other")
    fld_fnac_location = SelectField("FNAC Location",
                                    choices=BiopsyDict.fnac_location_choice)
    fld_fnac_location_other = StringField("Other")
    fld_fnac_diagnosis = SelectField("FNAC Diagnosis",
                                     choices=BiopsyDict.fnac_diagnosis_choice)
    fld_fnac_diagnosis_other = StringField("Other")
    fld_surgery_form_present = SelectField("Is surgery performed?",
                                           choices=CommonDict.yes_no_choice)
    surgery_form = FormField(SurgeryBlockForm)
    submit_button = SubmitField('Submit Form')
Example #18
0
class ConfirmOrderForm(FlaskForm):
    order_date = DateField('Pick up Date',validators=[DataRequired()])
    submit = SubmitField('Confirm order')
Example #19
0
class ExampleForm(Form):
    dt = DateField('DatePicker', format='%Y-%m-%d')
    submit = SubmitField()
Example #20
0
class RemoveFood(FlaskForm):
    type = StringField('Name',validators=[DataRequired()])
    exp_data = DateField('Expired Data')
    pointfds = StringField('Point')
    quantity = IntegerField('Unit',validators=[DataRequired()])
    submit = SubmitField('Remove')
Example #21
0
class SelectTag(FlaskForm):
    tag = SelectField(u'TagName', coerce=int)
    date_from = DateField('Start:', validators=[DataRequired()])
    date_to = DateField('End:', validators=[DataRequired()])
Example #22
0
class UserPartyTransactionReportForm(FlaskForm):
	dateTo = DateField('dateTo', format='%Y-%m-%d')
	dateFrom = DateField('dateFrom', format='%Y-%m-%d')
	submit = SubmitField('Generate Report')
Example #23
0
class BookMassageForm(FlaskForm):
	massage = SelectField('Massage Selection', validators=[DataRequired()], choices=[('Swedish Massage', 'SWEDISH MASSAGE'), ('Sports Massage', 'SPORTS MASSAGE'), ('Trigger Point Massage', 'TRIGGER POINT MASSAGE'), ('Deep Tissue Massage', 'DEEP TISSUE MASSAGE'), ('Reflexology Massage','REFLEXOLOGY MASSAGE'), ('Shiatsu Massage','SHIATSU MASSAGE'), ('Thai Massage', 'THAI MASSAGE'), ('Prenatal Massage', 'PRENATAL MASSAGE'),('Couples Massage','COUPLES MASSAGE'), ('Chair Massage', 'CHAIR MASSAGE')])
	scheduled_on = DateField('Scheduled_on', format='%Y-%m-%d', validators=[DataRequired()])
	submit = SubmitField('Book Now') 
Example #24
0
class AddOfficerForm(Form):
    department = QuerySelectField('Department',
                                  validators=[DataRequired()],
                                  query_factory=dept_choices,
                                  get_label='name')
    first_name = StringField(
        'First name',
        default='',
        validators=[Regexp(r'\w*'), Length(max=50),
                    Optional()])
    last_name = StringField(
        'Last name',
        default='',
        validators=[Regexp(r'\w*'),
                    Length(max=50),
                    DataRequired()])
    middle_initial = StringField(
        'Middle initial',
        default='',
        validators=[Regexp(r'\w*'), Length(max=50),
                    Optional()])
    suffix = SelectField('Suffix',
                         default='',
                         choices=SUFFIX_CHOICES,
                         validators=[AnyOf(allowed_values(SUFFIX_CHOICES))])
    race = SelectField('Race',
                       default='WHITE',
                       choices=RACE_CHOICES,
                       validators=[AnyOf(allowed_values(RACE_CHOICES))])
    gender = SelectField('Gender',
                         default='M',
                         choices=GENDER_CHOICES,
                         validators=[AnyOf(allowed_values(GENDER_CHOICES))])
    star_no = StringField('Badge Number',
                          default='',
                          validators=[Regexp(r'\w*'),
                                      Length(max=50)])
    unique_internal_identifier = StringField(
        'Unique Internal Identifier',
        default='',
        validators=[Regexp(r'\w*'), Length(max=50)])
    job_id = StringField('Job ID')  # Gets rewritten by Javascript
    unit = QuerySelectField('Unit',
                            validators=[Optional()],
                            query_factory=unit_choices,
                            get_label='descrip',
                            allow_blank=True,
                            blank_text=u'None')
    employment_date = DateField('Employment Date', validators=[Optional()])
    birth_year = IntegerField('Birth Year', validators=[Optional()])
    links = FieldList(
        FormField(LinkForm, widget=FormFieldWidget()),
        description='Links to articles about or videos of the incident.',
        min_entries=1,
        widget=BootstrapListWidget())
    notes = FieldList(
        FormField(BaseTextForm, widget=FormFieldWidget()),
        description=
        'This note about the officer will be attributed to your username.',
        min_entries=1,
        widget=BootstrapListWidget())
    descriptions = FieldList(
        FormField(BaseTextForm, widget=FormFieldWidget()),
        description=
        'This description of the officer will be attributed to your username.',
        min_entries=1,
        widget=BootstrapListWidget())
    salaries = FieldList(FormField(SalaryForm, widget=FormFieldWidget()),
                         description='Officer salaries',
                         min_entries=1,
                         widget=BootstrapListWidget())

    submit = SubmitField(label='Add')
Example #25
0
class TripsDateForm(FlaskForm):
    date = DateField('Return', format='%Y-%m-%d')
    submit2 = SubmitField('Search by date')
Example #26
0
class MeetingForm(FlaskForm):
    title = StringField('Title', validators=[InputRequired()])
    date = DateField('DatePicker', format='%Y-%m-%d', validators=[InputRequired()])
    time = StringField('Time', validators=[InputRequired()])
    description = StringField('Description', validators=[InputRequired()])
    link = StringField('Link', validators=[URL()]) 
Example #27
0
class CcForm(FlaskForm):
    date = DateField(format='%Y-%m-%d')
Example #28
0
class DateForm(FlaskForm):
    date = DateField('Choose a date')
    submitDate = SubmitField('Submit')
Example #29
0
class DateForm(FlaskForm):
    id = HiddenField('id')
    date_c = DateField('Creation Date', format='%Y-%m-%d', validators=[DataRequired()])
    date_l = DateField('Application Limit Date', format='%Y-%m-%d' )
Example #30
0
class NoticeForm(Form):
    """ Edit an official notice.

    The issues are limited according to the deadline (or the issue date in the
    for publishers) and the categories and organizations are limited to the
    active one.

    """

    title = StringField(
        label=_("Title (maximum 60 characters)"),
        validators=[InputRequired(),
                    DataRequired(),
                    Length(max=60)],
        render_kw={'maxlength': 60},
    )

    organization = ChosenSelectField(label=_("Organization"),
                                     choices=[],
                                     validators=[InputRequired()])

    category = ChosenSelectField(label=_("Category"),
                                 choices=[],
                                 validators=[InputRequired()])

    print_only = BooleanField(label=_("Print only"), default=False)

    at_cost = RadioField(label=_("Liable to pay costs"),
                         default='no',
                         choices=[('no', _("No")), ('yes', _("Yes"))])

    billing_address = TextAreaField(label=_("Billing address"),
                                    render_kw={'rows': 3},
                                    depends_on=('at_cost', 'yes'),
                                    validators=[
                                        InputRequired(),
                                        DataRequired(),
                                    ])

    issues = MultiCheckboxField(label=_("Issue(s)"),
                                choices=[],
                                validators=[InputRequired()])

    text = QuillField(label=_("Text"),
                      tags=('strong', 'ol', 'ul'),
                      validators=[
                          InputRequired(),
                          HtmlDataRequired(),
                      ])

    author_place = StringField(label=_("Place"),
                               validators=[
                                   InputRequired(),
                                   DataRequired(),
                               ])

    author_date = DateField(label=_("Date (usually the date of the issue)"),
                            validators=[InputRequired()])

    phone_number = PhoneNumberField(
        label=_("Phone number for enquiry"),
        description="+41791112233",
    )

    author_name = TextAreaField(
        label=_("Author"),
        validators=[
            InputRequired(),
            DataRequired(),
        ],
        render_kw={'rows': 4},
    )

    @property
    def author_date_utc(self):
        if self.author_date.data:
            return standardize_date(as_datetime(self.author_date.data), 'UTC')
        return None

    def on_request(self):
        session = self.request.session

        # populate organization (active root elements with no children or
        # active children (but not their parents))
        self.organization.choices = []
        self.organization.choices.append(
            ('', self.request.translate(_("Select one"))))
        query = session.query(Organization)
        query = query.filter(Organization.active.is_(True))
        query = query.filter(Organization.parent_id.is_(None))
        query = query.order_by(Organization.order)
        for root in query:
            if root.children:
                for child in root.children:
                    if child.active:
                        self.organization.choices.append(
                            (child.name, child.title))
            else:
                self.organization.choices.append((root.name, root.title))

        # populate categories
        query = session.query(Category.name, Category.title)
        query = query.filter(Category.active.is_(True))
        query = query.order_by(Category.order)
        self.category.choices = query.all()

        # populate issues
        now = utcnow()
        layout = Layout(None, self.request)

        self.issues.choices = []
        query = session.query(Issue)
        query = query.order_by(Issue.date)
        if self.request.is_private(self.model):
            query = query.filter(date.today() < Issue.date)  # publisher
        else:
            query = query.filter(now < Issue.deadline)  # editor
        for issue in query:
            self.issues.choices.append(
                (issue.name,
                 layout.format_issue(issue, date_format='date_with_weekday')))
            if now >= issue.deadline:
                self.issues.render_kw['data-hot-issue'] = issue.name

        # Remove the print only option if not publisher
        if not self.request.is_private(self.model):
            self.delete_field('print_only')

    def update_model(self, model):
        model.title = self.title.data
        model.organization_id = self.organization.data
        model.category_id = self.category.data
        model.text = self.text.data
        model.author_place = self.author_place.data
        model.author_date = self.author_date_utc
        model.author_name = self.author_name.data
        model.at_cost = self.at_cost.data == 'yes'
        model.billing_address = self.billing_address.data
        model.issues = self.issues.data
        if self.print_only:
            model.print_only = self.print_only.data
        if self.phone_number.data and model.user:
            model.user.phone_number = self.phone_number.formatted_data
        model.apply_meta(self.request.session)

    def apply_model(self, model):
        self.title.data = model.title
        self.organization.data = model.organization_id
        self.category.data = model.category_id
        self.text.data = model.text
        self.author_place.data = model.author_place
        self.author_date.data = model.author_date
        self.author_name.data = model.author_name
        self.at_cost.data = 'yes' if model.at_cost else 'no'
        self.billing_address.data = model.billing_address or ''
        self.issues.data = list(model.issues.keys())
        if model.user:
            self.phone_number.data = model.user.phone_number
        if self.print_only:
            self.print_only.data = True if model.print_only else False