#!/usr/bin/python3
#encoding:utf-8


from sitepackage.cgiweb import template, cgi_cover
from sitepackage.thissql import sqlw, sqlr
from sitepackage.helper import passhash, generate, save_format_json, read_settings, ISO3166_eng, ISO3166_rus, ISO3166_ndr
from admin import make_header


import os
import random
import datetime
import json


__config__ = {
  'settings':'settings.json',
  "template_dir_path":"template",
  "session_expires_days_int":60}


def main(geted_simple_cookies, info, parametrs, files):
  errors, ok = None, False
  if 'session_id' in geted_simple_cookies:
    session_id = geted_simple_cookies['session_id'].value
    if "exit" in parametrs:
      sqlw("DELETE FROM sessions WHERE session_id=?", [session_id])
    sessions_data = sqlr("SELECT login,expires FROM sessions WHERE session_id=?",
      [session_id])
    if len(sessions_data) == 1:
      login, expires = sessions_data[0]
      utcnow = datetime.datetime.utcnow()
      if expires > str(utcnow.timestamp()):
        role = sqlr("SELECT role FROM users WHERE login=?", [login])
        if "pay_sys_edit" in role[0][0]:
          ok = True
        else:
          errors = "error4.no access"
      else:
        errors = "error1.session expire"
    else:
      errors = "error2.session expire"
  else:
    errors = "error3.no email or pass"
  if ok:
    settings = read_settings(__config__['settings'])
    pay_sys_id_name_dict = {}
    for item in settings["pay_sys"]:
      pay_sys_id_name_dict[item["id"]] = item["name"]
    table1 = """<tr><td rowspan="2">страна<br>платежная система</td><td colspan="3">по умолчанию</td></tr><tr><td colspan="3">""" 
    this_pay_sys_id = settings["ISO3166_country_pay_sys_dict"]["0"]
    for pay_sys_id, pay_sys_name in pay_sys_id_name_dict.items():
      if this_pay_sys_id == pay_sys_id:
        table1 += '<div style="float: left">%s</div>' % pay_sys_name
      else:
        table1 += """
<div style="float: left">
  <form action="settings_update.py" method="post">
    <input type="hidden" name="redirect" value="pay_sys_edit.py">
    <input type="hidden" name="action" value="pay_sys_change">
    <input type="hidden" name="pay_sys_id" value="%s">
    <input type="hidden" name="country_id" value="0">
    <button type="submit">
      %s
    </button>
  </form>
</div>
""" % (pay_sys_id, pay_sys_name)
    table1 += "</td></tr>"
    table2 = ""
    for ISO3166, rus in sorted(ISO3166_rus.items(), key=lambda item: item[1]):
      if str(ISO3166) in settings["ISO3166_country_pay_sys_dict"]:
        table1 += """<tr><td rowspan="2">страна<br>платежная система</td><td>%s</td><td>%s</td><td>%s</td></tr><tr><td colspan="3">
<div style="float: left">
  <form action="settings_update.py" method="post">
    <input type="hidden" name="redirect" value="pay_sys_edit.py">
    <input type="hidden" name="action" value="country_disable">
    <input type="hidden" name="country_id" value="%s">
    <button type="submit">
      выключить
    </button>
  </form>
</div>
""" % (rus, ISO3166_eng[ISO3166], ISO3166_ndr[ISO3166], str(ISO3166))
        this_pay_sys_id = settings["ISO3166_country_pay_sys_dict"][str(ISO3166)]
        for pay_sys_id, pay_sys_name in pay_sys_id_name_dict.items():
          if this_pay_sys_id == pay_sys_id:
            table1 += '<div style="float: left">%s</div>' % pay_sys_name
          else:
            table1 += """
<div style="float: left">
  <form action="settings_update.py" method="post">
    <input type="hidden" name="redirect" value="pay_sys_edit.py">
    <input type="hidden" name="action" value="pay_sys_change">
    <input type="hidden" name="pay_sys_id" value="%s">
    <input type="hidden" name="country_id" value="%s">
    <button type="submit">
      %s
    </button>
  </form>
</div>
""" % (pay_sys_id, str(ISO3166), pay_sys_name)
        table1 += "</td></tr>"
      else:
        table2 += """<tr><td>%s</td><td>%s</td><td>%s</td><td>
<form action="settings_update.py" method="post">
  <input type="hidden" name="redirect" value="pay_sys_edit.py">
  <input type="hidden" name="action" value="country_enable">
  <input type="hidden" name="country_id" value="%s">
  <button type="submit">
    включить
  </button>
</form>
</td></tr>
""" % (rus, ISO3166_eng[ISO3166], ISO3166_ndr[ISO3166], str(ISO3166))
    
    message = ""
    if "message" in parametrs:
      message = parametrs["message"][0]
    header = make_header(login, role)
    page = template(
      open(
        os.path.join(
          __config__["template_dir_path"],
          "pay_sys_edit.html"),
        encoding="utf8").read(),
      {
        "message":message,
        "header":header,
        "table1":table1,
        "table2":table2
      }
    )
  else:
    page = str(errors)
  return {'page':page}


if __name__ == "__main__":
  import cgitb
  cgitb.enable(display=1, logdir="log")
  cgi_cover(main)
