# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - ApprovePage action

    This action allows you to approve a page.

    @copyright: 2005 by Robert Penz <robert.penz@outertech.com>
    @license: GNU GPL, see COPYING for details.

    Changes by Oliver Siemoneit 4.12.2006:
    * made action 1.5 compatible
"""

import os
from datetime import datetime
from MoinMoin import wikiutil
from MoinMoin.PageEditor import PageEditor
from MoinMoin.action import ActionBase

class ApprovePage(ActionBase):
    """ Approve page action

    Note: the action name is the class name
    """
    def __init__(self, pagename, request):
        ActionBase.__init__(self, pagename, request)
        self.use_ticket = True
        _ = self._
        self.form_trigger = 'approve'
        self.form_trigger_label = _('Approve')

    def is_allowed(self):
        # check user right
        may = self.request.user.may
        return may.approve(self.pagename)

    def check_condition(self):
        _ = self._
        if not self.page.exists():
            return _('This page is already deleted or was never created! Cannot be approved.')
        else:
            return None

    def do_action(self):
        """ Approve pagename """

        # Create a page editor that does not do editor backups, because
        # delete generates a "deleted" version of the page.
        #self.page = PageEditor(self.request, self.pagename, do_editor_backup=0)
        #success, msgs = self.page.approvePage(comment)
        # Approve the page
        # in the first colum is the revision and in the second the username
        open(os.path.abspath(os.path.join(self.page.getPagePath(), "approved")),"a").write("%08d\t%s\t%s\n" % (self.page.getRevList()[0], self.request.user.name,datetime.utcnow().strftime("%Y-%m-%d %H:%M:S")))

        msgs = 'Page "%s" has been successfully approved!' % self.pagename
        return 1, msgs
        
        # Create a page editor that does not do editor backups, becuase
        # approve generate "approved" version, of the page.
        #page = PageEditor(request, pagename, do_editor_backup=0)

    def get_form_html(self, buttons_html):
        _ = self._

        d = {
            'pagename': self.pagename,
            'buttons_html': buttons_html,
            'querytext': _('Really approve page?'),
            }

        return '''
<strong>%(querytext)s</strong>
<table>
    <tr>
        <td></td>
        <td class="buttons">
            %(buttons_html)s
        </td>
    </tr>
</table>
''' % d



def execute(pagename, request):
    """ Glue code for actions """
    ApprovePage(pagename, request).render()

