def getnextid(city): lastUser = User.objects( uid__startswith=(str(city)[:3].upper())).order_by('-uid').first() if lastUser: return int(lastUser['uid'][3:]) + 1 else: return 1
def getpartydetails(): user = json.loads(User.objects(pk=request.form["id"]).first().to_json(follow_reference=True)) data = { "id" : user['id'] if 'id' in user else "", "role" : user['role'] if 'role' in user else "", "branch" : user['branch']['id'] if 'branch' in user else "", "category" : user['category'] if 'category' in user else "", "group" : user['group']['id'] if 'group' in user else "", "companyname" : user['companyname'] if 'companyname' in user else "", "fullname" : user['fullname'] if 'fullname' in user else "", "email" : user['email'] if 'email' in user else "", "mobilenumber" : user['mobilenumber'] if 'mobilenumber' in user else "", "gstin" : user['gstin'] if 'gstin' in user else "", "billingaddress" : user['billingaddress'] if 'billingaddress' in user else "", "city" : user['city'] if 'city' in user else "", "state" : user['state'] if 'state' in user else "", "pincode" : user['pincode'] if 'pincode' in user else "", "openingbalance" : user['openingbalance'] if 'openingbalance' in user else "", "userclass" : user['userclass'], "openingbalancedate" : datetime.fromtimestamp(float(user['openingbalancedate'])).strftime("%d/%m/%Y") if 'openingbalancedate' in user else "", "status" : user['status'] if 'status' in user else "", "whatsapp" : user['whatsapp'] if 'whatsapp' in user else False } brands_data = ["label_" + str(brand.name).replace(" ","_").strip() for brand in Brands.objects()] for key in brands_data: data[key] = json.loads(user["brand"])[key] if key in json.loads(user["brand"]) else "NA", return jsonify(data)
def signin(): form = LoginForm(request.form) if current_user.is_authenticated == True: return redirect("/") if request.method == 'POST' and form.validate_on_submit(): if (re.search(r'[A-Za-z]{3}\d*', str(form.loginid.data))): checkuser = User.objects(uid=form.loginid.data).first() else: checkuser = User.objects(mobilenumber=form.loginid.data).first() if checkuser and bcrypt.check_password_hash(checkuser['password'], form.password.data): login_user(checkuser) return redirect("/") flash("login id / Password Invalid!", "error") return render_template('auth/sign-in.html', form=form)
def getallparties(): users = User.objects(role__lte=current_user.role, status__ne=userstatus['deleted'], pk__ne=current_user.pk).only('uid','fullname','mobilenumber','gstin','openingbalance','category','role','status','branch','group','companyname', 'userclass') users = [json.loads(user.to_json(follow_reference=True)) for user in users] for index, user in enumerate(users): if 'group' not in user: user['group'] = {"name": ""} if 'branch' not in user: user['branch'] = {"code": ""} user['role'] = list(roles.keys())[list(roles.values()).index(user['role'])].capitalize() user['status'] = list(userstatus.keys())[list(userstatus.values()).index(user['status'])].capitalize() return jsonify(data=users)
def load_user(user_id): return User.objects(pk=user_id).first()
def editprofile(): brands_data = [ "label_" + str(brand.name).replace(" ", "_").strip() for brand in Brands.objects() ] labelsFields = [] for key in brands_data: setattr( EditUserInfoForm, key, StringField(" ".join(str(key).split("_")[1:]) + " Label", id=key, _name=key)) userinfoform = EditUserInfoForm(request.form) userpasswordform = EditUserPasswordForm(request.form) if request.method == 'GET': for key in userinfoform: if str(key.id).startswith("label_"): exec( "userinfoform.%s.data = json.loads(current_user.brand)['%s'] if '%s' in json.loads(current_user.brand).keys() else 'NA'" % (key.id, key.id, key.id)) labelsFields.append(key) elif key.id not in [ "samebilladdress", "csrf_token", "whatsapp", "submituserinfo" ]: exec("userinfoform.%s.data = current_user.%s" % (key.id, key.id)) userinfoform.samebilladdress.data = True if current_user.communicationaddress == current_user.billingaddress else False userinfoform.whatsapp.data = True if current_user.whatsapp else False if request.method == 'POST' and userinfoform.submituserinfo.data and userinfoform.validate( ): if userinfoform.gstin.data != "": # Validate GST Number Pattern. if (not gst.checkpattern(userinfoform.gstin.data)): flash("Invalid GST Pattern!", "error") return redirect(url_for('general.parties')) # Validate GST Number Checksum. if (not gst.checkchecksum(userinfoform.gstin.data)): flash("Invalid GST Number!", "error") return redirect(url_for('general.parties')) temp_labels = {} for key in userinfoform.data.items(): if key[0].startswith('label_'): temp_labels[key[0]] = key[1] if key[1] else "NA" user = User.objects(uid=userinfoform.uid.data).update( category=userinfoform.category.data, companyname=userinfoform.companyname.data if userinfoform.category.data == "company" else "", fullname=userinfoform.fullname.data, email=userinfoform.email.data if userinfoform.email.data else None, mobilenumber=userinfoform.mobilenumber.data, whatsapp=userinfoform.whatsapp.data, gstin=userinfoform.gstin.data, communicationaddress=userinfoform.communicationaddress.data, billingaddress=userinfoform.billingaddress.data, state=userinfoform.state.data, city=userinfoform.city.data, pincode=userinfoform.pincode.data, brand=json.dumps(temp_labels)) if user: flash("Profile Updated Successfully", "success") return redirect(url_for('dashboard.editprofile')) flash("Failed to Profile", "error") return redirect(url_for('dashboard.editprofile')) if request.method == 'POST' and userpasswordform.submituserpassword.data and userpasswordform.validate( ): if bcrypt.check_password_hash(current_user.password, userpasswordform.oldpassword.data): if userpasswordform.newpassword.data != userpasswordform.retypenewpassword.data: flash("Password and Confirm Password did't Match", "error") return redirect(url_for('dashboard.editprofile')) user = User(pk=current_user.pk).update( password=bcrypt.generate_password_hash( userpasswordform.newpassword.data).decode("utf-8")) if user: flash("Password Updated Successfully", "success") return redirect(url_for('auth.logout')) flash("Failed to Update Password", "error") return redirect(url_for('dashboard.editprofile')) flash("Incorrect Old Password", "error") return redirect(url_for('dashboard.editprofile')) return render_template('dashboard/edit-profile.html', userinfoform=userinfoform, userpasswordform=userpasswordform, brands_data=labelsFields)
def parties(): brands_data = ["label_" + str(brand.name).replace(" ","_").strip() for brand in Brands.objects()] for key in brands_data: setattr(PartyForm, key, StringField(key)) form = PartyForm(request.form) form.branch.choices = [("", "Select Branch")] + [(str(branch.pk), branch.code) for branch in Branches.objects()] form.group.choices = [("", "Select Group")] + [(str(group.pk), group.name) for group in User_Groups.objects()] if request.method == 'POST' and form.validate_on_submit(): if form.gstin.data != "": # Validate GST Number Pattern. if (not gst.checkpattern(form.gstin.data)): flash("Invalid GST Pattern!", "error") return redirect(url_for('general.parties')) # Validate GST Number Checksum. if (not gst.checkchecksum(form.gstin.data)): flash("Invalid GST Number!", "error") return redirect(url_for('general.parties')) if form.id.data == "new": existing_user = User.objects(mobilenumber=form.mobilenumber.data).first() if existing_user is None: if not checkSMSBalance(mode="sms"): flash("SMS Limit Exceeded", "error") return redirect(url_for('general.parties')) password = generate_password(8) temp_labels = {} for key in form.data.items(): if key[0].startswith('label_'): temp_labels[key[0]] = key[1] if key[1] else "NA" uid = str(form.city.data)[0:3].upper() + str(getnextid(form.city.data)) user = User( uid = uid, role = int(form.role.data), branch = Branches.objects(pk=form.branch.data).first().to_dbref() if form.branch.data else None, category = form.category.data, group = User_Groups.objects(pk=form.group.data).first().to_dbref() if form.group.data else None, companyname = form.companyname.data, userclass = form.userclass.data, fullname = form.fullname.data, password = bcrypt.generate_password_hash(password), email = form.email.data if form.email.data else None, mobilenumber = form.mobilenumber.data, whatsapp = form.whatsapp.data, gstin = form.gstin.data, communicationaddress = form.billingaddress.data, billingaddress = form.billingaddress.data, brand = json.dumps(temp_labels), state = form.state.data, city = form.city.data, pincode = form.pincode.data, openingbalance = form.openingbalance.data if form.openingbalance.data else 0, openingbalancedate = str(datetime.strptime(form.openingbalancedate.data, "%d/%m/%Y").timestamp()), status = int(form.status.data) ).save() if user: MSG = "Hey {}, Welcome to Paras Doors.\r\nFrom now you can login to www.parasdoors.com using\r\nLogin ID: {} / {},\r\nPassword: {}".format(form.fullname.data, uid, form.mobilenumber.data, password) status = sendSMS(mobileNumber=form.mobilenumber.data, MSG=MSG, mode="sms") if not status: flash("Failed to Send SMS to User", "error") flash("New User Added Successfully", "success") return redirect(url_for('general.parties')) flash("Failed to Create User", "error") return redirect(url_for('general.parties')) flash("User Already Exists!", "error") return redirect(url_for('general.parties')) else: temp_labels = {} for key in form.data.items(): if key[0].startswith('label_'): temp_labels[key[0]] = key[1] if key[1] else "NA" existing_user = User.objects(mobilenumber=form.mobilenumber.data).first() if (existing_user is None) or (str(existing_user['id']) == form.id.data): user = User(pk=form.id.data).update( role = int(form.role.data), branch = Branches.objects(pk=form.branch.data).first().to_dbref() if form.branch.data else None, category = form.category.data, group = User_Groups.objects(pk=form.group.data).first().to_dbref() if form.group.data else None, companyname = form.companyname.data if form.category.data == "company" else "", userclass = form.userclass.data, fullname = form.fullname.data, email = form.email.data if form.email.data else None, mobilenumber = form.mobilenumber.data, whatsapp = form.whatsapp.data, gstin = form.gstin.data, communicationaddress = form.billingaddress.data, billingaddress = form.billingaddress.data, state = form.state.data, city = form.city.data, pincode = form.pincode.data, brand = json.dumps(temp_labels), openingbalance = form.openingbalance.data, openingbalancedate = str(datetime.strptime(form.openingbalancedate.data, "%d/%m/%Y").timestamp()), status = int(form.status.data) ) if user: flash("Updated User Successfully", "success") return redirect(url_for('general.parties')) flash("Failed to Create User", "error") return redirect(url_for('general.parties')) flash("Mobile Number Already Exist", "error") return redirect(url_for('general.parties')) return render_template('dashboard/general/parties.html', form=form, brands_data=brands_data)
"GRAY": "#808080", "BLACK": "#000000", "RED": "#FF0000", "MAROON": "#800000", "YELLOW": "#FFFF00", "OLIVE": "#808000", "LIME": "#00FF00", "GREEN": "#008000", "AQUA": "#00FFFF", "TEAL": "#008080", "BLUE": "#0000FF", "NAVY": "#000080", "FUCHSIA": "#FF00FF", "PURPLE": "#800080"} if not User.objects(uid="dev"): User( uid="dev", role=128, category="individual", companyname="", fullname="Supreeth Kumar Y P", # Password 12345678 password="******", email="*****@*****.**", mobilenumber="9743977577", gstin="", communicationaddress="Chitradurga", billingaddress="Chitradurga", state="Karnataka", city="Chitradurga",