aboutsummaryrefslogtreecommitdiff
path: root/src/script/cpp_api/s_client.cpp
Commit message (Expand)AuthorAge
* Move client-specific files to 'src/client' (#7902)Quentin Bazin2018-11-28
* Modernize lua read (part 2 & 3): C++ templating assurance (#7410)Loïc Blot2018-06-30
* CSM/SSM: Add on_mods_loaded callback (#7411)Loïc Blot2018-06-06
* Node definition manager refactor (#7016)Dániel Juhász2018-02-10
* [CSM] Remove `on_connect` callback (#6941)red-0012018-01-21
* [CSM] Add callback on open inventory (#5793)Vincent Glize2017-10-02
* CSM: Fix documentation error for register_on_*_chat_messages (#5917)DS2017-06-09
* Fix CSM crash (#5779)red-0012017-05-20
* [CSM] add `on_item_use` (#5544)red-0012017-05-06
* [CSM] Add event on_place_node API lua (#5548)Vincent Glize2017-04-29
* [CSM] Add event on_connect player API lua (#5540)Vincent Glize2017-04-08
* [CSM] Add core.get_timeofday & core.get_day_count env calls (#5401)Loïc Blot2017-03-17
* [CSM] Add enable_client_modding param (default: false)nerzhul2017-03-13
* [CSM] Add `on_punchnode` callbackred-0012017-03-13
* [CSM] Add `on_dignode` callback (#5140)red-0012017-03-13
* [CSM] Add local formspecs. (#5094)red-0012017-03-13
* [CSM] sound_play & sound_stop support + client_lua_api doc (#5096)Loïc Blot2017-03-13
* [CSM] Add on_death, on_hp_modification & oh_damage_taken callbacks (#5093)Loïc Blot2017-03-13
* [CSM] Client side moddingLoic Blot2017-03-13
"hl opt">() : pass ### https://stackoverflow.com/questions/410221/natural-relative-days-in-python import datetime def prettydate(d): if not d.tzname() : d = d.replace(tzinfo=datetime.timezone.utc) diff = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc) - d s = diff.seconds if diff.days > 7 or diff.days < 0: return d.strftime('%Y-%m-%d') elif diff.days == 1: return '1 day ago' elif diff.days > 1: return '{} days ago'.format(diff.days) elif s <= 1: return 'just now' elif s < 60: return '{} seconds ago'.format(s) elif s < 120: return '1 minute ago' elif s < 3600: return '{} minutes ago'.format(s//60) elif s < 7200: return '1 hour ago' else: return '{} hours ago'.format(s//3600) def create_project_list() : projects = [] for i in os.listdir(opj(basedir, "projects")) : k = Project() k.name = i k.desc = "" if os.path.exists(opj(basedir, "projects", i, "description.txt")) : k.desc = open(opj(basedir, "projects", i, "description.txt"), "r").read() projects.append(k) bugs =[] k.bugs = bugs os.makedirs(opj(export, i), exist_ok=True) devs = get_devs(i) dev_avatars = [ generate_avatar(i) for i in devs ] for j in glob.glob(opj(basedir, "projects", i, "[0-9]*")) : b = Bug() b.closed = os.path.exists(opj(j, "closed")) if b.closed : b.closeddate = open(opj(j,"closed"), "r").read() b.id = os.path.basename(j) r = glob.glob(opj(j, "[0-9]*")) r.sort() b.replies = len(r)-1 f = open(r[0], "rb") m = BytesParser(policy=policy.default).parse(f) b.subject = m["Subject"] if not b.subject : b.subject = "No subject" bugs.append(b) replies = [] for l in r : f = open(l, "rb") m = BytesParser(policy=policy.default).parse(f) m["Avatar"] = generate_avatar(m["From"]) replies.append(m) b.created = replies[0]["Date"] b.avatar = replies[0]["Avatar"] if b.created : b.nicecreated = prettydate(parsedate_to_datetime(b.created)) else : b.nicecreated = "unknown" b.last_reply = replies[-1]["Date"] if b.last_reply : b.nicereply = prettydate(parsedate_to_datetime(b.last_reply)) else : b.nicereply = "unknown" f = open(opj(export, i, str(b.id)+".html"), "w") f.write(bugt.render(DOMAIN=DOMAIN, replies=replies, prname=i, bug=b, devs=devs)) bugs.sort(key=lambda b: int(b.id), reverse=True) bugs.sort(key=lambda b: int(b.closed)) f = open(opj(export, i, "index.html"), "w") f.write(buglist.render(DOMAIN=DOMAIN, bugs=bugs, prname=i, dev_avatars=dev_avatars, desc=k.desc)) f.close() k.count = len(k.bugs) k.opencount = len([ i for i in k.bugs if not i.closed ]) f = open(opj(export, "index.html"), "w") f.write(template.render(DOMAIN=DOMAIN, projects=projects)) ## Create the project list def create_buglist(project) : ## Create bug list for project pass def show_bug(bug_nr): ## Display all the replies to bug with number bug_nr pass if __name__ == "__main__" : create_project_list()