def add_by_user_loyalty_id(user_id, loyalty_id): answer = -1 loyalty = PaymentLoyalty.query.filter_by( id=loyalty_id).first() if not loyalty: return False user_wallets = PaymentWallet.query.filter_by(user_id=user_id).all() for wallet in user_wallets: wl = WalletLoyalty.query.filter_by( loyalty_id=loyalty_id, status=WalletLoyalty.STATUS_ON, wallet_id=wallet.id).first() if not wl: continue person = Person.query.filter_by( firm_id=loyalty.firm_id, payment_id=wallet.payment_id).first() if not person: person = Person() person.name = 'Участник промо-кампании' person.firm_id = loyalty.firm_id person.hard_id = wallet.hard_id person.payment_id = wallet.payment_id person.save() if not loyalty.terms_id: continue timeout = PersonEvent.LIKE_TIMEOUT if loyalty.timeout: timeout = loyalty.timeout terms = json.loads(loyalty.terms_id) for term in terms: event = PersonEvent.query.filter_by( person_id=person.id, term_id=term, event_id=loyalty.event_id, firm_id=loyalty.firm_id).first() if event: if event.timeout > timeout: event.status = PersonEvent.STATUS_BANNED event.save() else: event = PersonEvent() event.person_id = person.id event.term_id = term event.event_id = loyalty.event_id event.firm_id = loyalty.firm_id event.timeout = PersonEvent.LIKE_TIMEOUT if loyalty.timeout: event.timeout = loyalty.timeout event.save() answer = event.id return answer
def person_save(person_id): """Добавляем или редактируем человека""" answer = dict(error='yes', message=u'Произошла ошибка', person_id=0) arg = json.loads(request.stream.read()) form = PersonAddForm.from_json(arg) if person_id == 0: code = arg['card_code'] if 'card_code' in arg else False card_hard_id = arg['card_hard_id'] if 'card_hard_id' in arg else False person = Person() if code or card_hard_id: if code: bind_card = set_person_card(code) else: bind_card = set_person_card_by_hid(card_hard_id) if not bind_card['wallet']: answer['message'] = bind_card['message'] return jsonify(answer) else: wallet = bind_card['wallet'] person.hard_id = wallet.hard_id person.payment_id = bind_card['payment_id'] else: person = Person.query.get(person_id) if not person: abort(404) if not form.validate(): answer['message'] = u"""Форма заполнена неверно, проверьте формат полей""" return jsonify(answer) form.populate_obj(person) if person.save(): answer['person_id'] = person.id answer['error'] = 'no' answer['message'] = u'Данные сохранены' return jsonify(answer) return jsonify(answer)
def person_import(): """Импорт списка сотрудников из json""" answer = dict( error='yes', wrong_forms=[], wrong_cards=[], added_forms=0 ) data = json.loads(request.stream.read()) employers = data['employers'] for json_employer in employers: if not len(json_employer['name']): answer['wrong_forms'].append(json_employer) continue employer = request_helper.name_together(json_employer) if employer['birthday'] and len(employer['birthday']): try: employer['birthday'] = datetime.strptime( employer['birthday'], '%d.%m.%Y') employer['birthday'] = employer[ 'birthday'].strftime('%Y-%m-%d %H:%M:%S') except ValueError: answer['wrong_forms'].append(json_employer) continue if 'tabel_id' not in employer: employer['tabel_id'] = None elif not len(employer['tabel_id']): employer['tabel_id'] = None employer['firm_id'] = g.firm_info['id'] employer['csrf_token'] = data['csrf_token'] person = Person() form = PersonAddForm.from_json(employer) if not form.validate(): answer['wrong_forms'].append(json_employer) continue form.populate_obj(person) code = employer['code'] if 'code' in employer else False if code and len(code) == 10: bind_card = set_person_card(code) if bind_card['wallet']: wallet = bind_card['wallet'] person.payment_id = wallet.payment_id person.hard_id = wallet.hard_id else: answer['wrong_cards'].append(json_employer) else: answer['wrong_cards'].append(json_employer) answer['added_forms'] = answer['added_forms'] + 1 db.session.add(person) if db.session.commit(): answer['error'] = 'no' return jsonify(answer)