def EditItem(item_id):
    if 'username' not in login_session:
        return redirect(url_for('Login'))

    item = session.query(Item).filter_by(id=item_id).one()
    if item.user_id != userid_by_email(login_session['email']):
        return "You are not the owner of this item."

    if request.method == 'GET':
        categories = session.query(Category).all()
        item_to_edit = session.query(Item).filter_by(id=item_id).one()
        return render_template('edititem.html',
                               categories=categories, item=item_to_edit)

    if request.method == 'POST':
        item_to_edit = session.query(Item).filter_by(id=item_id).one()
        file = request.files['new-item-image']
        filename = save_image(file)
        add_photo_to_database(filename, item_to_edit)

        submitted_category = request.form['category']
        item_category = potential_new_category(submitted_category)
        item_to_edit.name = request.form['new-item-name']
        item_to_edit.description = request.form['new-item-description']
        item_to_edit.category = item_category
        session.add(item_to_edit)
        session.commit()
        flash('Item updated.')
        return redirect(url_for('MyItems'))
Beispiel #2
0
def update(id):
    try:
        a = session.query(Employee).get(id)
        if a != None:
            firstname = request.json['firstname']
            lastname = request.json['lastname']
            # import pdb
            # pdb.set_trace()
            age = request.json['age']
            skills = request.json['skills']

            skill_obj = session.query(Skills).filter_by(emp_id=id).first()

            if firstname.islower():
                firstname = firstname.upper()
            if lastname.islower():
                lastname = lastname.upper()
            a.firstname = firstname
            a.lastname = lastname
            a.age = age
            skill_obj.tech = skills['tech']
            session.commit()
            updated_user = {
                "firstname": firstname,
                "lastname": lastname,
                "age": age,
                "skills": skills["tech"]
            }
            return updated_user

        else:
            return ("UserID incorrect")
    except Exception as e:
        return ("Cannot update entry")
Beispiel #3
0
def manager_test_pager(page):
    start = (page - 1) * config.TEST_PAGER_SIZE
    stop = start + config.TEST_PAGER_SIZE
    test_pagers = db_session.query(TestPager)[start:stop]
    total = len(test_pagers)
    class_names = [class_.class_name for class_ in g.teacher_user.teacher_class]
    classes = []
    for class_name in class_names:
        classs = db_session.query(Class).filter(Class.class_name==class_name).all()
        classes.extend(classs)
    for class_ in classes:
        # 如果此班级的学生人数为0,则发布试卷可选班级则不显示此班级
        if not class_.class_students:
            classes.remove(class_)
    classes = [class_.class_name for class_ in classes]
    # 去掉重复的班级名
    classes = list(set(classes))
    content = {
        'test_pagers': test_pagers,
        'page': page,
        'total': total,
        'TEST_PAGER_SIZE': config.TEST_PAGER_SIZE,
        'classes': classes
    }
    return render_template('front/front_manager_test_pager.html', **content)
 def post_data(data):
     check = session.query(User).filter_by(
         public_display_name=data['public_display_name'])
     if check == None:
         raise Exception(
             'This username is in use. Please, enter another username')
     else:
         public_display_name = data['public_display_name']
         last_user = session.query(User).order_by(User.id.desc()).first()
         session.add(
             User(first_name=data["first_name"],
                  last_name=data['last_name'],
                  public_display_name=public_display_name,
                  about_me=data['about_me'],
                  profile_link=data['profile_link'],
                  email=data['email'],
                  password=data['password']))
         session.commit()
         last_user = session.query(User).order_by(User.id.desc()).first()
         session.add(
             PurchaseSettings(id=last_user.id,
                              credit_card='',
                              id_user=last_user.id,
                              id_plan=1))
         session.commit()
Beispiel #5
0
 def get(self, test_pager_id):
     '''老师批阅以后,学生查看自己的试卷详情'''
     stu = db_session.query(Student).filter(Student.student_id == g.student_user.student_id).first()
     score = db_session.query(Score).filter(Score.socre_student == stu,
                                            Score.score_test_pager_id == test_pager_id).first()
     # 从数据库中抽取学生答题的结果集
     choice_results = db_session.query(StudentChoiceResult).filter(
         StudentChoiceResult.student_choice_result_student_id == g.student_user.student_id,
         StudentChoiceResult.student_choice_result_test_pager_id == test_pager_id,
     ).all()
     short_answer_results = db_session.query(StudentShortAnswerResult).filter(
         StudentShortAnswerResult.student_short_answer_student_id == g.student_user.student_id,
         StudentShortAnswerResult.student_short_answer_test_pager_id == test_pager_id,
     ).all()
     program_results = db_session.query(StudentProgramResult).filter(
         StudentProgramResult.student_program_student_id == g.student_user.student_id,
         StudentProgramResult.student_program__test_pager_id == test_pager_id,
     ).all()
     # 拿到学生对应题目的得分
     content = {
         'score': score,
         'choice_results': choice_results,
         'short_answer_results': short_answer_results,
         'program_results': program_results,
     }
     return render_template('front/front_student_view_exam_pager.html', **content)
Beispiel #6
0
    def get(self):
        teacher_id = g.teacher_user.teacher_id
        teacher = db_session.query(Teacher).filter(Teacher.teacher_id==teacher_id).first()
        classes = teacher.teacher_class
        classs = []  # 保存班级的名字
        for class_ in classes:
            clss = db_session.query(Class).filter(Class.class_name==class_.class_name).all()
            classs.extend(clss)

        # 老师可能管理多个班级,classs 是一个class对象列表
        # 遍历列表找出所有classs班级中的学生,存储在列表students中
        students = []
        for class_ in classs:
            stus = db_session.query(Student).filter(Student.student_class==class_).all()
            students.extend(stus)

        # 通过学生拿到学生的考卷
        scores = []
        for student in students:
            scos = db_session.query(Score).filter(Score.socre_student==student, Score.score_state=='等待阅卷').all()
            scores.extend(scos)
        content = {
            'scores': scores,
        }
        return render_template("front/front_teacher_exam_list.html", **content)
Beispiel #7
0
    def agregar_producto(self, lista, userid):
       
        total = 0
        otro_producto = 's'
        orden_canje_list = []
        puntaje = session.query(User.puntaje).select_from(User).\
            filter(User.user_id == userid).scalar()

        print(f"Usted dispone de {puntaje} puntos\n")


        while(otro_producto == 's'):
            id_producto_seleccionado = int(input("\nIngrese numero de producto para canjear: "))
            while(id_producto_seleccionado < 1 or id_producto_seleccionado > len(lista)):
                id_producto_seleccionado = int(input("\nIngrese numero de producto valido: "))

            producto = session.query(Producto).select_from(Producto).\
                filter(Producto.id_producto==id_producto_seleccionado).scalar()

            p_restantes = puntaje - total

            if(total <= puntaje and producto.valor <= p_restantes):
                
                total = total + producto.valor
                print("Total de puntos a canjear hasta ahora: ", total)
                prod_seleccionado = lista[id_producto_seleccionado - 1].get('descripcion')
                print(prod_seleccionado)
                orden_canje_list.append(producto)
            else:
                print("No le alcanzan los puntos. Seleccione otro producto.")

            otro_producto = input("\nDesea canjear otro producto? s/n: ")
            while(otro_producto!='s' and otro_producto!='n'):
                otro_producto = input("Ingrese opcion correcta. Desea canjear otro producto? s/n: ")

        print("----------------------------------------")
        print("Termino de elegir, sus productos son:")

        for productos in orden_canje_list:
           print(productos.descripcion)
        print("Por un total de: ", total)
        print("----------------------------------------")

        canjea = input("\nDesea confirmar su orden ahora o quiere editarla? c/e: ")
        while(canjea != 'c' and canjea != 'e'):
            canjea = input("Ingrese opcion correcta. Confirmar o editar? c/e: ")

        if(canjea == 'c'):
            orden_canje = Orden_canje()
            orden_canje.user_id = userid
            orden_canje.total = total
            save(orden_canje)

            sobra_puntos = puntaje - total
            self.actualizar_puntos(sobra_puntos, userid)

            self.generar_orden_producto(orden_canje_list)

        elif(canjea == 'e'):
            self.agregar_producto(self.productList,userid)
Beispiel #8
0
def update_user():
    form = UpdateUserForm(request.form)
    if form.validate():
        uid = form.uid.data
        name = form.name.data
        email = form.email.data
        phone = form.phone.data
        is_super = form.is_super.data
        user = db_session.query(Admin).filter(Admin.admin_uuid == uid).first()
        required_phone = db_session.query(Admin).filter(
            Admin.admin_phone == phone)[:]
        required_email = db_session.query(Admin).filter(
            Admin.admin_email == email)[:]
        if len(required_phone) > 1:  # 判断是否本人的手机号码
            return '该手机号已被使用'
        elif len(required_email) > 1:
            return '该邮箱已被使用'
        elif len(required_phone) == 1 and user.admin_phone != phone:
            return '该手机号已被使用'
        elif len(required_email) == 1 and user.admin_email != email:
            return '该邮箱已被使用'
        else:
            user.admin_name = name
            user.admin_email = email
            user.admin_phone = phone
            user.admin_is_super = is_super
            db_session.commit()
        return "success"
    else:
        errors = form.errors
        error = errors.popitem()[1][0]
        return error
Beispiel #9
0
def update_student():
    form = UpdateStudentForm(request.form)
    if form.validate():
        id = form.id.data
        name = form.name.data
        email = form.email.data
        phone = form.phone.data
        class_ = form.class_.data
        user = db_session.query(Student).filter(
            Student.student_id == id).first()
        required_phone = db_session.query(Student).filter(
            Student.student_phone == phone)[:]
        required_email = db_session.query(Student).filter(
            Student.student_email == email)[:]
        if len(required_phone) > 1:  # 判断是否本人的手机号码
            return '该手机号已被使用'
        elif len(required_email) > 1:
            return '该邮箱已被使用'
        elif len(required_phone) == 1 and user.student_phone != phone:
            return '该手机号已被使用'
        elif len(required_email) == 1 and user.student_email != email:
            return '该邮箱已被使用'
        else:
            user.student_name = name
            user.student_email = email
            user.student_phone = phone
            user.student_class = Class(class_name=class_)
            db_session.commit()
        return "success"
    else:
        errors = form.errors
        error = errors.popitem()[1][0]
        return error
Beispiel #10
0
def remove_purchase_for_user_app(userid, appid):
    try:
        session.query(Purchase).filter(Purchase.user_id == userid).filter(Purchase.app_id == appid).delete()
        session.commit()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to remove purchase")
Beispiel #11
0
def remove_purchase_for_user_app(userid, appid):
  try:
    session.query(Purchase).filter(Purchase.user_id == userid).filter(Purchase.app_id == appid).delete()
    session.commit()
  except Exception, e:
    logging.exception(e)
    session.rollback()
    raise ValueError("Unable to remove purchase")
Beispiel #12
0
def opt_out_foreigners():
    from constant import foreign_teams
    f_team_query = session.query(Team.team_id).filter(
        Team.team_name.in_(foreign_teams)).all()
    f_team_ids = [t.team_id for t in f_team_query]
    # リストでフィルターをかけているが、deleteの引数synchronize_sessionのデフォルト値'evaluate'ではこれをサポートしていない(らしい)からFalseを指定する
    count = session.query(Record).filter(
        Record.team_id.in_(f_team_ids)).delete(synchronize_session=False)
    session.commit()
    notify_line(f'{len(f_team_ids)}件の外国籍チームを検出。{count}件の記録を削除')
Beispiel #13
0
 def put(self):
     params = self.match_reqparse.parse_args()
     print((params['previousIds']))
     event_id = session.query(Event).filter_by(event_key = params['eventKey']).first().as_dict()['eventId']
     if not event_id:
         abort(400, 'event does not exist')
     event_users = session.query(EmployerInfo).filter(EmployerInfo.event_id == event_id).all()
     event_users = list(map(lambda user: user.as_dict(), event_users))
     best_match = find_best_match(event_users, params['image'])
     return best_match if best_match and best_match['userInfo']['userId'] not in params['previousIds'] else None
Beispiel #14
0
def add_records_wrapper(date_min, date_max):
    target_meets = session.query(Meet.meet_id).filter(
        Meet.start >= date_min,
        Meet.start <= date_max).order_by(Meet.start).all()
    target_meets_ids = [m.meet_id for m in target_meets]
    if not_up_to_date := imperfect_meets(target_meets_ids):
        count = session.query(Record).filter(
            Record.meet_id.in_(not_up_to_date)).delete(
                synchronize_session=False)
        session.commit()
        notify_line(f'大会ID:{not_up_to_date}、記録未納の可能性あり。{count}件の記録を削除')
Beispiel #15
0
 def post(self, student_id, test_pager_id):
     '''把分数表的学生得分改为学生的实际得分
         再把学生对应的每道题的得分存入到对应的学生答案表中
     '''
     form = request.form
     # 创建三个字典,键为题目的id号,值为该题得分
     choice_score = {}  # {"choice_id": 'score'}
     short_answer_score = {}  # {'short_answer_id':'score'}
     program_score = {}  # {'program_id':'score'}
     for item in form:
         # 判断表单项是选择题
         if item[:6] == 'choice':
             choice_score[item[6:]] = int(form[item])
         elif item[:12] == 'short_answer':
             short_answer_score[item[12:]] = int(form[item])
         elif item[:7] == 'program':
             program_score[item[7:]] = int(form[item])
     score = db_session.query(Score).filter(
         Score.score_student_id==student_id,
         Score.score_test_pager_id==test_pager_id
     ).first()
     # 合计学生的总分
     score.score_student_socre = sum(map(sum, ([
         [score for score in choice_score.values()],
         [score for score in short_answer_score.values()],
         [score for score in program_score.values()],
     ])))
     score.score_state = '已经批阅'
     #  保存学生答案表中学生具体每道题的得分
     for choice_id in choice_score:
         choice = db_session.query(StudentChoiceResult).filter(
             StudentChoiceResult.student_choice_result_student_id == student_id,
             StudentChoiceResult.student_choice_result_test_pager_id == test_pager_id,
             StudentChoiceResult.student_choice_result_choice_id == choice_id
         ).first()
         choice.student_choice_result_choice_score = choice_score[choice_id]
         db_session.commit()
     for short_answer_id in short_answer_score:
         short_answer = db_session.query(StudentShortAnswerResult).filter(
             StudentShortAnswerResult.student_short_answer_student_id == student_id,
             StudentShortAnswerResult.student_short_answer_test_pager_id == test_pager_id,
             StudentShortAnswerResult.student_short_answer_short_answer_id == short_answer_id,
         ).first()
         short_answer.student_short_answer_score = short_answer_score[short_answer_id]
         db_session.commit()
     for program_id in program_score:
         program = db_session.query(StudentProgramResult).filter(
             StudentProgramResult.student_program_student_id == student_id,
             StudentProgramResult.student_program__test_pager_id == test_pager_id,
             StudentProgramResult.student_program_program_id == program_id,
         ).first()
         program.student_program_score = program_score[program_id]
         db_session.commit()
     return redirect(url_for('front.teacher_exam_list', page=1))
def ViewCategory(category_name):
    all_items = session.query(Item).all()
    categories = session.query(Category).all()
    items_in_category = []
    for item in all_items:
        if item.category.name.lower() == category_name.lower():
            items_in_category.append(item)
    return render_template('viewcategory.html',
                           category_name=category_name,
                           categories=categories,
                           items=items_in_category)
Beispiel #17
0
 def post(self):
     form = AddTestPagerForm(request.form)
     if form.validate():
         # 接收前台数据
         choiceSize = int(request.form["choiceSize"])
         choiceScore = int(request.form["choiceScore"])
         shortAnswerSize = int(request.form["shortAnswerSize"])
         shortAnswerScore = int(request.form["shortAnswerScore"])
         programSize = int(request.form["programSize"])
         programScore = int(request.form["programScore"])
         type = request.form["type"]
         name = request.form['name'].strip()
         # 试卷的总分等于 =
         # 选择器的个数*单个选择题的分值 + 简答题的个数*单个简答题的分值 + 程序设计题的个数*单个程序设计提的分值
         totalscore = (choiceSize*choiceScore) + (shortAnswerSize*shortAnswerScore) + (programSize*programScore)
         count_choice = db_session.query(Choice).filter(Choice.choice_type==type).count()
         count_short_answer = db_session.query(ShortAnswer).filter(ShortAnswer.short_answer_type==type).count()
         count_program = db_session.query(Program).filter(Program.program_type==type).count()
         # 如果数据库选择题的个数小于需要生成的个数
         if count_choice < choiceSize:
             # 把所有的题全部抽出来
             choices = db_session.query(Choice).all()
             message1 = '题库中选择题不够%s个, 现已全部引用' % choiceSize
         # 如果需要生成的选择题的个数小于数据库中存储的数量
         else:
             choices = db_session.query(Choice).order_by(func.rand(Choice.choice_id))[0:choiceSize]
         if count_short_answer < shortAnswerSize:
             short_answers = db_session.query(ShortAnswer).all()
             message2 = '题库中简答题不够%s个, 现已全部引用' % shortAnswerSize
         else:
             short_answers = db_session.query(ShortAnswer).order_by(func.rand(ShortAnswer.short_answer_id))[0:shortAnswerSize]
         if count_program < programSize:
             programs = db_session.query(Program).all()
             message3 = '题库中简答题不够%s个, 现已全部引用' % programSize
         else:
             programs = db_session.query(Program).order_by(func.rand(Program.program_id))[0:programSize]
         # 创建试卷对象
         test_pager = TestPager(test_pager_name=name, test_pager_type=type, test_pager_choice_score=choiceScore,
                                test_pager_short_answer_score=shortAnswerScore, test_pager_program_score=programScore,
                                test_pager_choice_num=choiceSize, test_pager_short_answer_num=shortAnswerSize,
                                test_pager_program_num=programSize, test_pager_total_score=totalscore)
         # 选择题,简答题,程序设计题绑定到试卷中
         test_pager.test_pager_choices.extend(choices)
         test_pager.test_pager_short_answers.extend(short_answers)
         test_pager.test_pager_programs.extend(programs)
         db_session.add(test_pager)
         db_session.commit()
         content = {
             # 'message1': message1,
             # 'message2': message2,
             # 'message3': message3,
             'totalScore': totalscore
         }
         return render_template('front/front_add_test_page.html', **content)
     else:
         message = form.errors.popitem()[1][0]
         return render_template('front/front_add_test_page.html', message=message)
Beispiel #18
0
def initialize_stats_table():
    session.query(Stats).delete()
    session.commit()
    for pool in [0, 1]:
        for sex in [1, 2]:
            for style_and_distance in [
                    11, 12, 13, 14, 15, 16, 17, 21, 22, 23, 24, 31, 32, 33, 34,
                    41, 42, 43, 44, 53, 54, 55, 63, 64, 65, 66, 73, 74, 75
            ]:
                for grade in range(20):
                    event = sex * 100 + style_and_distance
                    session.add(Stats(pool=pool, event=event, grade=grade))
    session.commit()
Beispiel #19
0
def delete_user(id):
    try:
        user = session.query(Employee).get(id)
        user2 = session.query(Skills).filter_by(emp_id=id).first()
        #if user user2  !=None:
        session.delete(user)
        session.delete(user2)
        session.commit()
        final = {"firstname": user.firstname, "lastname": user.lastname}
        return final
    except Exception as e:
        return e
        session.rollback()
Beispiel #20
0
def bind_user():
    '''在进入前端首页之前绑定用户'''
    if config.STUDENT_EMAIL in session:
        email = session[config.STUDENT_EMAIL]
        student_user = db_session.query(Student).filter(
            Student.student_email == email).first()
        if student_user:
            g.student_user = student_user

    if config.TEACHER_EMAIL in session:
        email = session[config.TEACHER_EMAIL]
        teacher_user = db_session.query(Teacher).filter(
            Teacher.teacher_email == email).first()
        if teacher_user:
            g.teacher_user = teacher_user
Beispiel #21
0
def application(id):
  try:
    return session.query(Application).filter(Application.id == int(id)).one()
  except Exception, e:
    logging.exception(e)
    session.rollback()
    raise ValueError("Unable to select application")
def make_user(login_session):
    new_user = User(name=login_session['username'],
                    email=login_session['email'])
    session.add(new_user)
    session.commit()
    user = session.query(User).filter_by(email=login_session['email']).one()
    return user.id
Beispiel #23
0
def purchase(id):
  try:
    return session.query(Purchase).filter(Purchase.id == id).one()
  except Exception, e:
    logging.exception(e)
    session.rollback()
    raise ValueError("Unable to select purchase")
Beispiel #24
0
def add_user():
    try:
        #user1 = session.query(Employee).all()
        #user2 = session.query(Skills).all()
        firstname = request.json["firstname"]
        lastname = request.json["lastname"]
        age = request.json["age"]
        skill = request.json["skills"]

        if firstname.islower():
            upper_firstname = firstname.upper()
        if firstname.islower():
            upper_lastname = lastname.upper()

        user_details = Employee(firstname=upper_firstname,
                                lastname=upper_lastname,
                                age=age)
        user_details.commit_user_details()
        #session.flush()
        user_id = session.query(Employee).filter_by(
            firstname=upper_firstname).first()
        for tech in skill:
            user_skill = Skills(emp_id=user_id.id, tech=skill[tech])
            user_skill.commit_skill()
        z = {
            "firstname": upper_firstname,
            "lastname": upper_lastname,
            "age": age,
            "skills": skill["tech"]
        }
        return z
    except Exception as e:
        return ("invalid entry")
Beispiel #25
0
def purchase_for_user_app(userid, appid):
    try:
        return session.query(Purchase).filter(Purchase.user_id == userid).filter(Purchase.app_id == appid).first()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to select purchases for user")
Beispiel #26
0
def applications():
  try:
    return session.query(Application).all()
  except Exception, e:
    logging.exception(e)
    session.rollback()
    raise ValueError("Unable to select applications")
Beispiel #27
0
def application(id):
    try:
        return session.query(Application).filter(Application.id == int(id)).one()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to select application")
Beispiel #28
0
def user(id):
    try:
        return session.query(User).filter(User.id == id).first()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to select user")
Beispiel #29
0
def identity_by_identifier(identifier):
    try:
        return session.query(Identity).filter(Identity.identifier == identifier).first()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to select identity for identifier")
Beispiel #30
0
def getLast(Gi_query):
    # Deserialize Gi object from DB
    gi_obj = session.query(Gi).filter_by(gi=Gi_query).first()
    if gi_obj is None:
        return {'Gi': Gi_query, 'cQueue': gList()}
    else:
        return gi_obj
Beispiel #31
0
    def todo(self):
        # met les devoirs dans ToDo
        self.connectTodo()
        # charge le fichier avec les devoirs deja ajouté
        lineDev = session.query(Config).one()
        if lineDev.devoirs != None:
            devoirs = json.loads(lineDev.devoirs)
        else:
            devoirs = []
        if self.client.logged_in and self.todo_client and self.listeToDo:
            # récupère la liste todo dans laquelle il faut mettre les devoirs
            lists = self.todo_client.get_lists()
            task_list = None
            for list in lists:
                if list.displayName == self.listeToDo:
                    task_list = list
                    break
            if task_list == None:
                self.todo_client.create_list(name=self.listeToDo)
            # récupére tous les devoirs pour les 30 prochains jours
            homeworks = self.client.homework(date.today(),
                                             date.today() + timedelta(days=30))
            for homework in homeworks:
                # création de l'id
                id = homework.description[0:10] + \
                    homework.date.strftime("%Y-%m-%dT%H:%M:%S")
                # si le devoir n'est pas fini est qu'il n'est pas encore dans todo on l'ajoute
                if homework.done == False and id not in devoirs:
                    self.todo_client.create_task(
                        title=
                        f'{homework.subject.name[0:5]} {homework.description[0:100]}',
                        list_id=task_list.list_id,
                        due_date=homework.date,
                        body_text=
                        f'{homework.subject.name} : {homework.description}')
                    devoirs.append(id)
                # Si il est fait on le coche sur todo
                else:
                    tasks = self.todo_client.get_tasks(
                        list_id=task_list.list_id, status='notCompleted')
                    for task in tasks:
                        if task.dueDateTime == homework.date and task.body == homework.description:
                            self.todo_client.complete_task(
                                task_id=task.task_id,
                                list_id=task_list.list_id)
                            break
            # récupére tous les devoirs fait
            tasks = self.todo_client.get_tasks(list_id=task_list.list_id,
                                               status='completed')
            # on coche le devoirs sur pronote
            for task in tasks:
                homeworks = self.client.homework(
                    date.today(),
                    date.today() + timedelta(days=30))
                for homework in homeworks:
                    if task.dueDateTime == homework.date and task.body == homework.description:
                        homework.set_done(status=True)

            self.line.devoirs = json.dumps(devoirs)
            session.commit()
Beispiel #32
0
def user(id):
  try:
    return session.query(User).filter(User.id == id).first()
  except Exception, e:
    logging.exception(e)
    session.rollback()
    raise ValueError("Unable to select user")
Beispiel #33
0
def purchase_for_user_app(userid, appid):
  try:
    return session.query(Purchase).filter(Purchase.user_id == userid).filter(Purchase.app_id == appid).first()
  except Exception, e:
    logging.exception(e)
    session.rollback()
    raise ValueError("Unable to select purchases for user")
Beispiel #34
0
def identity_by_identifier(identifier):
  try:
    return session.query(Identity).filter(Identity.identifier == identifier).first()
  except Exception, e:
    logging.exception(e)
    session.rollback()
    raise ValueError("Unable to select identity for identifier")
Beispiel #35
0
def purchase(id):
    try:
        return session.query(Purchase).filter(Purchase.id == id).one()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to select purchase")
Beispiel #36
0
def applications():
    try:
        return session.query(Application).all()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to select applications")
Beispiel #37
0
    def post(self):
        params = self.post_reqparse.parse_args()
        linkedin_info = params['linkedinInfo']
        event_key = params['eventKey']

        # find matching event (validating QR code)
        event_id = None
        matched_event = session.query(Event).filter_by(event_key = event_key).first()
        if matched_event:
            event_id = matched_event.as_dict()['eventId']
        else:
            abort(400, 'No event matched this key!')

        # add a user and their photo if they don't already exist
        matching_user = session.query(Entity).filter_by(name = linkedin_info['formattedName']).first()
        user_id = None
        if matching_user is None:
            if (linkedin_info['pictureUrls'] and len(linkedin_info['pictureUrls']['values']) > 0):
                new_user = Entity(str(linkedin_info['formattedName']), str(linkedin_info['pictureUrls']['values'][0]))
                session.add(new_user)
                session.commit()
                user_id = new_user.as_dict()['userId']
            else:
                abort(400, 'No profile pictures for the authenticated user')
        else:
            user_id = matching_user.as_dict()['userId']

        # add that user's linkedin info for a specific event, if it doesn't already exist
        if session.query(EmployerInfo).filter_by(user_id = user_id, event_id = event_id).first() is None:
            summary = linkedin_info['summary'] if 'summary' in linkedin_info.keys() else 'Nothing to see here...'
            headline = linkedin_info['headline'] if 'headline' in linkedin_info.keys() else 'Talk to me to find out more!'

            email = linkedin_info['emailAddress'] if 'emailAddress' in linkedin_info.keys() else 'No email found.'
            user_info = EmployerInfo(user_id, event_id, summary, headline, linkedin_info['publicProfileUrl'], email)
            session.add(user_info)
            session.commit()

            # add positions
            if 'values' in linkedin_info['positions'].keys():
                for position in linkedin_info['positions']['values']:
                    date_start = str(position['startDate']['month']) + "/" + str(position['startDate']['year'])
                    date_end = str(position['endDate']['month']) + "/" + str(position['endDate']['year']) if 'endDate' in position.keys() else None
                    position_to_add = EmployerJob(user_info.as_dict()['employerInfoId'], position['location']['name'], position['title'], position['company']['name'], date_start, date_end, position['isCurrent'])
                    session.add(position_to_add)

        session.commit()
        return "Success!"
Beispiel #38
0
def categories(parent=None):
    try:
        q = session.query(Category)
        if parent:
            q = q.filter(Category.parent_id == parent)
        return q.all()
    except Exception, e:
        logging.exception(e)
        session.rollback()
        raise ValueError("Unable to select categories")
Beispiel #39
0
    def save_sms(self, type, name, number, content, create_at):
        sms = session.query(Sms).filter_by(number=number,
                                           create_at=create_at).first()
        if not sms is None: # 重复的短信
            raise DuplicateError

        sms = Sms()
        sms.create_at = create_at
        sms.number = number
        sms.type = type
        sms.content = content

        if not name is None:
            name = name.replace(' ', '')
            name = name.replace('!', '')
            name = name.replace(u'!', '')

        if not name is None: # 保存联系人
            contact_phone_items = session.query(Contact, Phone). \
                    filter(Contact.id == Phone.contact_id). \
                    filter(Phone.number == number).all()
            if len(contact_phone_items) > 0: # 已有联系人
                contact, phone = contact_phone_items[0]
            else: # 新建联系人
                contact = session.query(Contact).filter_by(name=name).first()
                if contact is None:
                    contact = Contact(name=name)
                    session.add(contact)
                phone = Phone(number)
                phone.contact = contact
                contact.adjust_name()
                session.commit()
            sms.contact = contact
            sms.phone = phone

        self.smses.append(sms)
Beispiel #40
0
def update_sms():
    """更新短信联系人为空的短信"""
    number_rows = session.execute("""
select distinct number, phone_id, contact_id
from sms
where contact_id is null;""")
    for row in number_rows.fetchall():
        number = row['number']
        sms = session.query(Sms).filter(
            and_(Sms.number.like('%' + number), Sms.contact_id != None)
            ).first()
        if sms is not None:
            session.execute(
                """
update sms
set contact_id = :contact_id, phone_id = :phone_id
where number =:number;""",
                {'contact_id': sms.contact_id,
                 'phone_id': sms.phone_id,
                 'number': sms.number}
                )
    session.commit()
Beispiel #41
0
 def find_by(cls, **filter):
   return session.query(cls).filter_by(**filter).first()
Beispiel #42
0
 def all(cls):
   return session.query(cls).all()