def getEventList(cls, UserId=None, CompanyId=None, limit=None, order_by=None, desc=None): UserProf = aliased(User) session = Session() records = session.query(cls) \ .filter(or_(cls.Type==1,cls.Type==2)) \ .join(ActivitySchedules,cls.id==ActivitySchedules.activity_id)\ .filter(ActivitySchedules.TransDate>=today()) \ .join(Company,cls.CompanyId==Company.id)\ .join(UserProf,cls.ProfId==UserProf.id)\ .outerjoin(Service,cls.ServiceId==Service.id)\ .with_entities(cls.Comment,UserProf.Name.label('ProfId') \ ,ActivitySchedules.TransDate \ ,ActivitySchedules.StartTime \ ,ActivitySchedules.EndTime,cls.id,cls.Status,Company.Name.label('CompanyId')\ ,Service.Name.label('ServiceId')) if UserId: records = records.filter(cls.ProfId == UserId) if CompanyId: records = records.filter(cls.CompanyId == CompanyId) if order_by and desc: records = records.order_by(ActivitySchedules.TransDate.desc()) elif order_by: records = records.order_by(ActivitySchedules.TransDate) else: records = records.order_by(ActivitySchedules.TransDate) if limit: records = records.limit(limit) session.close() return records
def getRecordList(cls, TableClass, limit=None, order_by=None, desc=None): session = Session() records = session.query(cls) if current_user.UserType == 1: records = records.filter_by(CompanyId=current_user.CompanyId) session.close() return records
def set_payment(): from db.Payment import Payment activityId = request.args.get('activityId') session = Session() record = session.query(Activity).filter_by(id=activityId).first() companyId = record.CompanyId session.close() session = Session() session.expire_on_commit = False record = Payment() record.UserId = current_user.id record.CompanyId = companyId record.ActivityId = activityId record.ResponseCode = request.args.get('x_cod_response') record.Response = request.args.get('x_response') record.Amount = request.args.get('x_amount') record.TransDate = now() record.Reference = request.args.get('x_id_invoice') record.Reason = request.args.get('x_response_reason_text') record.TransactionId = request.args.get('x_transaction_id') record.BankName = request.args.get('x_bank_name') record.AutorizationCode = request.args.get('x_approval_code') record.Currency = request.args.get('x_currency_code') record.beforeInsert() session.add(record) res = record.save(session) if res: return jsonify(result={'res':True,'id':record.id}) else: return jsonify(result={'res':False,'Error':str(res)})
def getRecordList(cls,TableClass,limit=None,order_by=None,desc=None): session = Session() records = session.query(TableClass) if order_by and desc: records = records.order_by(TableClass.c[order_by].desc()) elif order_by: records = records.order_by(TableClass.c[order_by]) if limit: records = records.limit(limit) session.close() return records
def getUserIdByEmail(cls,email): session = Session() record = session.query(cls).filter_by(Email=email).first() if not record: return id = record.id session.close() return id
def getFavorite(self): from dondefluir.db.UserFavorite import UserFavorite session = Session() record = session.query(UserFavorite).filter_by( UserId=current_user.id, FavoriteId=self.id).first() if record and record.Checked: return 1 return 0
def getLinksTo(self, record_list): res = {} res['CompanyId'] = {} session = Session() records = session.query(Company) for record in records: res['CompanyId'][record.id] = [record.Name, 0] session.close() return res
def get_favorite(): from db.UserFavorite import UserFavorite favId = request.args.get('favId') session = Session() session.expire_on_commit = False record = session.query(UserFavorite).filter_by(UserId=current_user.id,FavoriteId=favId).first() if not record or not record.Checked: return jsonify(result=False) else: return jsonify(result=True)
def getRecordList(cls,TableClass,limit=None,order_by=None,desc=None): session = Session() records = session.query(cls) if current_user.UserType==1: records = records.filter(cls.CompanyId==current_user.CompanyId,cls.UserType>=1) elif current_user.UserType==2: records = records.filter(cls.CompanyId==current_user.CompanyId, \ or_(cls.UserType==3,cls.id==current_user.id)) session.close() return records
def getUserService(params): session = Session() from db.UserService import UserService from db.Service import Service records = session.query(UserService)\ .join(User,User.id==UserService.UserId)\ .join(Service,Service.id==UserService.ServiceId)\ .filter_by(CompanyId=current_user.CompanyId) \ .with_entities(UserService.id,UserService.CompanyId,User.Name.label("UserName"),Service.Name.label("ServiceName")) session.close() return records
def get_service_price(): ServiceId = request.args.get('ServiceId') session = Session() record = session.query(Service).filter_by(id=ServiceId).first() price = None if record and record.Price: price = record.Price session.close() if price: return jsonify(result=str(price)) else: return jsonify(result=None)
def set_notification_read(): nftId = request.args.get('id') session = Session() session.expire_on_commit = False record = session.query(Notification).filter_by(id=nftId).first() if record: record.Status = 1 res = record.save(session) if res: return jsonify(result={'res':True}) else: return jsonify(result={'res':False,'Error':str(res)}) return jsonify(result={'res':False,'Error':'Registro Inexistente'})
def getRecordList(cls, TableClass, limit=None, order_by=None, desc=None): session = Session() records = session.query(TableClass) if current_user.UserType == 1: records = records.filter_by(CompanyId=current_user.CompanyId) elif current_user.UserType == 3: records = records.filter_by(UserId=current_user.id) if order_by and desc: records = records.order_by(TableClass.c[order_by].desc()) elif order_by: records = records.order_by(TableClass.c[order_by]) if limit: records = records.limit(limit) session.close() return records
def getRecordList(cls, TableClass, limit=None, order_by=None, desc=None): if current_user.UserType == (1, 2): session = Session() records = session.query(TableClass).filter_by( CompanyId=current_user.CompanyId) session.close() elif current_user.UserType == 1: session = Session() records = session.query(TableClass).filter_by( CompanyId=current_user.CompanyId) session.close() else: records = Record.getRecordList(TableClass) return records
def run(cls, filters): fd = filters['FromDate'].split('-') td = filters['ToDate'].split('-') FromDate = date(int(fd[0]), int(fd[1]), int(fd[2])) ToDate = date(int(td[0]), int(td[1]), int(td[2])) session = Session() records = session.query(func.concat(func.year(User.CreatedDate),'-',func.month(User.CreatedDate)), func.count(User.CreatedDate).label('CNT'))\ .filter(User.CreatedDate.between(FromDate,ToDate))\ .group_by(func.concat(func.year(User.CreatedDate),'-',func.month(User.CreatedDate)))\ .order_by(func.concat(func.year(User.CreatedDate),'-',func.month(User.CreatedDate)).desc())\ .all() session.close() columns = ['Mes', 'Cantidad'] return {'Columns': columns, 'Rows': records}
def getOverlapHeader(self, UserId, TransDate, StartTime, EndTime, ActivityUser): session = Session() records = session.query(Activity) \ .filter(Activity.Status!=2,ActivityUser==UserId,Activity.id!=self.id) \ .join(ActivitySchedules,Activity.id==ActivitySchedules.activity_id)\ .filter(ActivitySchedules.TransDate==TransDate,~ or_(ActivitySchedules.EndTime<=StartTime,ActivitySchedules.StartTime>=EndTime)) \ .join(User,ActivityUser==User.id)\ .with_entities(User.Name,ActivitySchedules.TransDate,ActivitySchedules.StartTime \ ,ActivitySchedules.EndTime,Activity.id,Activity.Status) session.close() if records.count() > 0: return True return False
def get_notifications(): session = Session() session.expire_on_commit = False record = session.query(Notification).filter_by(UserId=current_user.id,Status=0).order_by(Notification.TransDate.desc()) cnt = record.count() l = [] k = 0 for r in record: k += 1 l.append({'Comment':r.Comment,'TransDate': "%s %s" % (WeekName[int(r.TransDate.strftime("%w"))] \ ,r.TransDate.strftime("%d/%m/%Y")),'id':r.id}) if k>=4: break return jsonify(result={'cnt':cnt,'values':l})
def save_record(): if request.method == 'POST': data = json.loads(request.form.get('data')) fields = data.get('fields') table = data.get('TableName') TableClass = getTableClass(table) res = {} for key in fields: if fields[key]=='null': fields[key] = None id = fields.get('id',None) session = Session() session.expire_on_commit = False if not id: return saveNewRecord(TableClass,fields) else: return updateRecord(TableClass,fields)
def get_payment(): activityId = request.args.get('activityId') userId = request.args.get('userId') session = Session() Paid = session.query(Payment)\ .filter_by(UserId=userId ,ActivityId=activityId,ResponseCode=1) \ .count() if Paid: return jsonify(result={'res':True}) else: KeyPayco = '' companyId = request.args.get('companyId') company = Company.getRecordById(companyId) if company: KeyPayco = company.KeyPayco return jsonify(result={'res':False,'KeyPayco': KeyPayco})
def getRecordList(cls, TableClass, custId=None, limit=None, order_by=None, desc=None, ProfId=None, Alias=False): if Alias: UserProf = aliased(User) UserCust = aliased(User) session = Session() records = session.query(cls) if current_user.UserType == 3: records = records.filter_by(CustId=current_user.id) if custId and current_user.UserType in (1, 2): records = records.filter_by(CompanyId=current_user.CompanyId, CustId=custId) if current_user.UserType == 2: records = records.filter_by(ProfId=current_user.id) records = records.join(ActivitySchedules,cls.id==ActivitySchedules.activity_id)\ .filter(ActivitySchedules.TransDate>=today()) if Alias: records = records.join(UserProf,cls.ProfId==UserProf.id)\ .outerjoin(UserCust,cls.CustId==UserCust.id)\ .outerjoin(Service,cls.ServiceId==Service.id) if current_user.UserType == 0: records = records.filter(or_(ProfId == None, cls.ProfId == ProfId)) if not Alias: records = records.with_entities(cls.Comment,cls.ProfId,ActivitySchedules.TransDate,ActivitySchedules.StartTime \ ,ActivitySchedules.EndTime,cls.id,cls.Status,cls.CustId,cls.CompanyId,cls.ServiceId,cls.Type) else: records = records.with_entities(cls.Comment, UserProf.id.label('ProfId'), ActivitySchedules.TransDate \ ,ActivitySchedules.StartTime , ActivitySchedules.EndTime, cls.id, cls.Status, UserCust.id.label('CustId')\ , cls.CompanyId, Service.id.label('ServiceId'), cls.Type, UserCust.Name.label('CustName')) if not custId and current_user.UserType in (1, 2): records = records.filter( Activity.CompanyId == current_user.CompanyId) if order_by and desc: records = records.order_by(ActivitySchedules.TransDate.desc()) elif order_by: records = records.order_by(ActivitySchedules.TransDate) if limit: records = records.limit(limit) session.close() return records
def getLinksTo(self,record_list): res = {} res['UserType'] = {self.CUST: ['Cliente',0]} if current_user.UserType==0: res['UserType'][self.SUPER] = ['Super',0] res['UserType'][self.ADMIN] = ['Administrador',0] res['UserType'][self.PROF] = ['Profesional', 0] if current_user.UserType==1: res['UserType'][self.ADMIN] = ['Administrador',0] res['UserType'][self.PROF] = ['Profesional',0] res['CompanyId'] = {} session = Session() records = session.query(Company) for record in records: res['CompanyId'][record.id] = [record.Name,record.Closed] session.close() return res
def getRecordByFilters(table,filters,values): TableClass = getTableClass(table) session = Session() if not filters: record = TableClass() record.defaults() for f in values: record.__setattr__(f,values[f]) else: record = session.query(TableClass).filter_by(**filters).first() if not record: return {'res':False} fields = TableClass.getFields() recordTitle = TableClass.getRecordTitle() canEdit = TableClass.canUserEdit(record) canDelete = TableClass.canUserDelete() events = TableClass.getEvents() links = TableClass.getLinksTo([record]) res = record.toJSON() session.close() return {'record': res, 'fields': fields, 'links': links,'recordTitle':recordTitle,'canEdit':canEdit , 'canDelete':canDelete, 'events': events}
def setNotification(self, comment, user_id, type): ntf = Notification() ntf.defaults() ntf.UserId = user_id if self.Comment: ntf.Comment = "%s: %s" % (comment, self.Comment) else: ntf.Comment = comment ntf.Action = "" session = Session() res = ntf.save(session) if not res: return res return True
def set_cust_to_event(): eventId = request.args.get('id') session = Session() session.expire_on_commit = False record = session.query(Activity).filter_by(id=eventId).first() if record: found = False st = 1 for row in record.Users: if row.CustId==current_user.id: found = True record.Users.remove(row) st = 0 break if not found: row = ActivityUsers() row.CustId = current_user.id record.Users.append(row) res = record.save(session) if res: return jsonify(result={'res':True,'label':Activity.StatusList[st],'st': st}) else: return jsonify(result={'res':False,'Error':str(res)}) return jsonify(result={'res':False,'Error':'Registro Inexistente'})
def getLinksTo(self, record_list): res = {} res['ServiceId'] = {} session = Session() records = session.query(Service) if current_user.UserType > 0: records = records.filter_by(CompanyId=current_user.CompanyId) for record in records: res['ServiceId'][record.id] = [record.Name, 0] session.close() res['UserId'] = {} records = session.query(User).filter(User.UserType < 3) if current_user.UserType > 0: records = records.filter_by(CompanyId=current_user.CompanyId) for record in records: res['UserId'][record.id] = [record.Name, 0] session.close() return res
def showProfessionalEvents(*args): profId = args[0].get('profId',None) eventId = args[0].get('eventId',None) companyId = args[0].get('companyId',None) session = Session() records = session.query(Activity) \ .join(Company,Activity.CompanyId==Company.id)\ .join(User,Activity.ProfId==User.id)\ .join(ActivitySchedules,Activity.id==ActivitySchedules.activity_id)\ .filter(ActivitySchedules.TransDate>=today(),or_(Activity.Type==1,Activity.Type==2)) \ .with_entities(Activity.Comment,Activity.ProfId,ActivitySchedules.TransDate,ActivitySchedules.StartTime \ ,ActivitySchedules.EndTime,Activity.id,Activity.MaxPersons,Activity.Price,Activity.Description,Activity.OnlinePayment \ ,Company.KeyPayco,Company.OnlinePayment.label('CompanyPayment'),User.Name.label('ProfName')) if eventId: records = records.filter(Activity.id==eventId) if profId: records = records.filter(Activity.ProfId==profId) if companyId: records = records.filter(Activity.CompanyId==companyId) res = {} k = 0 for r in records: cnt = session.query(Activity).filter_by(id=r.id)\ .join(ActivityUsers,Activity.id==ActivityUsers.activity_id)\ .count() if r.id not in res: res[r.id] = [] st = Activity.StatusList[0] stv = 0 paid = 0 if k==0: FindCust = session.query(Activity).filter_by(id=r.id)\ .join(ActivityUsers,Activity.id==ActivityUsers.activity_id)\ .filter(ActivityUsers.CustId==current_user.id)\ .count() if FindCust: st = Activity.StatusList[1] stv = 1 Paid = session.query(Payment)\ .filter_by(UserId=current_user.id,ActivityId=r.id,ResponseCode=1) \ .count() if Paid: paid = 1 TransDate = WeekName[r.TransDate.weekday()] + " " + r.TransDate.strftime("%d/%m/%Y") res[r.id].append({'Comment': r.Comment,'TransDate': TransDate, 'StartTime': r.StartTime.strftime("%H:%M") \ , 'Description': r.Description, 'Price': r.Price, 'MaxPersons': r.MaxPersons, 'OnlinePayment': r.OnlinePayment \ , 'EndTime': r.EndTime.strftime("%H:%M"), 'Status': st, 'Persons': cnt, 'StatusValue': stv, 'Paid': paid \ , 'KeyPayco': r.KeyPayco, 'CompanyPayment':r.CompanyPayment,'ProfName': r.ProfName, 'ProfId': r.ProfId}) k += 1 return res
def getRecordList(cls,TableClass,custId=None,limit=None,order_by=None,desc=None): session = Session() if current_user.UserType==3: records = session.query(cls).filter_by(UserId=current_user.id)\ .join(User,User.id==cls.ProfId)\ .with_entities(User.Name,cls.TransDate,cls.Note)\ .order_by(UserNote.TransDate.desc()) elif current_user.UserType in (0,1): records = session.query(cls).filter_by(CompanyId=current_user.CompanyId,UserId=custId)\ .join(User,User.id==cls.ProfId)\ .with_entities(User.Name,cls.TransDate,cls.Note)\ .order_by(UserNote.TransDate.desc()) elif current_user.UserType==2: records = session.query(cls).filter_by(CompanyId=current_user.CompanyId,UserId=custId,ProfId=current_user.id)\ .join(User,User.id==cls.ProfId)\ .with_entities(User.Name,cls.TransDate,cls.Note)\ .order_by(UserNote.TransDate.desc()) session.close() return records
def getLinkToFromRecord(self, TableClass): if TableClass == Service: session = Session() if self.ProfId: records = session.query(UserService)\ .filter_by(UserId=self.ProfId)\ .join(Service,UserService.ServiceId==Service.id)\ .with_entities(Service.id,Service.Name) else: records = session.query(UserService).join(Service,UserService.ServiceId==Service.id)\ .filter_by(CompanyId=self.CompanyId)\ .with_entities(Service.id,Service.Name) session.close() return records else: return TableClass.getRecordList(TableClass)
def getProfessional(favorite,companyId): session = Session() if not favorite: records = session.query(User).filter_by(FindMe=True)\ .join(Company,User.CompanyId==Company.id) if companyId: records = records.filter(User.CompanyId==companyId) records = records.with_entities(User.id,User.Name,Company.Name.label("CompanyName"),User.Title,User.City) else: from db.UserFavorite import UserFavorite records = session.query(User)\ .join(UserFavorite,User.id==UserFavorite.FavoriteId)\ .filter_by(UserId=current_user.id,Checked=True)\ .join(Company,User.CompanyId==Company.id) if companyId: records = records.filter(User.CompanyId==companyId) records = records.with_entities(User.id,User.Name,Company.Name.label("CompanyName"),User.Title,User.City) session.close() return records
def getCustomer(args): favorite = args.get('favorite',None) session = Session() if not favorite: records = session.query(User).filter_by(UserType=3) else: from db.UserFavorite import UserFavorite records1 = session.query(User).filter_by(UserType=3)\ .join(UserFavorite,User.id==UserFavorite.FavoriteId)\ .filter_by(UserId=current_user.id,Checked=True)\ .with_entities(User.id, User.Name,User.Closed,User.UserType) records2 = session.query(User).filter_by(UserType=3)\ .join(UserFavorite, User.id == UserFavorite.UserId)\ .filter_by(FavoriteId=current_user.id, Checked=True) \ .with_entities(User.id, User.Name,User.Closed,User.UserType) #records = records1.union_all(records2) records = records1 session.close() return records