Check-in [aa105661b8]
Overview
| SHA1 Hash: | aa105661b897e7edc01ef418cda27319ed668cae |
|---|---|
| Date: | 2014-07-29 23:53:30 |
| User: | mario |
| Comment: | freecode-submit with minor adaptions for freshcode.club |
| Timelines: | family | ancestors | descendants | both | trunk |
| Downloads: | Tarball | ZIP archive |
| Other Links: | files | file ages | folders | manifest |
Tags And Properties
- branch=trunk inherited from [82405bb421]
- sym-trunk inherited from [82405bb421]
Context
|
2014-07-29
| ||
| 23:54 | [cf7b3c257a] URL updating verified for function, also updates separate homepage and download fields now (user: mario, tags: trunk) | |
| 23:53 | [aa105661b8] freecode-submit with minor adaptions for freshcode.club (user: mario, tags: trunk) | |
| 23:52 | [a7a69e19c8] freecode-submit 2.9 (user: mario, tags: trunk) | |
Changes
Modified doc/fc-submit from [7398b1366c] to [6120c94c02].
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 .. 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 ... 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
"Carry exception state when a session blows up."
def __init__(self, msg):
Exception.__init__(self)
self.msg = msg
class FreecodeSession:
"Encapsulate the state of a Freecode API session."
server = "https://freecode.com/"
def __init__(self, auth=None, verbose=0, emit_enable=True):
"Initialize Freecode session credentials."
self.auth = auth
self.verbose = verbose
self.emit_enable = emit_enable
self.project = None
................................................................................
credentials = netrc.netrc()
except netrc.NetrcParseError, e:
raise FreecodeSessionException("ill-formed .netrc: %s:%s %s" \
% (e.filename, e.lineno, e.msg))
except IOError, e:
raise FreecodeSessionException(("missing .netrc file %s" % \
str(e).split()[-1]))
ret = credentials.authenticators("freecode")
if not ret:
raise FreecodeSessionException("no credentials for Freecode")
_login, self.auth, _password = ret
def on_project(self, name):
"Select project by Freecode shortname."
if self.verbose:
print "Selecting project: %s" % name
self.project = name
................................................................................
if self.verbose:
print "URL list update for %s is: %s" % (self.project, urlassoc)
# First, get permalinks for all existing URLs
uquery = FreecodeSession.server + "projects/%s/urls.json?auth_code=%s" \
% (self.permalink, self.auth)
handle = urllib2.urlopen(uquery)
content = json.loads(handle.read())
permadict = {}
for item in content:
inner = item['url']
permadict[inner['label']] = inner['permalink']
# OK, now run through the update list...
for (label, url) in urlassoc:
if label in permadict:
# updating where we need to
self.edit_request("projects/%s/urls/%s.json"
% (self.permalink, permadict[label]),
"PUT",
{"url" : {"label": label, "location" : url}})
else:
# and adding where we don't.
self.edit_request("projects/%s/urls.json"
% (self.permalink,),
"POST",
{"url" : {"label": label, "location" : url}})
# Delete URLs that weren't in the update list
remove = set(permadict.keys()) - set(map(lambda x: x[0], urlassoc))
for label in remove:
self.edit_request("projects/%s/urls/%s.json?auth_code=%s"
% (self.permalink, permadict[label], self.auth),
"DELETE", {})
class FreecodeMetadataFactory:
"Factory class for producing Freecode records in JSON."
freecode_field_map = (
("Project", "P", "name"), # Project
("Summary", "S", "oneliner"), # Project
("Description", "D", "description"), # Project
("License-List", "L", "license_list"), # Project
|
| | | | | < < < < < < | < | < < < < < < < < < < < < < > > |
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 .. 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 ... 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
"Carry exception state when a session blows up."
def __init__(self, msg):
Exception.__init__(self)
self.msg = msg
class FreecodeSession:
"Encapsulate the state of a Freecode API session."
server = "https://%s.freshcode.club/" % "api"
def __init__(self, auth=None, verbose=0, emit_enable=True):
"Initialize Freecode session credentials."
self.auth = auth
self.verbose = verbose
self.emit_enable = emit_enable
self.project = None
................................................................................
credentials = netrc.netrc()
except netrc.NetrcParseError, e:
raise FreecodeSessionException("ill-formed .netrc: %s:%s %s" \
% (e.filename, e.lineno, e.msg))
except IOError, e:
raise FreecodeSessionException(("missing .netrc file %s" % \
str(e).split()[-1]))
ret = credentials.authenticators("freshcode")
if not ret:
raise FreecodeSessionException("no credentials for Freshcode")
_login, self.auth, _password = ret
def on_project(self, name):
"Select project by Freecode shortname."
if self.verbose:
print "Selecting project: %s" % name
self.project = name
................................................................................
if self.verbose:
print "URL list update for %s is: %s" % (self.project, urlassoc)
# First, get permalinks for all existing URLs
uquery = FreecodeSession.server + "projects/%s/urls.json?auth_code=%s" \
% (self.permalink, self.auth)
handle = urllib2.urlopen(uquery)
content = json.loads(handle.read())
permadict = content['urls']
# Just send the new dict over
self.edit_request("projects/%s/urls.json" % (self.permalink),
"PUSH",
{"urls" : dict(urlassoc)})
class FreecodeMetadataFactory:
"Factory class for producing Freecode records in JSON."
freecode_field_map = (
("Project", "P", "name"), # Project
("Summary", "S", "oneliner"), # Project
("Description", "D", "description"), # Project
("License-List", "L", "license_list"), # Project
|