Exemple #1
0
    def add(self, v):
        """Add a new comment to the card

        In:
            - ``v`` -- the comment content
        """
        security.check_permissions('comment', self.parent)
        if v is None:
            return
        v = v.strip()
        if v:
            v = validator.clean_text(v)
            user = security.get_user()
            comment = DataComment(comment=v.strip(),
                                  card_id=self.parent.data.id,
                                  author=user.data,
                                  creation_date=datetime.datetime.utcnow())
            session.add(comment)
            session.flush()
            data = {'comment': v.strip(), 'card': self.parent.title().text}
            notifications.add_history(self.parent.column.board.data,
                                      self.parent.data,
                                      security.get_user().data,
                                      u'card_add_comment', data)
            self.comments.insert(0, self._create_comment_component(comment))
Exemple #2
0
    def go(self, comp):
        user = security.get_user()
        while user is None:
            # not logged ? Call login component
            comp.call(
                self._services(
                    login.Login,
                    self.app_title,
                    self.app_banner,
                    self.custom_css,
                    self.cfg,
                )
            )
            user = security.get_user()
            if user.last_login is None:
                # first connection.
                # Load template boards if any,
                self.app.boards_manager.create_boards_from_templates(user.data, self.cfg['tpl_cfg'])
                #  then index cards
                self.app.boards_manager.index_user_cards(user.data,
                                                         self.search_engine)
            user.update_last_login()

        comp.call(self.app.initialization())
        # Logout
        if user is not None:
            security.get_manager().logout()
Exemple #3
0
    def add(self, v):
        """Add a new comment to the card

        In:
            - ``v`` -- the comment content
        """
        security.check_permissions("comment", self.parent)
        if v is None:
            return
        v = v.strip()
        if v:
            v = validator.clean_text(v)
            user = security.get_user()
            comment = DataComment(
                comment=v.strip(),
                card_id=self.parent.data.id,
                author=user.data,
                creation_date=datetime.datetime.utcnow(),
            )
            session.add(comment)
            session.flush()
            data = {"comment": v.strip(), "card": self.parent.title().text}
            notifications.add_history(
                self.parent.column.board.data, self.parent.data, security.get_user().data, u"card_add_comment", data
            )
            self.comments.insert(0, self._create_comment_component(comment))
Exemple #4
0
    def go(self, comp):
        user = security.get_user()
        while user is None:
            # not logged ? Call login component
            comp.call(
                self._services(
                    login.Login,
                    self.app_title,
                    self.app_banner,
                    self.theme,
                    self.cfg,
                ))
            user = security.get_user()
            if user.last_login is None:
                # first connection.
                # Load template boards if any,
                self.app.boards_manager.create_boards_from_templates(
                    user.data, self.cfg['tpl_cfg'])
                #  then index cards
                self.app.boards_manager.index_user_cards(
                    user.data, self.search_engine)
            user.update_last_login()

        comp.call(self.app.initialization())
        # Logout
        if user is not None:
            security.get_manager().logout()
Exemple #5
0
    def create_card(self, text=''):
        """Create a new card

        In:
            - ``text`` -- the title of the new card
        """
        if text:
            if self.can_add_cards:
                new_card = DataCard.create_card(self.data, text, security.get_user().data)
                self.cards.append(component.Component(self._services(
                                                        card.Card, new_card.id, self
                                                       ),
                                                      'new'))
                values = {'column_id': self.id,
                          'column': self.title().text,
                          'card': new_card.title}
                notifications.add_history(self.board.data, new_card,
                                          security.get_user().data,
                                          u'card_create', values)
                scard = fts_schema.Card.from_model(new_card)
                self.search_engine.add_document(scard)
                self.search_engine.commit()
                self.set_reload_search()
            else:
                raise exceptions.KanshaException(_('Limit of cards reached fo this list'))
Exemple #6
0
    def create_card(self, text=''):
        """Create a new card

        In:
            - ``text`` -- the title of the new card
        """
        if text:
            if self.can_add_cards:
                new_card = DataCard.create_card(self.data, text,
                                                security.get_user().data)
                self.cards.append(
                    component.Component(
                        self._services(card.Card, new_card.id, self), 'new'))
                values = {
                    'column_id': self.id,
                    'column': self.title().text,
                    'card': new_card.title
                }
                notifications.add_history(self.board.data, new_card,
                                          security.get_user().data,
                                          u'card_create', values)
                scard = fts_schema.Card.from_model(new_card)
                self.search_engine.add_document(scard)
                self.search_engine.commit()
                self.set_reload_search()
            else:
                raise exceptions.KanshaException(
                    _('Limit of cards reached fo this list'))
    def commit(self):
        if not security.get_user():
            flashmessage.set_flash(_(u"Wrong login or password"))
            return False

        # display a message if the user has missed events in the last month
        user = security.get_user().entity
        one_month_ago = user.last_connection_date - timedelta(days=30)
        if any(user.unread_events(one_month_ago)):
            flashmessage.set_flash(_(u"You have new events to browse"))

        return True
Exemple #8
0
    def go(self, comp):
        user = security.get_user()
        while user is None:
            # not logged ? Call login component
            comp.call(
                self._services(login.Login, self.app_title, self.app_banner,
                               self.favicon, self.theme, self.config))
            user = security.get_user()
            user.update_last_login()

        comp.call(self.app.initialization())
        # Logout
        if user is not None:
            security.get_manager().logout()
Exemple #9
0
    def invite_members(self, emails):
        """Invite somebody to this board,

        Create token used in invitation email.
        Store email in pending list.

        In:
            - ``emails`` -- list of emails
        Return:
            - javascript to reload members and hide overlay
        """
        for email in set(emails):
            # If user already exists add it to the board directly or invite it otherwise
            invitation = forms.EmailInvitation(
                self.app_title,
                self.app_banner,
                self.custom_css,
                email,
                security.get_user().data,
                self.data,
                self.mail_sender.application_url,
            )
            invitation.send_email(self.mail_sender)

        return "YAHOO.kansha.reload_boarditems[%s]();" "YAHOO.kansha.app.hideOverlay();" % ajax.py2js(self.id)
Exemple #10
0
    def update_card_position(self, data):
        security.check_permissions('edit', self)
        data = json.loads(data)

        cols = {}
        for col in self.columns:
            cols[col().id] = col()

        orig = cols[data['orig']]

        if data['orig'] != data['dest']:  # Move from one column to another
            dest = cols[data['dest']]
            card = orig.remove_card(data['card'])
            dest.insert_card(card, data['index'])
            values = {'from': orig.title().text,
                      'to': dest.title().text,
                      'card': card().data.title}
            notifications.add_history(self.data, card().data,
                                      security.get_user().data,
                                      u'card_move', values)
            # reindex it in case it has been moved to the archive column
            scard = fts_schema.Card.from_model(card().data)
            self.search_engine.update_document(scard)
            self.search_engine.commit()
        else:  # Reorder only
            orig.move_card(data['card'], data['index'])
        session.flush()
Exemple #11
0
 def _add_asset(self, file_info):
     user = security.get_user()
     fileid = self.assets_manager.save(file_info['data'],
                                       metadata={'filename': file_info['filename'], 'content-type': file_info['content_type']})
     data = {'file': file_info['filename'], 'card': self.card.get_title()}
     self.action_log.add_history(user, u'card_add_file', data)
     return self.create_asset(DataAsset.add(fileid, self.card.data, user.data))
Exemple #12
0
 def test_comment_label(self):
     self.extension.add(u'test')
     label = self.extension.comments[0]().comment_label()
     self.assertEqual(label.text, u'test')
     label.change_text(u'test2')
     self.assertEqual(label.text, u'test2')
     self.assertTrue(label.is_author(security.get_user()))
Exemple #13
0
def render_Board_columns(self, h, comp, *args):
    h.head.css_url('js/fullcalendar-2.2.6/fullcalendar.min.css')
    h.head.javascript_url('js/moment.js')
    h.head.javascript_url('js/fullcalendar-2.2.6/fullcalendar.min.js')
    lang = security.get_user().get_locale().language
    if lang != 'en':
        h.head.javascript_url('js/fullcalendar-2.2.6/lang/%s.js' % lang)

    with h.div(id='viewport-wrapper'):
        with h.div(class_='clearfix', id='viewport'):
            h << h.div(id='calendar')
            display_week_numbers = security.get_user().display_week_numbers
            h << h.script("""YAHOO.kansha.app.create_board_calendar($('#calendar'), %s)""" % ajax.py2js(display_week_numbers))
    for column in self.columns:
        h << column.render(h, 'calendar')
    return h.root
Exemple #14
0
    def initialization(self):
        """ Initialize Kansha application

        Initialize user_menu with current user,
        Initialize last board

        Return:
         - app initialized
        """
        self.user_menu = component.Component(security.get_user())
        if security.get_user():
            if self.default_board_id:
                self.select_board(self.default_board_id)
            else:
                self.select_last_board()
        return self
Exemple #15
0
    def initialization(self):
        """ Initialize Kansha application

        Initialize user_menu with current user,
        Initialize last board

        Return:
         - app initialized
        """
        user = security.get_user()
        self.home_menu['boards'] = MenuEntry(
            _L(u'Boards'),
            'table2',
            self.boards_manager
        )
        self.home_menu['profile'] = MenuEntry(
            _L(u'Profile'),
            'user',
            self._services(
                get_userform(
                    self.app_title, self.app_banner, self.theme, user.data.source
                ),
                user.data,
            )
        )
        self.user_menu = component.Component(user)
        if user and self.content() is None:
            self.select_last_board()
        return self
Exemple #16
0
 def test_comment_label(self):
     self.extension.add(u'test')
     label = self.extension.comments[0]().comment_label()
     self.assertEqual(label.text, u'test')
     label.change_text(u'test2')
     self.assertEqual(label.text, u'test2')
     self.assertTrue(label.is_author(security.get_user()))
def render_administration(self, h, comp, *args):
    with h.div(class_='admin-page'):
        if self.content() and security.get_user():
            h << self.content
        else:
            h << comp.render(h, model='menu')
    return h.root
Exemple #18
0
def render(self, h, *args):
    user = security.get_user()

    if not user:
        return h.i('not logged')

    return ('Welcome ', h.b(user.id))
Exemple #19
0
def render(self, h, *args):
    user = security.get_user()  # Get the user object

    if not user:  # The anonymous user is ``None``
        return h.i('not logged')

    return ('Welcome ', h.b(user.id))
Exemple #20
0
    def commit(self, application_url):
        """ Commit method

        If email changes, send confirmation mail to user
        If password changes, check passwords rules
        """
        if not self.is_validated(self.fields):
            return
        # Test if email_to_confirm has changed
        if (self.target.email_to_confirm != self.email_to_confirm()
                and self.target.email != self.email_to_confirm()):
            # Change target email_to_confirm (need it to send mail)
            self.target.email_to_confirm = self.email_to_confirm()
            confirmation = self._create_email_confirmation(application_url)
            if confirmation.send_email(self.mail_sender):
                self.email_to_confirm.info = _(
                    'A confirmation email has been sent.')
            else:
                self.email_to_confirm.info = _('Unable to sent email!')
        # Test if password has changed
        if (len(self.password()) > 0 and not (self.old_password.error)
                and not (self.password_repeat.error)):
            user = security.get_user()
            user.data.change_password(self.password())
            user.update_password(self.password())
            self.password_repeat.info = _('The password has been changed')
        super(BasicUserForm, self).commit(self.fields)
Exemple #21
0
    def initialization(self):
        """ Initialize Kansha application

        Initialize user_menu with current user,
        Initialize last board

        Return:
         - app initialized
        """
        self.user_menu = component.Component(security.get_user())
        if security.get_user():
            if self.default_board_id:
                self.select_board(self.default_board_id)
            else:
                self.select_last_board()
        return self
Exemple #22
0
def render(self, h, *args):
    user = security.get_user()

    if not user:
        return h.i('not logged')

    return ('Welcome ', h.b(user.id))
Exemple #23
0
    def load_user_boards(self, user=None):
        if user is None:
            user = security.get_user()
        self.my_boards.clear()
        self.guest_boards.clear()
        self.archived_boards.clear()
        last_modifications = {}
        for board_id, in Board.get_all_board_ids(): # Comma is important
            board_obj = self._services(Board, board_id, self.app_title, self.app_banner, self.theme,
                                       self.card_extensions, self.search_engine,
                                       load_children=False)
            if security.has_permissions('manage', board_obj) or security.has_permissions('edit', board_obj):
                board_comp = component.Component(board_obj)
                if board_obj.archived:
                    self.archived_boards[board_id] = board_comp
                else:
                    last_activity = board_obj.get_last_activity()
                    if last_activity is not None:
                        last_modifications[board_id] = (last_activity, board_comp)
                    if security.has_permissions('manage', board_obj):
                        self.my_boards[board_id] = board_comp
                    elif security.has_permissions('edit', board_obj):
                        self.guest_boards[board_id] = board_comp

        last_5 = sorted(last_modifications.values(), reverse=True)[:5]
        self.last_modified_boards = OrderedDict((comp().id, comp) for _modified, comp in last_5)
        public, private = Board.get_templates_for(user.username, user.source)
        self.templates = {'public': [(b.id, b.template_title) for b in public],
                         'private': [(b.id, b.template_title) for b in private]}
Exemple #24
0
 def new_title(self, title):
     cl = self.data
     data = {'list': title, 'card': cl.card.title}
     self.action_log.add_history(
                               security.get_user(),
                               u'card_add_list',
                               data)
Exemple #25
0
    def select_board(self, id_):
        """Selected a board by id

        In:
          - ``id_`` -- the id of the board
        """
        if not id_:
            return
        if self.boards_manager.get_by_id(id_):
            self.content.becomes(
                self._services(
                    board.Board,
                    id_,
                    self.app_title,
                    self.app_banner,
                    self.custom_css,
                    self.search_engine,
                    on_board_archive=self.select_last_board,
                    on_board_leave=self.select_last_board
                )
            )
            # if user is logged, update is last board
            user = security.get_user()
            if user:
                user.set_last_board(self.content())
        else:
            raise exceptions.BoardNotFound()
Exemple #26
0
 def _create_email_confirmation(self, application_url):
     """Create email confirmation"""
     confirmation_url = '/'.join(
         (application_url, 'new_mail', self.username()))
     return registation_forms.EmailConfirmation(
         self.app_title, self.app_banner, self.theme,
         lambda: security.get_user().data, confirmation_url)
def render_administration(self, h, comp, *args):
    with h.div(class_='admin-page'):
        if self.content() and security.get_user():
            h << self.content
        else:
            h << comp.render(h, model='menu')
    return h.root
Exemple #28
0
    def __init__(self, app_title, custom_css, boards, mail_sender, assets_manager):
        """ UserBoards

        List of user's boards, and form to add new one board

        In:
         - ``boards`` -- list of user boards (BoardData instances)
        """
        self.app_title = app_title
        self.boards = []
        self.archived_boards = []

        for b in boards:
            _b = board.Board(b.id, app_title, custom_css, mail_sender, assets_manager, None,
                             on_board_delete=lambda id_=b.id: self.delete_board(
                                 id_),
                             on_board_archive=lambda id_=b.id: self.archive_board(
                                 id_),
                             on_board_restore=lambda id_=b.id: self.restore_board(
                                 id_),
                             on_board_leave=lambda id_=b.id: self.leave_board(
                                 id_),
                             load_data=False)
            if not b.archived:
                self.boards.append(component.Component(_b))
            elif b.has_manager(security.get_user()):
                self.archived_boards.append(component.Component(_b))

        self.new_board = component.Component(board.NewBoard())
Exemple #29
0
    def update_card_position(self, data):
        data = json.loads(data)

        cols = {}
        for col in self.columns:
            cols[col().id] = (col(), col)

        orig, __ = cols[data['orig']]

        dest, dest_comp = cols[data['dest']]
        card_comp = orig.remove_card_by_id(data['card'])
        dest.insert_card_comp(dest_comp, data['index'], card_comp)
        card = card_comp()
        values = {
            'from': orig.get_title(),
            'to': dest.get_title(),
            'card': card.get_title()
        }
        self.action_log.for_card(card).add_history(security.get_user(),
                                                   u'card_move', values)
        # reindex it in case it has been moved to the archive column
        scard = fts_schema.Card(**card.to_document())
        self.search_engine.update_document(scard)
        self.search_engine.commit()
        session.flush()
Exemple #30
0
    def update_card_position(self, data):
        security.check_permissions('edit', self)
        data = json.loads(data)

        cols = {}
        for col in self.columns:
            cols[col().id] = col()

        orig = cols[data['orig']]

        if data['orig'] != data['dest']:  # Move from one column to another
            dest = cols[data['dest']]
            card = orig.remove_card(data['card'])
            dest.insert_card(card, data['index'])
            values = {'from': orig.title().text,
                      'to': dest.title().text,
                      'card': card().data.title}
            notifications.add_history(self.data, card().data,
                                      security.get_user().data,
                                      u'card_move', values)
            # reindex it in case it has been moved to the archive column
            scard = fts_schema.Card.from_model(card().data)
            self.search_engine.update_document(scard)
            self.search_engine.commit()
        else:  # Reorder only
            orig.move_card(data['card'], data['index'])
        session.flush()
Exemple #31
0
    def initialization(self):
        """ Initialize Kansha application

        Initialize user_menu with current user,
        Initialize last board

        Return:
         - app initialized
        """
        user = security.get_user()
        self.home_menu['boards'] = MenuEntry(
            _L(u'Boards'),
            'board',
            self.boards_manager
        )
        self.home_menu['profile'] = MenuEntry(
            _L(u'Profile'),
            'user',
            self._services(
                get_userform(
                    self.app_title, self.app_banner, self.theme, user.data.source
                ),
                user.data,
            )
        )
        self.user_menu = component.Component(user)
        if user and self.content() is None:
            self.select_last_board()
        return self
Exemple #32
0
def render(self, h, *args):
    user = security.get_user()  # Get the user object

    if not user:    # The anonymous user is ``None``
        return h.i('not logged')

    return ('Welcome ', h.b(user.id))
Exemple #33
0
    def commit(self, application_url):
        """ Commit method

        If email changes, send confirmation mail to user
        If password changes, check passwords rules
        """
        if not self.is_validated(self.fields):
            return
        # Test if email_to_confirm has changed
        if (self.target.email_to_confirm != self.email_to_confirm() and
                self.target.email != self.email_to_confirm()):
            # Change target email_to_confirm (need it to send mail)
            self.target.email_to_confirm = self.email_to_confirm()
            confirmation = self._create_email_confirmation(application_url)
            confirmation.send_email(self.mail_sender)
            self.email_to_confirm.info = _(
                'A confirmation email has been sent.')
        # Test if password has changed
        if (len(self.password()) > 0 and
                not(self.old_password.error) and
                not(self.password_repeat.error)):
            user = security.get_user()
            user.data.change_password(self.password())
            user.update_password(self.password())
            self.password_repeat.info = _('The password has been changed')
        super(BasicUserForm, self).commit(self.fields)
Exemple #34
0
 def commit(self):
     success = False
     if self.weight.error is None:
         values = {'from': self.data.weight, 'to': self.weight.value, 'card': self.card.get_title()}
         self.data.weight = self.weight.value
         self.action_log.add_history(security.get_user(), u'card_weight', values)
         success = True
     return success
Exemple #35
0
def render_kansha_tab(self, h, comp, *args):
    user = security.get_user()
    if user is None:
        h << h.a(self.app_title)
    else:
        app_user = UserManager.get_app_user(user.username)
        h << h.a(component.Component(app_user, "avatar"), self.app_title)
    return h.root
Exemple #36
0
def render(self, h, comp, *args):
    user = security.get_user()
    if user is None:
        h << h.a(self.app_title, class_="collapse", id="mainTab")
    else:
        app_user = get_app_user(user.username)
        h << h.a(component.Component(app_user, "avatar"), self.app_title, id="mainTab")
    return h.root
Exemple #37
0
 def set_done(self):
     """toggle done status"""
     self.data.done = self.done = not self.done
     item = self.data
     data = {"item": self.get_title(), "list": item.checklist.title, "card": item.checklist.card.title}
     self.action_log.add_history(
         security.get_user(), u"card_listitem_done" if self.done else u"card_listitem_undone", data
     )
Exemple #38
0
 def new_title(self, title):
     cl = self.data
     data = {'list': title, 'card': cl.card.title}
     notifications.add_history(cl.card.column.board,
                               cl.card,
                               security.get_user().data,
                               u'card_add_list',
                               data)
Exemple #39
0
def render_kansha_tab(self, h, comp, *args):
    user = security.get_user()
    if user is None:
        h << h.a(self.app_title)
    else:
        app_user = UserManager.get_app_user(user.username)
        h << h.a(component.Component(app_user, "avatar"), self.app_title)
    return h.root
Exemple #40
0
 def delete_checklist(self, index):
     cl = self.checklists.pop(index)()
     del self.ck_cache[cl.id]
     for i in range(index, len(self.checklists)):
         self.checklists[i]().set_index(i)
     data = {"list": cl.get_title(), "card": self.card.get_title()}
     cl.data.delete()
     if data["list"]:
         self.action_log.add_history(security.get_user(), u"card_delete_list", data)
Exemple #41
0
 def has_voted(self):
     """Check if the current user already vote for this card
     """
     user = security.get_user()
     q = database.session.query(DataVote)
     q = q.filter(DataVote.user == user.data)
     card_data = self.parent.data
     q = q.filter(DataVote.card == card_data)
     return q.count() > 0
Exemple #42
0
    def set_title(self, title):
        """Set title

        In:
            - ``title`` -- new title
        """
        values = {'from': self.data.title, 'to': title}
        self.action_log.add_history(security.get_user(), u'card_title', values)
        self.data.title = title
Exemple #43
0
 def unvote(self):
     """Remove a vote to the current card
     """
     security.check_permissions('vote', self.parent)
     if self.has_voted():
         user = security.get_user()
         card_data = self.parent.data
         vote = DataVote.get_vote(user.data, card_data)
         self.votes.remove(vote)
Exemple #44
0
 def create_template_from_board(self, board, title, description, shared, user=None):
     if user is None:
         user = security.get_user()
     template = board.copy(user, {})
     template.mark_as_template()
     template.set_title(title)
     template.set_description(description)
     template.set_visibility(BOARD_PRIVATE if not shared else BOARD_PUBLIC)
     return template
Exemple #45
0
 def create_template_from_board(self, board, title, description, shared, user=None):
     if user is None:
         user = security.get_user()
     template = board.copy(user)
     template.mark_as_template()
     template.set_title(title)
     template.set_description(description)
     template.set_visibility(BOARD_PRIVATE if not shared else BOARD_PUBLIC)
     return template
Exemple #46
0
    def set_title(self, title):
        """Set title

        In:
            - ``title`` -- new title
        """
        values = {'from': self.data.title, 'to': title}
        self.action_log.add_history(security.get_user(), u'card_title', values)
        self.data.title = title
Exemple #47
0
 def has_voted(self):
     """Check if the current user already vote for this card
     """
     user = security.get_user()
     q = database.session.query(DataVote)
     q = q.filter(DataVote.user == user.data)
     card_data = self.parent.data
     q = q.filter(DataVote.card == card_data)
     return q.count() > 0
Exemple #48
0
 def unvote(self):
     """Remove a vote to the current card
     """
     security.check_permissions('vote', self.parent)
     if self.has_voted():
         user = security.get_user()
         card_data = self.parent.data
         vote = DataVote.get_vote(user.data, card_data)
         self.votes.remove(vote)
Exemple #49
0
    def set_title(self, title):
        """Set title

        In:
            - ``title`` -- new title
        """
        values = {'from': self.data.title, 'to': title}
        notifications.add_history(self.column.board.data, self.data, security.get_user().data, u'card_title', values)
        self.data.title = title
Exemple #50
0
 def weight(self, value):
     values = {
         'from': self.data.weight,
         'to': value,
         'card': self.data.title
     }
     notifications.add_history(self.column.board.data, self.data,
                               security.get_user().data, u'card_weight',
                               values)
     self.data.weight = value
Exemple #51
0
    def archive_card(self, c):
        """Delete card

        In:
            - ``c`` -- card to delete
        """
        self.cards = [card for card in self.cards if c != card()]
        values = {'column_id': self.id, 'column': self.title().text, 'card': c.title().text}
        notifications.add_history(self.board.data, c.data, security.get_user().data, u'card_archive', values)
        self.board.archive_card(c)
Exemple #52
0
 def delete_checklist(self, index):
     cl = self.checklists.pop(index)()
     del self.ck_cache[cl.id]
     for i in range(index, len(self.checklists)):
         self.checklists[i]().set_index(i)
     data = {'list': cl.get_title(), 'card': self.card.get_title()}
     cl.data.delete()
     if data['list']:
         self.action_log.add_history(security.get_user(),
                                     u'card_delete_list', data)
Exemple #53
0
    def archive_card(self, c):
        """Delete card

        In:
            - ``c`` -- card to delete
        """
        self.cards = [card for card in self.cards if c != card()]
        values = {'column_id': self.id, 'column': self.get_title(), 'card': c.get_title()}
        c.action_log.add_history(security.get_user(), u'card_archive', values)
        self.board.archive_card(c)
Exemple #54
0
    def toggle(self):
        '''Add a vote to the current card.

        Remove vote if user has already voted
        '''
        security.check_permissions('vote', self.card)
        user = security.get_user()
        if self.has_voted():
            DataVote.get_vote(self.card.data, user.data).delete()
        else:
            DataVote(card=self.card.data, user=user.data)
Exemple #55
0
 def log_in(self, comp):
     u = security.get_user()
     # If user is not local user remove user from security
     if u and not u.is_local:
         security.set_user(None)
         u = None
     if u is not None:
         database.session.flush()
         comp.answer(u)
     else:
         self._error_message = _('Login failed')
Exemple #56
0
 def delete_checklist(self, index):
     cl = self.checklists.pop(index)()
     for i in range(index, len(self.checklists)):
         self.checklists[i]().set_index(i)
     data = {'list': cl.get_title(), 'card': self.parent.get_title()}
     cl.data.delete()
     if data['list']:
         notifications.add_history(self.parent.column.board.data,
                                   self.parent.data,
                                   security.get_user().data,
                                   u'card_delete_list', data)
Exemple #57
0
    def validate_old_password(self, value):
        """Check old password

        In:
         - ``value`` -- old password
        Return:
         - password value if value is the old password
        """
        if len(value) == 0 or security.get_user().data.check_password(value):
            return self.validate_password(value)
        raise ValueError(_('''This password doesn't match the old one.'''))