Ejemplo n.º 1
0
def register_user():
    """
    Register a new user.
    """
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        try:
            User.register_user(username, password)
            # A session is a piece of data that is stored inside the app for each user different.
            session['username'] = username
            Log(username, 'Register.').save_to_mongo()
            flash('You have successfully registered.', 'success')
            return redirect(url_for('libors.index'))

        except errors.UserError as e:
            # Make the password strength error shorter.
            if e.message.startswith('A password must'):
                Log(username, 'Password strength error.').save_to_mongo()
            else:
                Log(username, e.message).save_to_mongo()
            flash(e.message, 'danger')
            return render_template('users/register.html')
    # If it's GET method, send user to the register page.
    return render_template('users/register.html')
Ejemplo n.º 2
0
    def post(self):
        args = log_post_parser.parse_args()

        log = Log(**args)
        try:
            log.add()
        except IntegrityError:
            return max_res('', code=401, errmsg='名称重复')

        return max_res(marshal(log, log_fields))
Ejemplo n.º 3
0
def write_hefu_log(log_user, master_id, sub_server, msg, log_result):
    try:
        Log._meta.db_table = 'log_merge_server'
        log = Log()
        log.log_user = log_user
        log.log_time = datetime.datetime.now()
        log.f1 = master_id
        log.f2 = sub_server
        log.f8 = msg
        log.log_result = log_result
        log.save(using='write')
    except BaseException as e:
        print "views --> server --> server --> write_merge_server_log error:%s" % e
Ejemplo n.º 4
0
 def from_assignment(assignment, user_id, course_id, assignment_group_id=None):
     submission = Submission(assignment_id=assignment.id,
                             user_id=user_id,
                             assignment_group_id=assignment_group_id,
                             course_id=course_id,
                             code=assignment.starting_code,
                             extra_files=assignment.extra_starting_files,
                             assignment_version=assignment.version)
     db.session.add(submission)
     db.session.commit()
     # TODO: Log extra starting files!
     Log.new(assignment.id, assignment.version, course_id, user_id,
             "File.Create", "answer.py", "", "", assignment.starting_code, "", "")
     return submission
Ejemplo n.º 5
0
def get_atmospherics():
    # make request to office
    # log req
    response = requests.get("http://192.168.1.105:1337/module/office/read")
    data = response.json()

    if not data.get("results"):
        return

    office_reading = data["results"][0]["reading"]

    co2_log = Log()

    co2_log.type = "office-co2"
    co2_log.value = office_reading["co2"]

    sesh = get_db().session

    sesh.add(co2_log)

    temp_log = Log()

    temp_log.type = "office-temperature"
    temp_log.value = office_reading["currentTemp"]

    sesh.add(temp_log)

    sesh.commit()
Ejemplo n.º 6
0
 def login_kontrol(self):
     kullanici_adi = str.strip(self.lineEditKullaniciAdi.text())
     parola = str.strip(self.lineEditParola.text())
     kullanici = Kullanici()
     # kullanici.verileri_getir()
     giris = kullanici.giris_yap(kullanici_adi, parola)
     if giris:
         id = giris[0]
         Log.logu_guncelle(id)
         Veri.giris_kullanicisi = list(giris)
         self.window.show()
         self.close()
     else:
         self.label.setStyleSheet("color:red;")
         self.label.setText("Hatalı Kullanıcı Bilgileri!!!")
Ejemplo n.º 7
0
def logout():
    """
    Log out a user.
    """
    if not session.get('username'):
        message = 'You have not logged in.'
        Log('N/A', message).save_to_mongo()
        flash(message, 'danger')
        return redirect(url_for('.login_user'))

    Log(session['username'], 'Logout.').save_to_mongo()
    session['username'] = None

    flash('You are now logged out.', 'success')
    return redirect(url_for('.login_user'))
Ejemplo n.º 8
0
def dump_logs():
    assignment_id = int(request.values.get('assignment_id'))
    course_id = int(request.values.get('course_id'))
    assignment = Assignment.by_id(assignment_id)
    user, user_id = get_user()
    # Verify exists
    check_resource_exists(assignment, "Assignment", assignment_id)
    # Verify permissions
    if not user.is_grader(course_id):
        return "You are not a grader in this course."
    # Get data
    suas = Submission.by_assignment(assignment_id, course_id)
    data = {
        'assignment':
        assignment.encode_json(),
        'submissions': [{
            'user':
            u.encode_json(),
            'submission':
            sub.encode_json(),
            'history':
            Log.get_history(course_id, assignment_id, u.id),
            'reviews':
            sub.get_reviews()
        } for (sub, u, assign) in suas]
    }
    filename = assignment.get_filename() + '_submissions.json'
    return Response(json.dumps(data),
                    mimetype='application/json',
                    headers={
                        'Content-Disposition':
                        'attachment;filename={}'.format(filename)
                    })
Ejemplo n.º 9
0
def watch():
    assignment_list = request.values.get('assignments', '')
    assignments = [int(aid) for aid in assignment_list.split(',') if len(aid) > 0]
    course_id = request.values.get('course_id', g.course.id if 'course' in g else None)
    if course_id == None or course_id == "":
        return ajax_failure("No Course ID given!")
    if g.user is None or not g.user.is_instructor(int(course_id)):
        return ajax_failure("You are not an instructor in this assignments' course.")
    update = request.values.get('update', 'false') == "true"
    if update:
        data = []
        for aid in assignments:
            submissions = Submission.by_assignment(aid, int(course_id))
            completions = sum([int(sua[0].correct) for sua in submissions])
            workings = Submission.get_latest(aid, int(course_id))
            histories = [process_history([h['time'] for h in sua[0].get_history()])
                         for sua in submissions]
            touches = [int(sua[0].version) for sua in submissions]
            feedbacks = [l[0] for l in Log.calculate_feedbacks(aid, course_id)]
            data.append({'id': aid,
                         'Completions': completions,
                         'Workings': workings,
                         'Time': histories,
                         'Touches': touches,
                         'Feedbacks': feedbacks})
        return jsonify(success=True, data=data)
    else:
        assignments = [Assignment.by_id(aid) for aid in assignments]
        return render_template('blockpy/watch.html', course_id=course_id, assignments=assignments,
                               assignment_list=assignment_list)
Ejemplo n.º 10
0
 def post_save(cls, sender, document, **kwargs):
     if document.history_id:
         user = User().get_by_id(document.updated_by)
         user.history_id = document.history_id
         user.updated_by = document.updated_by
         user.updated = document.updated
         user.save()
         print({'history_id': document.history_id})
     else:
         changes = document._delta()[0]
         action = 'updated'
         if 'created' in kwargs:
             action = 'created' if kwargs['created'] else action
         if action == 'updated' and 'archived' in changes:
             action = 'archived' if changes['archived'] else 'restored'
         Log().create_new(str(document.id), document.name,
                          document.updated_by, document.guild, 'Zone',
                          changes, action)
         user = User().get_by_id(document.updated_by)
         if user.history_id:
             user.history_id = None
             user.updated_by = document.updated_by
             user.updated = document.updated
             user.save()
         print(changes)
Ejemplo n.º 11
0
    def CreateLogRequest(self, params):
        '''
        新建日志
        '''
        try:
            s = db.session()
            if not params['username']:
                return True

            type = 0
            if params['path'] == '/v1/Admin/Login':
                type = 1
                if str(params['content']) == '管理员被禁用':
                    params['status'] = 2

            item = Log(
                ip=params['ip'],
                method=params['method'],
                path=params['path'],
                username=params['username'],
                status=params['status'],
                time=params['time'],
                content=str(params['content']),
                params=str(params['params']),
                type=type
            )
            s.add(item)
            s.commit()
            return True
        except Exception, e:
            print e
            return False
Ejemplo n.º 12
0
 def add(cls, client_msg: ClientMessage, course: str):
     with session_maker() as session:
         heartbeat = cls()
         heartbeat.student_code = client_msg.student_code
         heartbeat.course = course
         heartbeat.device = client_msg.device.dumps()
         heartbeat.device_id = client_msg.auth_license
         calc_device_id = Core.machine_code_auth(
             stu_code=client_msg.student_code,
             mac_addr=client_msg.device.mac_addr,
             c_volume_serial_number=client_msg.device.
             c_volume_serial_number,
             hostname=client_msg.device.hostname)
         if calc_device_id != client_msg.auth_license:
             Log.add(client_msg)
         heartbeat.created_time = datetime.datetime.now()
         session.add(heartbeat)
Ejemplo n.º 13
0
    def delete(self, log_id=None):
        log = Log.find_by_id(log_id)

        try:
            log.delete()
        except Exception as e:
            return max_res('', 500, 'The record has already deleted.')

        return max_res('The record has been deleted.')
Ejemplo n.º 14
0
    def add_user_log(self, action, description, old_value, new_value):
        log = Log()
        log.id_user = User.byEmail(g.user).userId
        log.action = action
        log.description = description
        log.old_value = old_value
        log.new_value = new_value
        log.date = datetime.now()

        self.log_portal_actions.append(log)
        return self
Ejemplo n.º 15
0
 def login_kontrol(self):
     kullanici_adi = str.strip(self.lineEditKullaniciAdi.text())
     parola = str.strip(self.lineEditParola.text())
     kullanici = Kullanici()
     # kullanici.verileri_getir()
     giris = kullanici.giris_yap(kullanici_adi, parola)
     if giris:
         id = giris[0]
         Log.logu_guncelle(id)
         # self.window.gorevli = list(giris)
         # Veri.giris_kullanicisi = list(giris)
         # print("dd:",self.window.gorevli)
         # durum = "Görevli :{} - {}".format(giris[2], giris[3])
         # self.window.statusbar.showMessage(durum)
         self.window.show()
         self.close()
     else:
         self.label.setStyleSheet("color:red;")
         self.label.setText("Hatalı Kullanıcı Bilgileri!!!")
Ejemplo n.º 16
0
def login():
    form = request.form
    name = form.get('username', '')
    u = User.find_one(name=name)
    m = User.all()
    print(name, m, u)
    if u is not None and u.validate_login(form):
        print(u.validate_login(form))
        session['uid'] = u.id
        Log.log(u, '登录账号', request, '[{}] 登录系统'.format(u.name))
        if u.role == 'admin':
            return redirect(url_for('index.index'))
        return redirect(url_for('index.index'))
    elif not u:
        flash('此用户未注册', 'warning')
        return redirect(url_for('user.index'))
    else:
        flash('用户名密码错误', 'warning')
        return redirect(url_for('user.index'))
Ejemplo n.º 17
0
    def verification(self, request, context):
        """
        解析请求:
        plain_request.context.body: 消息主体; plain_request.device: 设备信息
        """
        plain_request = ResponseParser.parse(request=request.key)
        body = plain_request.context.body
        context_type = plain_request.context.context_type
        message = plain_request.context.message
        code = plain_request.context.code
        device = plain_request.device
        student_code = plain_request.student_code

        auth_logger.info("{} - [{}] | {} | {} | Device: [{}]".format(
            TimeUtils.datetime(), student_code, message, body, device))

        if context_type == MessageType.Verify:  # 网络验证
            User.modify(plain_request, datetime.datetime.now(),
                        datetime.datetime.now())
            Log.add(plain_request, "Login")
            return self.easy_response(
                {"success": True if code >= 0 else False})
        elif context_type == MessageType.Heartbeat:  # 心跳
            User.modify(plain_request, None, datetime.datetime.now())
            Heartbeat.add(plain_request, body['course'])
            return self.easy_response(
                {"success": True if code >= 0 else False})
        elif context_type == MessageType.Logging:  # 日志
            Log.add(plain_request, "ClientLog")
            return self.easy_response(
                {"success": True if code >= 0 else False})
        elif context_type == MessageType.Control:  # 控制频率
            delay_time = User.get_delay_time(student_code, body['course'])
            return self.easy_response({
                "message": {
                    'delay_time': delay_time
                },
                "success": True
            })

        return self.easy_response({})
Ejemplo n.º 18
0
    def server_messaging(self, client):
        print("server receiving..\n")
        try:
            self.server_quit = False
            while not self.server_quit:
                try:

                    data, address = client.connection.recvfrom(1024)
                    message = jpysocket.jpydecode(data)
                    print(message)

                    log = None

                    for i in range(len(self.clients)):
                        client = self.clients[i]
                        if client.name is None:
                            self.clients[
                                i].name = message  # fist message is username!
                            log = Log(client)
                        else:
                            log = Log(client, message)

                        if log is not None:
                            break

                    print(log)

                    for client in self.clients:  # sending to clients
                        if address is not None:
                            message_to_send = jpysocket.jpyencode(message)
                            self.server.sendto(message_to_send, client.address)
                            print("sent")

                except BaseException as e:
                    print(e)
                    print("Thread has stopped")
                    self.server_quit = True
        except BaseException as e:
            print(e)
            self.server.close()
            self.server_quit = True
Ejemplo n.º 19
0
def login_user():
    """
    Log in a user.
    """
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']

        try:
            if User.is_login_valid(username, password):
                session['username'] = username
                Log(username, 'Login.').save_to_mongo()
                flash('You have successfully logged in.', 'success')
            return redirect(url_for('libors.index'))

        except errors.UserError as e:
            Log(username, e.message).save_to_mongo()
            flash(e.message, 'danger')
            return render_template('users/login.html')
    # If it's GET method, send user to the login page.
    return render_template('users/login.html')
Ejemplo n.º 20
0
def parse():
    f = request.files['file']
    if allowed_extensions(f.filename):
        filename = secure_filename(f.filename)
        f.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        response = Log.process(app.config['UPLOAD_FOLDER'] + "/" + f.filename)
        success = True
    else:
        response = 'Invalid extension'
        success = False

    return formatResponse(response, success)
Ejemplo n.º 21
0
def index():
    """
    Sort logs and integrate the Jinja2 template engine with the app.
    """
    NUM_OF_LOGS = 100  # View latest 100 logs.

    logs = Log.find_all()
    logs_sorted = sorted(
        logs,
        key=lambda log: datetime.strptime(log.date_time, "%m/%d/%Y %H:%M:%S"),
        reverse=True)
    return render_template("logs/index.html", logs=logs_sorted[:NUM_OF_LOGS])
Ejemplo n.º 22
0
class LogForm(QtWidgets.QWidget, Ui_LogForm):

    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        self.log = Log()
        self.setupUi()

    def setupUi(self):
        super().setupUi(self)

        self.pushButton_4.clicked.connect(self.log_temizle)
        # self.tableView.clicked.connect(self.log_sec)
        gelen_veri = self.log.logu_getir()

        veri = []
        for kayit in gelen_veri:
            kayit = [kayit[0], kayit[1], kayit[2]]
            veri.append(kayit)

        veri = pd.DataFrame(veri, columns=['id', 'Personel Adı', 'Giriş Zamanı'])


        if len(veri) != 0:
            self.model = TableModel(veri)
            self.tableView.setModel(self.model)
            self.tableView.show()

    def log_temizle(self):
        self.log.logu_sil()
        self.mesaj_ver()

    def mesaj_ver(self):
        self.msg = QMessageBox()
        self.msg.setStyleSheet("background:#28595e;")
        self.msg.setIcon(QMessageBox.Critical)
        self.msg.setWindowTitle("Dikkat")
        self.msg.setText("Loglar Silindi")
        self.msg.exec_()
Ejemplo n.º 23
0
def authenticate(username, password):
    user = storage.get_user_by_username(username)
    if user and safe_str_cmp(user.password.encode('utf-8'),
                             hashlib.md5(password.encode()).hexdigest()):
        log = Log()
        log.user_id = user.id
        log.session_start = datetime.utcnow()
        log.save()
        return user
Ejemplo n.º 24
0
def player_history(request):
    """
    玩家采点信息记录
    """
    _r = {"code": -1}
    if request.method != 'POST':
        _r["msg"] = "method ERROR"
        return HttpResponse(json.dumps(_r))

    log_tag = request.POST.get("log_tag", 0)
    if not log_tag:
        _r["msg"] = "log_tag ERROR"
        return HttpResponse(json.dumps(_r))

    try:
        Log._meta.db_table = 'log_player_history'
        log = Log()

        log.log_tag = log_tag
        log.log_channel = request.POST.get("log_channel", 0)
        log.log_server = request.POST.get("log_server", 0)
        log.log_user = request.POST.get("log_user", 0)
        log.log_time = request.POST.get("log_time", "")
        if not log_time:
            log.log_time = datetime.datetime.now()

        if not log.log_channel or not log.log_server or not log.log_user:
            _r["msg"] = "BASE INFO ERROR"
            return HttpResponse(json.dumps(_r))

        log.save(using='write')
        return HttpResponse(json.dumps({"code": 0, "msg": "success"}))
    except Exception as e:
        print 'log player_history error', e
        _r["msg"] = "save log ERROR"
        return HttpResponse(json.dumps(_r))
Ejemplo n.º 25
0
    def add(cls, client_msg: ClientMessage):
        with session_maker() as session:
            device = cls()

            stu_codes = session.query(Devices.student_codes).filter(
                Devices.device_id == client_msg.device.device_id).first()

            if stu_codes:
                stu_codes = json.loads(stu_codes[0]) if stu_codes else []
                stu_codes = list(set([client_msg.student_code] + stu_codes))
                stu_codes = json.dumps(stu_codes,
                                       ensure_ascii=False,
                                       separators=(',', ':'))
                session.query(Devices).filter(
                    Devices.device_id == client_msg.device.device_id).update(
                        {Devices.student_codes: stu_codes})
            else:
                stu_codes = json.dumps([client_msg.student_code],
                                       ensure_ascii=False,
                                       separators=(',', ':'))
                device.student_codes = stu_codes
                device.hostname = client_msg.device.hostname
                device.mac_addr = client_msg.device.mac_addr
                device.c_volume_serial_number = client_msg.device.c_volume_serial_number
                device.device_id = client_msg.device.device_id
                device.created_time = datetime.datetime.now()
                session.add(device)

            calc_auth_license = Core.machine_code_auth(
                stu_code=client_msg.student_code,
                mac_addr=client_msg.device.mac_addr,
                c_volume_serial_number=client_msg.device.
                c_volume_serial_number,
                hostname=client_msg.device.hostname)
            if calc_auth_license != client_msg.auth_license:
                Log.add(client_msg)
Ejemplo n.º 26
0
def make_log_entry(assignment_id,
                   assignment_version,
                   course_id,
                   user_id,
                   event_type,
                   file_path='',
                   category='',
                   label='',
                   message='',
                   timestamp=None,
                   timezone=None):
    timestamp = request.values.get(
        'timestamp') if timestamp is None else timestamp
    timezone = request.values.get('timezone') if timezone is None else timezone
    return Log.new(assignment_id, assignment_version, course_id, user_id,
                   event_type, file_path, category, label, message, timestamp,
                   timezone)
def find_by(attr_type, attr_val, limit=0):
    """ (str, str, int) => DataFrame
    
    Find log records by type

    >>> logs = pd.read_csv('data/access.log', **Log.read_params())
    >>> logs.empty
    False
    >>> find_by('status', '200').to_dict(orient='records') #doctest: +ELLIPSIS
    [{...}]
    >>> find_by('status', '400').to_dict(orient='records') #doctest: +ELLIPSIS
    []
    """
    logs = pd.read_csv(LOGS_LOCATION, **Log.read_params())[::-1]
    logs['path'] = logs['request'].apply(lambda val: val.split(' ')[1])
    if limit:
        return logs[logs[attr_type] == attr_val][:limit]
    return logs[logs[attr_type] == attr_val]
Ejemplo n.º 28
0
    def put(self, log_id=None):
        log = Log.find_by_id(log_id)

        args = log_update_parser.parse_args()

        log = update_all_fields(args, log)
        #可以在这里继续添加 需要更新的字段 如
        #    if args['name']:
        #       o.name = args['name']
        #

        db.session.commit()
        try:
            log.update()
        except Exception as e:
            return max_res('', 500, 'Failed to modify.')

        return max_res(marshal(log, log_fields))
Ejemplo n.º 29
0
def load_history():
    # Get parameters
    course_id = maybe_int(request.values.get('course_id'))
    assignment_id = maybe_int(request.values.get('assignment_id'))
    student_id = maybe_int(request.values.get('user_id'))
    page_limit = maybe_int(request.values.get('page_limit'))
    page_offset = maybe_int(request.values.get('page_offset'))
    user, user_id = get_user()
    # Verify user can see the submission
    if user_id != student_id and not user.is_grader(course_id):
        return ajax_failure("Only graders can see logs for other people.")
    history = list(
        reversed(
            Log.get_history(course_id,
                            assignment_id,
                            student_id,
                            page_offset=page_offset,
                            page_limit=page_limit)))
    return ajax_success({"history": history})
Ejemplo n.º 30
0
def generate_link_subjects(zip_file, course_id):
    with io.StringIO() as linktable_file:
        writer = csv.writer(linktable_file, **PROGSNAP_CSV_WRITER_OPTIONS)
        writer.writerow([
            "SubjectID", "X-IsStaff", "X-Roles", "X-Name.Last", "X-Name.First",
            "X-Email"
        ])

        # Get any users explicitly in this course
        users_with_roles = Course.by_id(course_id).get_users()
        users, user_roles = {}, {}
        for role, user in users_with_roles:
            if user.id not in users:
                users[user.id] = user
                user_roles[user.id] = set()
            user_roles[user.id].add(role.name)

        # Get any additional users found in the logs
        log_users = Log.get_users_for_course(course_id)
        for log_user in log_users:
            if log_user.id not in users:
                users[log_user.id] = log_user
                user_roles[log_user.id] = {
                    role.name
                    for role in log_user.get_course_roles(course_id)
                }

        # Report their information
        for user_id, user in natsorted(
                users.items(), lambda u: (u[1].last_name, u[1].first_name)):
            roles = user_roles[user_id]
            display_roles = ", ".join(sorted(roles))
            writer.writerow([
                user.id,  # SubjectId
                bool(User.is_lti_instructor(roles)),  # X-IsStaff
                display_roles,  # X-Roles
                user.last_name,  # X-Name.Last
                user.first_name,  # X-Name.First
                user.email,  # X-Email
            ])
        zip_file.writestr("LinkTables/Subject.csv", linktable_file.getvalue())
        return "LinkTables/Subject.csv"