コード例 #1
0
ファイル: __list__.py プロジェクト: rtm-python/avatar
    def define_fields(self) -> None:
        """
		Set form fields to values from request.
		"""
        if blueprints.get_value(self.prefix + 'FilterReset', bool, False):
            for field in self:
                if field.name != 'csrf_token':
                    if type(field) is StringField or type(
                            field) is BooleanField:
                        field.data = None
                        blueprints.set_value(self.prefix + field.label.text,
                                             None)
                    elif type(field) is SelectField:
                        field.data = field.choices[0][0]
                        blueprints.set_value(self.prefix + field.label.text,
                                             field.choices[0][0])
        else:
            for field in self:
                if field.name != 'csrf_token':
                    data = field.data
                    if type(field) is StringField:
                        field.data = \
                         blueprints.get_value(self.prefix + field.label.text, str, None)
                    elif type(field) is SelectField:
                        field.data = \
                         blueprints.get_value(
                          self.prefix + field.label.text, str,
                          field.choices[0][0] \
                           if field.choices[0][0] != '' else None
                         )
                    elif type(field) is BooleanField:
                        field.data = \
                         blueprints.get_value(self.prefix + field.label.text, bool, False)
コード例 #2
0
ファイル: __list__.py プロジェクト: rtm-python/avatar
    def __init__(self,
                 prefix: str,
                 endpoint: str,
                 entity_count: int,
                 default_per_page: int = 12) -> "Pagination":
        """
		Initiate pagination object with values.
		"""
        super().__init__()
        self.endpoint = endpoint
        self.entity_count = entity_count
        # Set prefix value names
        self.prefixed_page_index = '%sPageIndex' % prefix
        self.prefixed_per_page = '%sPerPage' % prefix
        # Get page_index and per_page from request
        self.page_index = blueprints.get_value(self.prefixed_page_index, int,
                                               1)
        self.per_page = blueprints.get_value(self.prefixed_per_page, int,
                                             default_per_page)
        # Calculate page_count
        self.page_count = int(math.modf(entity_count / self.per_page)[1])
        if self.page_count < self.entity_count / self.per_page:
            self.page_count = self.page_count + 1
        # Check page_index and per_page validity
        if self.page_index < 1:
            self.page_index = 1
        elif self.page_index > self.page_count:
            self.page_index = self.page_count
        if self.per_page < 1:
            self.per_page = 1
        # Store arguments in session
        blueprints.set_value(self.prefixed_page_index, self.page_index)
        blueprints.set_value(self.prefixed_per_page, self.per_page)
コード例 #3
0
	def __init__(self) -> "PollHistoryFilter":
		"""
		Initiate object with values from request.
		"""
		super(PollHistoryFilter, self).__init__('pollHistoryFilter')
		if request.method == 'GET':
			self.username.data = blueprints.get_value(self.username.label.text, str, None)
			self.title.data = blueprints.get_value(self.title.label.text, str, None)
			self.event.data = blueprints.get_value(self.event.label.text, str, None)
		elif request.method == 'POST':
			blueprints.set_value(self.username.label.text, self.username.data)
			blueprints.set_value(self.title.label.text, self.title.data)
			blueprints.set_value(self.event.label.text, self.event.data)
			self.form_valid = True
コード例 #4
0
ファイル: __list__.py プロジェクト: rtm-python/choicer
	def __init__(self, name: str, endpoint: str, **kwargs) -> "Pagination":
		"""
		Initiate pagination object with values.
		"""
		# Apply pagination naming
		self.name = name
		self.name_page_index = '%sPageIndex' % name
		self.name_per_page = '%sPerPage' % name
		# Get page_index and per_page from request
		self.page_index = blueprints.get_value(
			self.name_page_index, int, 1)
		self.per_page = blueprints.get_value(
			self.name_per_page, int, DEFAULT_PER_PAGE)
		self.endpoint = endpoint
		self.kwargs = kwargs
コード例 #5
0
ファイル: playlist.py プロジェクト: rtm-python/avatar
def get_playlist():
    """
	Return playlist page.
	"""
    if not current_user.is_authenticated:
        return redirect(url_for('base.get_home'))
    # Handle reorderedList
    if request.json is not None and request.json.get('reorderedList'):
        order_utc = datetime.utcnow()
        for uid in request.json.get('reorderedList'):
            SoundfileStore.reorder(uid, order_utc)
            order_utc = order_utc - timedelta(microseconds=1)
        return redirect(url_for('playlist.get_playlist'))
    # Handle uidList (load data to avatar)
    if request.json is not None and request.json.get('uidList'):
        avatar_list = AvatarStore.read_list(None, 1, current_user.user.id,
                                            None, None)
        if len(avatar_list) > 0:
            avatar = avatar_list[0]
            sid_data = json.loads(avatar.sid_data)
            cleared_sid_list = []
            for uid in request.json['uidList']:
                soundfile = SoundfileStore.read(uid)
                for sid in sid_data['sid_list']:
                    if sid not in cleared_sid_list:
                        cleared_sid_list += [sid]
                        blueprints.socketio.emit(
                            'clear_data', {},
                            room=sid,
                            callback=blueprints.socketio_status)
                    blueprints.socketio.emit(
                        'load_data', {
                            'uid':
                            uid,
                            'image': {
                                'src':
                                url_for('gallery.get_image',
                                        filename=soundfile.render)
                            },
                            'audio': {
                                'src':
                                url_for('gallery.get_audio',
                                        filename=soundfile.filename),
                                'type':
                                soundfile.filetype
                            },
                            'user':
                            '******'.join([
                                current_user.user.first_name,
                                current_user.user.last_name
                            ]) if blueprints.socketio_authenticated() else ''
                        },
                        room=sid,
                        callback=blueprints.socketio_status)
        return redirect(url_for('playlist.get_playlist'))
    # Handle uidPlay (play data to avatar)
    if request.json is not None and request.json.get('uidPlay'):
        avatar_list = AvatarStore.read_list(None, 1, current_user.user.id,
                                            None, None)
        if len(avatar_list) > 0:
            avatar = avatar_list[0]
            sid_data = json.loads(avatar.sid_data)
            uid = request.json.get('uidPlay')
            soundfile = SoundfileStore.read(uid)
            for sid in sid_data['sid_list']:
                blueprints.socketio.emit('play_data', {
                    'uid':
                    uid,
                    'image': {
                        'src':
                        url_for('gallery.get_image', filename=soundfile.render)
                    },
                    'audio': {
                        'src':
                        url_for('gallery.get_audio',
                                filename=soundfile.filename),
                        'type':
                        soundfile.filetype
                    },
                    'user':
                    '******'.join([
                        current_user.user.first_name,
                        current_user.user.last_name
                    ]) if blueprints.socketio_authenticated() else ''
                },
                                         room=sid,
                                         callback=blueprints.socketio_status)
        return {'ok': True}
    # Prepare list data
    soundfile_list = SoundfileStore.read_list(0, None, None, None, True)
    return render_template('playlist/playlist.html',
                           soundfile_list=soundfile_list,
                           mobile=blueprints.get_value('mobile', bool, False))