from MoinMoin import wikiutil
from MoinMoin.parser.text_moin_wiki import Parser as wiki
from MoinMoin.Page import Page
import time
from datetime import datetime,timedelta
import re, StringIO

_reSeq=re.compile(ur"\s*=\s*")

## @param permission Permission user should have
## @param has_perm_text Text, in case permission granted
## @param hasnt_perm_text Text, in case user logged in and permission not granted
## @param anonymous_text Text, in case user not logged in and permission not granted
def execute(macro, args):
	request, page = macro.request, macro.formatter.page
	options = {
		'permission' : u'write',
		'has_perm_text' : u'You\'re granted to do this',
		'hasnt_perm_text' : u'You\'re not granted to do this',
		'anonymous_text' : u'Please log in'
	}

	ret = []

	pars=[s.strip() for s in args.split(',')]
	options.update(dict([_reSeq.split(s) for s in filter(_reSeq.search, pars)]))
	permission = options['permission']

	has_parm = False
	#try:
	has_perm = getattr(request.user.may, str(permission))(page.page_name)
	#except:
	#	ret += dir(request.user.may)
	#	ret.append('\n\nAclBasedText: Errornous permission: %s\n\n' % permission)
	#	wikiizer = wiki(u'\n'.join(ret), request)
	#	wikiizer.format(macro.formatter)
	#	return ''

	if has_perm:
		ret.append(options['has_perm_text'])
	else:
		if request.user.valid:
			ret.append(options['hasnt_perm_text'])
		else:
			ret.append(options['anonymous_text'])

	wikiizer = wiki(u'\n'.join(ret), request)
	wikiizer.format(macro.formatter)

	return ''

