from calendar import monthrange
from datetime import datetime

from cubicweb.web.views.urlrewrite import SimpleReqRewriter, rgx

class BlogReqRewriter(SimpleReqRewriter):
    rules = [
        (rgx('/blogentry/([a-z_]+)'),
         dict(rql='Any X ORDERBY CD DESC WHERE X is BlogEntry, X creation_date CD, X created_by U, U login "%(user)s"' % {'user': r'\1'},
              user = r'\1')),
        (rgx('/blogentry/([a-z_]+)\.rss'),
         dict(rql='Any X ORDERBY CD DESC LIMIT 20 WHERE X is BlogEntry, X creation_date CD, X created_by U, U login "%(user)s"' % {'user': r'\1'}, vid='rss')),
        (rgx('/blogentries/([0-9]{4})'),
         dict(rql='Any B ORDERBY CD DESC WHERE B is BlogEntry, B creation_date CD, '
                  'B creation_date >= "%(param)s-01-01", '
                  'B creation_date <= "%(param)s-12-31"' % {'param': r'\1'},
              )),
        (rgx('/blogentries/([0-9]{4})/([0-9]{2})'),
         dict(rql='Any B, BD ORDERBY BD DESC '
                  'WHERE B is BlogEntry, B creation_date BD, '
                  'B creation_date >=  "%(year)s/%(month)s/01", B creation_date <= "%(year)s/%(month)s/30"' % {'year': r'\1', 'month': r'\2'},
              )),
        (rgx('/blog/([0-9]+)/blogentries'),
         dict(rql='Any B ORDERBY CD DESC WHERE B is BlogEntry, B creation_date CD, '
                  'B entry_of BL, BL eid %(eid)s' % {'eid': r'\1'},
              )),
        (rgx('/blog/([0-9]+)/blogentries/([0-9]{4})'),
         dict(rql='Any B ORDERBY CD DESC WHERE B is BlogEntry, B creation_date CD, '
                  'B creation_date >= "%(param)s-01-01", '
                  'B creation_date <= "%(param)s-12-31", B entry_of BL, BL eid %(eid)s' % {'eid': r'\1', 'param': r'\2'},
              )),
        (rgx('/blog/([0-9]+)/blogentries/([0-9]{4})/([0-9]{2})'),
         dict(rql='Any B, BD ORDERBY BD DESC '
                  'WHERE B is BlogEntry, B creation_date BD, B entry_of BL, BL eid %(eid)s, '
                  'B creation_date >=  "%(year)s/%(month)s/01", B creation_date <= "%(year)s/%(month)s/30"' % {'eid': r'\1', 'year': r'\2', 'month': r'\3'},
              )),

        ]