def edit_farmer(): form = FarmerForm() form.group_id.choices = [(form.group_id.data, form.group_id.label.text)] if form.id.data: if form.validate_on_submit(): edit_farmer = sqla.session.query(models.Farmer) \ .filter_by(id=form.id.data).one() edit_farmer.farmer_code = form.farmer_code.data edit_farmer.name = form.name.data edit_farmer.gender = form.gender.data edit_farmer.type = form.type.data edit_farmer.created_at = form.created_at.data if edit_farmer.group_id != form.group_id.data: new_group = models.Group.query.filter_by( id=form.group_id.data).one() edit_farmer.group = new_group sqla.session.commit() return jsonify(is_success=True, message=str(__('Update farmer success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!'))) else: return jsonify(is_success=False, message=str(__("Can't get id of object edit!")))
def edit_group(): form = GroupForm() add_value_for_select_field(form) if form.validate_on_submit(): edit_group = sqla.session.query(models.Group) \ .filter_by(id=form.id.data).one() edit_group.group_code = form.group_code.data edit_group.name = form.name.data edit_group.village = form.village.data edit_group.created_at = form.created_at.data if edit_group.associate_group_id != \ form.associate_group_id.data: edit_group.associate_group = sqla.session \ .query(models.AssociateGroup) \ .filter_by(id=form.associate_group_id.data).one() if edit_group.province_id != form.province_id.data: edit_group.province = sqla.session \ .query(models.Province) \ .filter_by(province_id=form.province_id.data).one() if edit_group.district_id != form.district_id.data: edit_group.district = sqla.session \ .query(models.District) \ .filter_by(district_id=form.district_id.data).one() if edit_group.ward_id != form.ward_id.data: edit_group.ward = sqla.session.query(models.Ward) \ .filter_by(ward_id=form.ward_id.data).one() sqla.session.commit() return jsonify(is_success=True, message=str(__('Edit group success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def add_group(): form = GroupForm() form.id.data = str(uuid.uuid4()) add_value_for_select_field(form) if form.validate_on_submit(): associate_group = sqla.session.query( models.AssociateGroup) \ .filter_by(id=form.associate_group_id.data).one() province = sqla.session.query(models.Province) \ .filter_by(province_id=form.province_id.data).one() district = sqla.session.query(models.District) \ .filter_by(district_id=form.district_id.data).one() ward = sqla.session.query(models.Ward) \ .filter_by(ward_id=form.ward_id.data).one() new_group = models.Group(id=form.id.data, group_code=form.group_code.data, name=form.name.data, village=form.village.data, ward=ward, district=district, associate_group=associate_group, province=province, created_at=form.created_at.data) sqla.session.add(new_group) sqla.session.commit() return jsonify(is_success=True, message=str(__('Add group success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def delete_user(): dform = DeleteForm() if dform.validate_on_submit(): del_user = user_datastore.find_user(id=dform.id.data) user_datastore.delete_user(del_user) sqla.session.commit() return jsonify(is_success=True, message=str(__('Delete user success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def edit_user(): form = UserForm() form.roles.choices = [ (r.name, r.description) for r in models.Role.query.order_by(models.Role.name.asc()).all() ] form.associate_group_id.choices = [(form.associate_group_id.data, form.associate_group_id.label.text)] setattr(form.password, 'validators', [match_pass]) setattr(form.confirm, 'validators', []) if form.validate_on_submit(): edit_user = user_datastore.find_user(id=form.id.data) if form.old_password.data: if not security_utils.verify_and_update_password( form.old_password.data, edit_user): return jsonify(is_success=False, message=str(__('Old password is wrong!'))) else: edit_user.password = security_utils.hash_password( form.password.data) temp_user = sqla.session.query(models.User) \ .filter_by(email=form.email.data).all() if not check_user_email(temp_user, edit_user.email): form.email.errors.append(__('The email was existed!')) return jsonify(is_success=False, message=str(__('The email was existed!'))) else: edit_user.email = form.email.data edit_user.fullname = form.fullname.data if form.associate_group_id.data != edit_user.associate_group_id: edit_user.associate_group = models.AssociateGroup.query \ .filter_by(id=form.associate_group_id.data) \ .one() for new_role in form.roles.data: role_is_added = False for r in edit_user.roles: if new_role == r.name: role_is_added = True break if not role_is_added: user_datastore.add_role_to_user(edit_user.email, new_role) temp_roles = list(edit_user.roles) for old_role in temp_roles: if old_role.name not in form.roles.data: user_datastore.remove_role_from_user( edit_user.email, old_role.name) user_datastore.put(edit_user) return jsonify(is_success=True, message=str(__('Update user success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
class RegisterForm(forms.RegisterForm): fullname = forms.StringField(__('Full name')) province_id = SelectField( __('Province'), id=c.SELECT_DEFAULT_ID, widget=Select(), validators=[validators.DataRequired(message=__('Required field!'))]) def __init__(self, *args, **kwargs): super(RegisterForm, self).__init__(*args, **kwargs) self.province_id.choices = [(p.province_id, p.name) for p in models.Province.query.order_by( models.Province.name).all()]
def edit_certificate(): form = CertificateForm() add_value_for_select_field(form) if form.validate_on_submit(): start_date = form.certificate_start_date.data expiry_date = form.certificate_expiry_date.data if expiry_date: if start_date > expiry_date: form.certificate_expiry_date.errors.append( __('The expiry date must greater than start date')) return jsonify(is_success=False, message=str( __('The expiry date must greater ' 'than start date!'))) edit_certificate = sqla.session \ .query(models.Certificate) \ .filter_by(id=form.id.data).one() edit_certificate.certificate_code = form \ .certificate_code.data edit_certificate.group_area = form.group_area.data edit_certificate.member_count = form.member_count.data edit_certificate.certificate_start_date = start_date edit_certificate.certificate_expiry_date = expiry_date edit_certificate.gov_certificate_id = form \ .gov_certificate_id.data edit_certificate.status = form.status.data edit_certificate.re_verify_status = form \ .re_verify_status.data if form.modify_info.data: edit_certificate._modify_info = form.modify_info.data if form.owner_farmer_id: if edit_certificate.owner_farmer_id != \ form.owner_farmer_id.data: edit_certificate.owner_farmer = models.Farmer \ .query.filter_by( id=form.owner_farmer_id.data).one() elif form.owner_group_id: if edit_certificate.owner_group_id != \ form.owner_group_id.data: edit_certificate.owner_group = models.Group.query \ .filter_by(id=form.owner_group_id.data).one() return jsonify(is_success=True, message=str(__('Edit certificate success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def add_certificate(): form = CertificateForm() add_value_for_select_field(form) form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): start_date = form.certificate_start_date.data expiry_date = form.certificate_expiry_date.data if expiry_date: if start_date > expiry_date: form.certificate_expiry_date.errors.append( __('The expiry date must greater than start date')) return jsonify(is_success=False, message=str( __('The expiry date must greater ' 'than start date!'))) owner_farmer = None owner_group = None if form.owner_farmer_id: owner_farmer = models.Farmer.query \ .filter_by(id=form.owner_farmer_id.data).one() elif form.owner_group_id: owner_group = models.Group.query \ .filter_by(id=form.owner_group_id.data).one() new_cert = models.Certificate( id=form.id.data, certificate_code=form.certificate_code.data, group_area=form.group_area.data, member_count=form.member_count.data, certificate_start_date=start_date, certificate_expiry_date=expiry_date, gov_certificate_id=form.gov_certificate_id.data, status=form.status.data, re_verify_status=form.re_verify_status.data, owner_farmer=owner_farmer, owner_group=owner_group, _modify_info=form.modify_info.data) sqla.session.add(new_cert) sqla.session.commit() return jsonify(is_success=True, message=str(__('Add certificate success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def add_farmer(): form = FarmerForm() form.group_id.choices = [(form.group_id.data, form.group_id.label.text)] form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): group_farmer = models.Group.query.filter_by( id=form.group_id.data).one() new_farmer = models.Farmer(id=form.id.data, type=form.type.data, farmer_code=form.farmer_code.data, name=form.name.data, group=group_farmer, gender=form.gender.data, created_at=form.created_at.data) sqla.session.add(new_farmer) sqla.session.commit() return jsonify(is_success=True, message=str(__('Add farmer success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def add_user(): form = UserForm() form.roles.choices = [ (r.name, r.description) for r in models.Role.query.order_by(models.Role.name.asc()).all() ] form.associate_group_id.choices = [(form.associate_group_id.data, form.associate_group_id.label.text)] setattr(form.password, 'validators', [data_required, match_pass]) setattr(form.confirm, 'validators', [data_required]) form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): if not user_datastore.find_user(email=form.email.data): associate_group = models.AssociateGroup.query.filter_by( id=form.associate_group_id.data).one() user_datastore.create_user(id=form.id.data, email=form.email.data, fullname=form.fullname.data, associate_group=associate_group, password=security_utils.hash_password( form.password.data)) sqla.session.commit() for role in form.roles.data: user_datastore.add_role_to_user(form.email.data, role) sqla.session.commit() return jsonify(is_success=True, message=str(__('Add user success!'))) else: form.email.errors.append(__('The email was existed!')) return jsonify(is_success=False, message=str(__('The email was existed!'))) else: error_message = "" if form.errors.keys(): for k in form.errors.keys(): for mes in form.errors[k]: error_message += mes else: error_message = str(__('The form is not validate!')) return jsonify(is_success=False, message=error_message)
def edit_agroup(): form = AssociateGroupForm() form.province_id.choices = [(form.province_id.data, form.province_id.label.text)] if form.validate_on_submit(): edit_agroup = sqla.session.query(models.AssociateGroup) \ .filter_by(id=form.id.data).one() edit_agroup.email = form.email.data edit_agroup.associate_group_code = form \ .associate_group_code.data edit_agroup.name = form.name.data edit_agroup.created_at = form.created_at.data if edit_agroup.province_id != form.province_id.data: edit_agroup.province = models.Province.query \ .filter_by(province_id=form.province_id.data) \ .one() sqla.session.commit() return jsonify(is_success=True, message=str(__('Edit associate group success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def add_agroup(): form = AssociateGroupForm() form.province_id.choices = [(form.province_id.data, form.province_id.label.text)] form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): province = sqla.session.query(models.Province) \ .filter_by(province_id=form.province_id.data).one() as_group = form.associate_group_code.data new_agroup = models.AssociateGroup( id=form.id.data, associate_group_code=as_group, name=form.name.data, province=province, email=form.email.data, created_at=form.created_at.data ) sqla.session.add(new_agroup) sqla.session.commit() return jsonify(is_success=True, message=str(__('Add associate group success!'))) else: return jsonify(is_success=False, message=str(__('The form is not validate!')))
def index(): form = FarmerForm() dform = DeleteForm() if current_app.config['AJAX_CALL_ENABLED']: form.group_id.choices = [] return render_template('farmer/index.html', form=form, dform=dform) else: province_id = current_user.province_id if province_id and is_region_role(): farmers = models.Farmer.query.join(models.Group).filter( models.Group.province_id == province_id, models.Group._deleted_at == None, models.Farmer._deleted_at == None).order_by( models.Farmer.name.asc()).all() form.group_id.choices = [ (p.id, p.name) for p in models.Group.query.filter_by( province_id=province_id, _deleted_at=None).order_by( models.Group.name.asc()).all() ] else: farmers = models.Farmer.query.filter_by(_deleted_at=None).all() form.group_id.choices = [] form.group_id.choices = [(form.group_id.data, form.group_id.label.text) ] # form create or edit submit if request.method == 'POST' and form.data['submit']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) # edit user if form.id.data: if form.validate_on_submit(): edit_farmer = sqla.session.query(models.Farmer) \ .filter_by(id=form.id.data).one() edit_farmer.farmer_code = form.farmer_code.data edit_farmer.name = form.name.data edit_farmer.gender = form.gender.data edit_farmer.type = form.type.data if edit_farmer.group_id != form.group_id.data: new_group = models.Group.query.filter_by( id=form.group_id.data).one() edit_farmer.group = new_group sqla.session.commit() for fm in farmers: if fm.id == edit_farmer.id: farmers.remove(fm) farmers.append(edit_farmer) flash(str(__('Update farmer success!')), 'success') # add user else: form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): group_farmer = models.Group.query.filter_by( id=form.group_id.data).one() new_farmer = models.Farmer( id=form.id.data, type=form.type.data, farmer_code=form.farmer_code.data, name=form.name.data, group=group_farmer, gender=form.gender.data) sqla.session.add(new_farmer) sqla.session.commit() farmers.append(new_farmer) flash(str(__('Add farmer success!')), 'success') return redirect(url_for(request.endpoint)) # form delete submit if request.method == 'POST' and dform.data['submit_del']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) elif dform.validate_on_submit(): del_farmer = sqla.session.query(models.Farmer) \ .filter_by(id=dform.id.data).one() del_farmer._deleted_at = func.now() if dform.modify_info.data: del_farmer._modify_info = dform.modify_info.data sqla.session.commit() farmers.remove(del_farmer) flash(str(__('Delete farmer success!')), 'success') return redirect(url_for(request.endpoint)) return render_template('farmer/index.html', farmers=farmers, form=form, dform=dform)
class CertificateForm(FlaskForm): certificate_code = StringField( __('Certificate code'), validators=[], render_kw={"placeholder": __('Certificate code')}) group_area = IntegerField(__('Group area'), validators=[data_required], render_kw={"placeholder": __('Group area')}) member_count = IntegerField(__('Member count'), validators=[data_required], render_kw={"placeholder": __('Member count')}) certificate_start_date = DateField( __('Certificate verify date'), widget=Date(), render_kw={"placeholder": __('Certificate verify date')}) gov_certificate_id = StringField( __('Decision code'), validators=[data_required], render_kw={"placeholder": __('Decision code')}) certificate_expiry_date = DateField( __('Certificate expiry date'), validators=(validators.Optional(), ), widget=Date(), render_kw={"placeholder": __('Certificate expiry date')}) status = SelectField( __('Status'), validators=[data_required], coerce=int, widget=Select(), choices=[(c.CertificateStatusType.approved.value, __('Approved')), (c.CertificateStatusType.rejected.value, __('Refuse')), (c.CertificateStatusType.decline.value, __('Withdraw')), (c.CertificateStatusType.warning.value, __('Warning')), (c.CertificateStatusType.punish.value, __('Punish'))]) re_verify_status = SelectField( __('Reverify Status'), validators=[data_required], coerce=int, widget=Select(), choices=[ (c.CertificateReVerifyStatusType.adding.value, __('New')), (c.CertificateReVerifyStatusType.keeping.value, __('Remaining')), (c.CertificateReVerifyStatusType.converting.value, __('Conversion')), (c.CertificateReVerifyStatusType.fortuity.value, __('Suddenly')) ]) owner_farmer_id = SelectField(__('Certificated farmer'), validators=[data_required], coerce=str, widget=Select(), id='load_now-farmer') owner_group_id = SelectField(__('Certificated group'), validators=[data_required], coerce=str, widget=Select(), id='load_now-group') modify_info = StringField(__('Note'), render_kw={"placeholder": __('Note')}) id = HiddenField(__('Id'), validators=[data_required]) submit = SubmitField(__('Submit'), widget=Submit())
class FarmerForm(FlaskForm): farmer_code = StringField(__('Farmer code'), validators=[data_required], render_kw={"placeholder": __('Farmer code')}) name = StringField(__('Name'), validators=[data_required], render_kw={"placeholder": __('Name')}) gender = SelectField(__('Gender'), validators=[data_required], coerce=int, widget=Select(), choices=[(c.GenderType.male.value, __('Male')), (c.GenderType.female.value, __('Female'))]) type = SelectField(__('Type'), validators=[data_required], coerce=int, widget=Select(), choices=[(c.FarmerType.member.value, __('Member')), (c.FarmerType.reviewer.value, __('Reviewer')), (c.FarmerType.leader.value, __('Leader')), (c.FarmerType.deputy_leader.value, __('Deputy leader')), (c.FarmerType.counter.value, __('Counter'))]) group_id = SelectField(__('Group'), validators=[data_required], coerce=str, widget=Select(), id='load_now-group', choices=[]) created_at = IntegerField(__('Year created'), render_kw={"placeholder": __('Enter year')}) id = HiddenField(__('Id'), validators=[data_required]) submit = SubmitField(__('Submit'), widget=Submit())
def index(): form = GroupForm() dform = DeleteForm() if current_app.config['AJAX_CALL_ENABLED']: form.associate_group_id.choices = [] form.ward_id.choices = [] form.district_id.choices = [] form.province_id.choices = [] associate_group_id = current_user.associate_group_id if associate_group_id and is_region_role(): form.associate_group_id.choices = [ (ag.id, ag.name) for ag in models.AssociateGroup.query.filter_by( id=associate_group_id).all() ] return render_template('group/index.html', form=form, dform=dform) else: province_id = current_user.province_id if province_id and is_region_role(): gs = models.Group.query.filter_by(province_id=province_id, _deleted_at=None).all() form.associate_group_id.choices = [ (ag.id, ag.name) for ag in models.AssociateGroup.query.filter_by( province_id=province_id, _deleted_at=None).order_by( models.AssociateGroup.name.asc()).all() ] form.province_id.choices = [ (p.province_id, p.type + " " + p.name) for p in models.Province.query.filter_by( province_id=province_id).order_by( models.Province.name.asc()).all() ] form.district_id.choices = [ (d.district_id, d.type + " " + d.name) for d in models.District.query.filter_by( province_id=province_id).order_by( models.District.name.asc()).all() ] form.ward_id.choices = [ (w.ward_id, w.type + " " + w.name) for w in models.Ward.query.join(models.District).filter( models.District.province_id == province_id).order_by( models.Ward.name.asc()).all() ] else: gs = models.Group.query.filter_by(_deleted_at=None).all() form.associate_group_id.choices = [] form.province_id.choices = [] form.district_id.choices = [] form.ward_id.choices = [] # form create or edit submit if request.method == 'POST' and form.data['submit']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) form.province_id.choices = [(form.province_id.data, form.province_id.label.text)] form.district_id.choices = [(form.district_id.data, form.district_id.label.text)] form.ward_id.choices = [(form.ward_id.data, form.ward_id.label.text)] form.associate_group_id.choices = [ (form.associate_group_id.data, form.associate_group_id.label.text) ] # edit group if form.id.data: if form.validate_on_submit(): edit_group = sqla.session.query(models.Group) \ .filter_by(id=form.id.data).one() edit_group.group_code = form.group_code.data edit_group.name = form.name.data edit_group.village = form.village.data if edit_group.associate_group_id != \ form.associate_group_id.data: edit_group.associate_group = sqla.session \ .query(models.AssociateGroup) \ .filter_by(id=form.associate_group_id.data).one() if edit_group.province_id != form.province_id.data: edit_group.province = sqla.session \ .query(models.Province) \ .filter_by(province_id=form.province_id.data).one() if edit_group.district_id != form.district_id.data: edit_group.district = sqla.session \ .query(models.District) \ .filter_by(district_id=form.district_id.data).one() if edit_group.ward_id != form.ward_id.data: edit_group.ward = sqla.session.query(models.Ward) \ .filter_by(ward_id=form.ward_id.data).one() sqla.session.commit() for gr in gs: if gr.id == edit_group.id: gs.remove(gr) gs.append(edit_group) flash(str(__('Update group success!')), 'success') return redirect(url_for(request.endpoint)) else: flash(str(__('The form is not validated!')), 'error') # add group else: form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): associate_group = sqla.session.query( models.AssociateGroup) \ .filter_by(id=form.associate_group_id.data).one() province = sqla.session.query(models.Province) \ .filter_by(province_id=form.province_id.data).one() district = sqla.session.query(models.District) \ .filter_by(district_id=form.district_id.data).one() ward = sqla.session.query(models.Ward) \ .filter_by(ward_id=form.ward_id.data).one() new_group = models.Group(id=form.id.data, group_code=form.group_code.data, name=form.name.data, village=form.village.data, ward=ward, district=district, associate_group=associate_group, province=province) sqla.session.add(new_group) sqla.session.commit() gs.append(new_group) flash(str(__('Add group success!')), 'success') return redirect(url_for(request.endpoint)) else: flash(str(__('The form is not validated!')), 'error') # form delete submit if request.method == 'POST' and dform.data['submit_del']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) elif dform.validate_on_submit(): del_group = sqla.session.query(models.Group) \ .filter_by(id=dform.id.data).one() del_group._deleted_at = func.now() if dform.modify_info.data: del_group._modify_info = dform.modify_info.data sqla.session.commit() flash(str(__('Delete group success!')), 'success') return redirect(url_for(request.endpoint)) return render_template('group/index.html', gs=gs, form=form, dform=dform)
def farmers(): form = CertificateForm() dform = DeleteForm() if current_app.config['AJAX_CALL_ENABLED']: form.owner_farmer_id.choices = [] form.owner_group_id.choices = [] return render_template('certificate/index.html', form=form, dform=dform, only_farmer=True) else: province_id = current_user.province_id today = datetime.datetime.today().strftime('%Y-%m-%d') if province_id and is_region_role(): cs = [] tmp_cs = models.Certificate.query.join(models.Farmer).filter( models.Farmer._deleted_at == None, models.Certificate.owner_farmer_id != None, models.Certificate._deleted_at == None, or_(models.Certificate.certificate_expiry_date >= today, models.Certificate.certificate_expiry_date == None)).all() for cert in tmp_cs: if cert.owner_farmer.group.province_id == province_id: cs.append(cert) del form.owner_group_id form.owner_farmer_id.choices = [ (f.id, f.name) for f in models.Farmer.query.join(models.Group).filter( models.Group._deleted_at == None, models.Farmer._deleted_at == None).order_by(models.Farmer.name.asc()).all() ] else: cs = models.Certificate.query.filter( models.Certificate.owner_farmer_id != None, models.Certificate._deleted_at == None, or_(models.Certificate.certificate_expiry_date >= today, models.Certificate.certificate_expiry_date == None)).all() form.owner_farmer_id.choices = [] del form.owner_group_id # form create or edit submit if request.method == 'POST' and form.data['submit']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) form.owner_farmer_id.choices = [(form.owner_farmer_id.data, form.owner_farmer_id.label.text)] form.owner_group_id.choices = [(form.owner_group_id.data, form.owner_group_id.label.text)] # edit certificate if form.id.data: if form.validate_on_submit(): start_date = form.certificate_start_date.data expiry_date = form.certificate_expiry_date.data if start_date > expiry_date: form.certificate_expiry_date.errors.append( __('The expiry date must greater than start date')) flash((str( __('The expiry date must greater than ' 'start date!'))), 'error') else: edit_certificate = sqla.session \ .query(models.Certificate) \ .filter_by(id=form.id.data).one() edit_certificate.certificate_code = form \ .certificate_code.data edit_certificate.group_area = form.group_area.data edit_certificate.member_count = form.member_count.data edit_certificate.certificate_start_date = start_date edit_certificate.certificate_expiry_date = expiry_date edit_certificate.gov_certificate_id = form \ .gov_certificate_id.data edit_certificate.status = form.status.data edit_certificate.re_verify_status = form \ .re_verify_status.data if edit_certificate.owner_farmer_id != \ form.owner_farmer_id.data: edit_certificate.owner_farmer = models.Farmer \ .query.filter_by( id=form.owner_farmer_id.data).one() if edit_certificate.owner_group_id != \ form.owner_group_id.data: edit_certificate.owner_group = models.Group.query \ .filter_by(id=form.owner_group_id.data).one() flash(str(__('Update certificate success!')), 'success') return redirect(url_for(request.endpoint)) else: flash(str(__('The form is not validated!')), 'error') # add certificate else: form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): start_date = form.certificate_start_date.data expiry_date = form.certificate_expiry_date.data if start_date > expiry_date: form.certificate_expiry_date.errors.append( __('The expiry date must greater than start date')) flash((str( __('The expiry date must greater ' 'than start date!'))), 'error') else: owner_farmer = models.Farmer.query \ .filter_by(id=form.owner_farmer_id.data).one() owner_group = models.Group.query \ .filter_by(id=form.owner_group_id.data).one() new_cert = models.Certificate( id=form.id.data, certificate_code=form.certificate_code.data, group_area=form.group_area.data, member_count=form.member_count.data, certificate_start_date=start_date, certificate_expiry_date=expiry_date, gov_certificate_id=form.gov_certificate_id.data, status=form.status.data, re_verify_status=form.re_verify_status.data, owner_farmer=owner_farmer, owner_group=owner_group) sqla.session.add(new_cert) sqla.session.commit() flash(str(__('Add certificate success!')), 'success') return redirect(url_for(request.endpoint)) else: flash(str(__('The form is not validated!')), 'error') # form delete submit if request.method == 'POST' and dform.data['submit_del']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) elif dform.validate_on_submit(): del_cert = sqla.session.query(models.Certificate) \ .filter_by(id=dform.id.data).one() del_cert._deleted_at = func.now() if dform.modify_info.data: del_cert._modify_info = dform.modify_info.data sqla.session.commit() cs.remove(del_cert) flash(str(__('Delete certificate success!')), 'success') return redirect(url_for(request.endpoint)) return render_template('certificate/index.html', cs=cs, form=form, dform=dform, only_farmer=True)
class GroupForm(FlaskForm): group_code = StringField(__('Group code'), validators=[data_required], render_kw={"placeholder": __('Group code')}) name = StringField(__('Name'), validators=[data_required], render_kw={"placeholder": __('Name')}) province_id = SelectField(__('Province'), validators=[data_required], coerce=str, widget=Select(), id='load_now-province') district_id = SelectField(__('District'), validators=[data_required], coerce=str, widget=Select()) ward_id = SelectField(__('Ward'), validators=[data_required], coerce=str, widget=Select()) village = StringField(__('Village'), render_kw={"placeholder": __('Village')}) associate_group_id = SelectField(__('Inter-group'), validators=[data_required], coerce=str, widget=Select(), id='load_now-associate_group') created_at = IntegerField(__('Year created'), render_kw={"placeholder": __('Enter year')}) id = HiddenField(__('Id'), validators=[data_required]) submit = SubmitField(__('Submit'), widget=Submit())
from flask_wtf import FlaskForm from wtforms import StringField, SelectField, HiddenField, validators, \ SubmitField, IntegerField from pgscm.utils import __, Select, Submit data_required = validators.DataRequired(message=__('Required field!')) class GroupForm(FlaskForm): group_code = StringField(__('Group code'), validators=[data_required], render_kw={"placeholder": __('Group code')}) name = StringField(__('Name'), validators=[data_required], render_kw={"placeholder": __('Name')}) province_id = SelectField(__('Province'), validators=[data_required], coerce=str, widget=Select(), id='load_now-province') district_id = SelectField(__('District'), validators=[data_required], coerce=str, widget=Select()) ward_id = SelectField(__('Ward'), validators=[data_required], coerce=str, widget=Select()) village = StringField(__('Village'), render_kw={"placeholder": __('Village')})
def index(): form = AssociateGroupForm() dform = DeleteForm() if current_app.config['AJAX_CALL_ENABLED']: form.province_id.choices = [] return render_template('agroup/index.html', form=form, dform=dform) else: province_id = current_user.province_id if province_id and is_region_role(): ags = models.AssociateGroup.query.filter_by( province_id=province_id, _deleted_at=None).order_by( models.AssociateGroup.name.asc()).all() form.province_id.choices = [ (p.province_id, p.type + " " + p.name) for p in models.Province.query.filter_by(province_id=province_id).all()] else: ags = models.AssociateGroup.query.filter_by(_deleted_at=None)\ .order_by(models.AssociateGroup.name.asc()).all() form.province_id.choices = [] # form create or edit submit if request.method == 'POST' and form.data['submit']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) form.province_id.choices = [(form.province_id.data, form.province_id.label.text)] # edit associate group if form.id.data: if form.validate_on_submit(): edit_agroup = sqla.session.query(models.AssociateGroup) \ .filter_by(id=form.id.data).one() edit_agroup.email = form.email.data edit_agroup.associate_group_code = form \ .associate_group_code.data edit_agroup.name = form.name.data if edit_agroup.province_id != form.province_id.data: edit_agroup.province = models.Province.query \ .filter_by(province_id=form.province_id.data) \ .one() flash(str(__('Update associate group success!')), 'success') return redirect(url_for(request.endpoint)) else: flash(str(__('The form is not validated!')), 'error') # add associate group else: form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): province = sqla.session.query(models.Province) \ .filter_by(province_id=form.province_id.data).one() as_group = form.associate_group_code.data new_agroup = models.AssociateGroup( id=form.id.data, associate_group_code=as_group, name=form.name.data, province=province, email=form.email.data, ) sqla.session.add(new_agroup) sqla.session.commit() flash(str(__('Add associate group success!')), 'success') return redirect(url_for(request.endpoint)) else: flash(str(__('The form is not validated!')), 'error') # form delete submit if request.method == 'POST' and dform.data['submit_del']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) elif dform.validate_on_submit(): del_agroup = sqla.session.query(models.AssociateGroup) \ .filter_by(id=dform.id.data).one() del_agroup._deleted_at = func.now() if dform.modify_info.data: del_agroup._modify_info = dform.modify_info.data sqla.session.commit() flash(str(__('Delete associate group success!')), 'success') return redirect(url_for(request.endpoint)) return render_template('agroup/index.html', ags=ags, form=form, dform=dform)
from flask_wtf import FlaskForm from wtforms import StringField, SelectField, HiddenField, \ validators, SubmitField, SelectMultipleField, PasswordField from wtforms.fields.html5 import EmailField from pgscm.utils import __, Select, Submit, MultiSelect data_required = validators.DataRequired(message=__('Required field!')) match_pass = validators.EqualTo('confirm', message=__('Passwords must match')) class UserForm(FlaskForm): fullname = StringField(__('Name'), validators=[data_required], render_kw={"placeholder": __('Name')}) email = EmailField(__('Email'), validators=[data_required, validators.Email('')], render_kw={"placeholder": __('Email')}) old_password = PasswordField(__('Old password'), id='old_pass') password = PasswordField(__('New Password'), validators=[data_required, match_pass]) confirm = PasswordField(__('Repeat Password'), validators=[data_required]) roles = SelectMultipleField(__('Role'), validators=[data_required], widget=MultiSelect()) associate_group_id = SelectField(__('Associated Group'), validators=[data_required], coerce=str, widget=Select(), id='load_now-associate_group')
class UserForm(FlaskForm): fullname = StringField(__('Name'), validators=[data_required], render_kw={"placeholder": __('Name')}) email = EmailField(__('Email'), validators=[data_required, validators.Email('')], render_kw={"placeholder": __('Email')}) old_password = PasswordField(__('Old password'), id='old_pass') password = PasswordField(__('New Password'), validators=[data_required, match_pass]) confirm = PasswordField(__('Repeat Password'), validators=[data_required]) roles = SelectMultipleField(__('Role'), validators=[data_required], widget=MultiSelect()) associate_group_id = SelectField(__('Associated Group'), validators=[data_required], coerce=str, widget=Select(), id='load_now-associate_group') id = HiddenField(__('Id'), validators=[data_required]) submit = SubmitField(__('Submit'), widget=Submit())
def users(): form = UserForm() dform = DeleteForm() form.roles.choices = [ (r.name, r.description) for r in models.Role.query.order_by(models.Role.name.asc()).all() ] if current_app.config['AJAX_CALL_ENABLED']: form.associate_group_id.choices = [] associate_group_id = current_user.associate_group_id if associate_group_id and is_region_role(): form.associate_group_id.choices = [ (ag.id, ag.name) for ag in models.AssociateGroup.query.filter_by( id=associate_group_id).all() ] return render_template('admin/user.html', form=form, dform=dform) else: province_id = current_user.province_id if province_id and is_region_role(): us = models.User.query.filter_by(province_id=province_id).all() form.province_id.choices = [ (p.province_id, p.type + " " + p.name) for p in models.Province.query.filter_by( province_id=province_id).all() ] else: us = models.User.query.all() form.province_id.choices = [] # form create or edit submit if request.method == 'POST' and form.data['submit']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) form.province_id.choices = [(form.province_id.data, form.province_id.label.text)] # edit user if form.id.data: # remove required validator in fields pass and confirm # when form is edit form setattr(form.password, 'validators', [match_pass]) setattr(form.confirm, 'validators', []) if form.validate_on_submit(): edit_user = user_datastore.find_user(id=form.id.data) if form.old_password.data: if not security_utils.verify_and_update_password( form.old_password.data, edit_user): flash(str(__('Old password is wrong!')), 'error') # TODO: fix return to keep current state of form return redirect(url_for(request.endpoint)) else: edit_user.password = security_utils.hash_password( form.password.data) temp_user = sqla.session.query(models.User) \ .filter_by(email=form.email.data).all() if not check_user_email(temp_user, edit_user.email): form.email.errors.append(__('The email was existed!')) flash(str(__('The email was existed!')), 'error') else: edit_user.email = form.email.data edit_user.fullname = form.fullname.data if form.province_id.data != edit_user.province_id: edit_user.province = models.Province.query \ .filter_by(province_id=form.province_id.data) \ .one() for new_role in form.roles.data: role_is_added = False for r in edit_user.roles: if new_role == r.name: role_is_added = True break if not role_is_added: user_datastore.add_role_to_user( edit_user.email, new_role) temp_roles = list(edit_user.roles) for old_role in temp_roles: if old_role.name not in form.roles.data: user_datastore.remove_role_from_user( edit_user.email, old_role.name) user_datastore.put(edit_user) for user in us: if user.id == edit_user.id: us.remove(user) us.append(edit_user) flash(str(__('Update user success!')), 'success') return redirect(url_for(request.endpoint)) else: flash(str(__('The form is not validated!')), 'error') # add user else: setattr(form.password, 'validators', [data_required, match_pass]) setattr(form.confirm, 'validators', [data_required]) form.id.data = str(uuid.uuid4()) if form.validate_on_submit(): if not user_datastore.find_user(email=form.email.data): province = models.Province.query.filter_by( province_id=form.province_id.data).one() user_datastore.create_user( id=form.id.data, email=form.email.data, fullname=form.fullname.data, province=province, password=security_utils.hash_password( form.password.data)) sqla.session.commit() for role in form.roles.data: user_datastore.add_role_to_user( form.email.data, role) sqla.session.commit() flash(str(__('Add user success!')), 'success') return redirect(url_for(request.endpoint)) else: form.email.errors.append(__('The email was existed!')) flash(str(__('The email was existed!')), 'error') else: flash(str(__('The form is not validated!')), 'error') # form delete submit if request.method == 'POST' and dform.data['submit_del']: if not check_role(crud_role): return redirect(url_for(request.endpoint)) elif dform.validate_on_submit(): del_user = user_datastore.find_user(id=dform.id.data) user_datastore.delete_user(del_user) sqla.session.commit() flash(str(__('Delete user success!')), 'success') return redirect(url_for(request.endpoint)) return render_template('admin/user.html', us=us, form=form, dform=dform)
class AssociateGroupForm(FlaskForm): associate_group_code = StringField(__('Associate group code'), validators=[data_required], render_kw={ "placeholder": __( 'Associate group code')}) name = StringField(__('Name'), validators=[data_required], render_kw={"placeholder": __('Name')}) email = StringField(__('Email'), validators=[validators.Email()], render_kw={"placeholder": __('Email')}) province_id = SelectField(__('Province'), widget=Select(), id='load_now-province') created_at = IntegerField(__('Year created'), render_kw={"placeholder": __('Enter year')}) id = HiddenField(__('Id'), validators=[data_required]) submit = SubmitField(__('Submit'), widget=Submit())