-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathlandscapemembers.py
executable file
·96 lines (83 loc) · 3.83 KB
/
landscapemembers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/env python3
#
# Copyright this project and it's contributors
# SPDX-License-Identifier: Apache-2.0
#
# encoding=utf8
from landscape_tools.config import Config
from landscape_tools.lfxmembers import LFXMembers
from landscape_tools.landscapemembers import LandscapeMembers
from landscape_tools.crunchbasemembers import CrunchbaseMembers
from landscape_tools.landscapeoutput import LandscapeOutput
from datetime import datetime
from argparse import ArgumentParser,FileType
import os
from os import path
def main():
startTime = datetime.now()
# load config
parser = ArgumentParser()
parser.add_argument("-c", "--config", dest="configfile", type=FileType('r'), help="name of YAML config file")
args = parser.parse_args()
if args.configfile:
config = Config(args.configfile)
elif os.path.isfile("config.yml"):
config = Config("config.yml")
else:
config = Config("config.yaml")
# load member data sources
lfxmembers = LFXMembers(project = config.project)
cbmembers = CrunchbaseMembers()
lsmembers = LandscapeMembers()
lflandscape = LandscapeOutput()
lflandscape.landscapeMemberCategory = config.landscapeMemberCategory
lflandscape.landscapeMemberClasses = config.landscapeMemberClasses
lflandscape.landscapefile = config.landscapefile
lflandscape.missingcsvfile = config.missingcsvfile
lflandscape.hostedLogosDir = config.hostedLogosDir
if path.exists(config.landscapefile):
lflandscape.loadLandscape(reset=True)
else:
lflandscape.newLandscape()
# Iterate through the LFXMembers and update the landscapeMembers
for member in lfxmembers.members:
print("Processing "+member.orgname)
for memberClass in lflandscape.landscapeMembers:
landscapeMemberClass = next((item for item in config.landscapeMemberClasses if item["name"] == member.membership), None)
if ( not landscapeMemberClass is None ) and ( landscapeMemberClass['name'] == member.membership ) and ( memberClass['name'] == landscapeMemberClass['category'] ) :
# lookup in other landscapes
for lookupmember in lsmembers.find(member.orgname, member.website):
print("...Overlay other landscape data")
lookupmember.overlay(member)
# overlay crunchbase data
for cbmember in cbmembers.find(member.orgname,member.website):
if (not member.crunchbase and cbmember):
print("...Updating crunchbase from Crunchbase")
member.crunchbase = cbmember.crunchbase
try:
member.logo = lflandscape.hostLogo(logo=member.logo,orgname=member.orgname)
except ValueError as e:
pass
# Write out to missing.csv if it's missing key parameters
if not member.isValidLandscapeItem():
print("...Missing key attributes - skip")
lflandscape.removeHostedLogo(member.logo)
lflandscape.writeMissing(
member.orgname,
member.logo,
member.website,
member.crunchbase
)
# otherwise we can add it
else:
print("...Added to Landscape")
lflandscape.membersAdded += 1
# host the logo
if config.memberSuffix:
member.entrysuffix = config.memberSuffix
memberClass['items'].append(member.toLandscapeItemAttributes())
break
lflandscape.updateLandscape()
print("This took "+str(datetime.now() - startTime)+" seconds")
if __name__ == '__main__':
main()