#!/usr/bin/env python3 import os, sys, json import cgi sys.path.append("../scripts") # module is in sibling directory import ldap_info form = cgi.FieldStorage() user = os.environ['HTTP_X_AUTHENTICATED_USER'] if 'HTTP_X_AUTHENTICATED_USER' in os.environ else "nobody" date = int(form['date'].value) if ('date' in form and len(form['date'].value) > 0) else None version = form['version'].value.strip() if ('version' in form and len(form['version'].value.strip()) > 0) else None committee = form['committee'].value if 'committee' in form else None dojson = form['json'].value if 'json' in form else None def getReleaseData(committee): try: with open("/var/www/reporter.apache.org/data/releases/%s.json" % committee, "r") as f: x = json.loads(f.read()) f.close() return x except: return {} saved = False err = None if date != None and version and committee: if not ldap_info.isValidPMC(committee): err = "Please specify a valid PMC (not incubator)" elif committee in ldap_info.getPMCownership(user) or ldap_info.isMember(user): rdata = getReleaseData(committee) if date >= 86400: # allow for local time just in case rdata[version] = date else: # it's 1970-01-01 if version in rdata: del rdata[version] try: with open("/var/www/reporter.apache.org/data/releases/%s.json" % committee, "w") as f: json.dump(rdata, f, indent=1, sort_keys=True) f.close() saved = True if dojson: print("Content-Type: application/json\r\n\r\n") print(json.dumps({'versions': rdata}, indent=1)) else: print("Content-Type: text/html\r\n\r\n