HOMEINFO Tenant / Landlord communicator backend
homeinfogmbh / comcat Goto Github PK
View Code? Open in Web Editor NEWHOMEINFO Tenant / Landlord communicator backend
License: GNU General Public License v3.0
HOMEINFO Tenant / Landlord communicator backend
License: GNU General Public License v3.0
the request to /lpt/home
throws the following error
File "/usr/lib/python3.9/xml/sax/expatreader.py", line 217, in feed
self._parser.Parse(data, isFinal)
xml.parsers.expat.ExpatError: no element found: line 1, column 0
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/Authlib-1.0.0a2-py3.9.egg/authlib/integrations/flask_oauth2/resource_protector.py", line 114, in decorated
return f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev548+g22a55f7-py3.9.egg/comcat/app/lpt.py", line 17, in get_home_departures
stops = get_departures(TENEMENT.address)
File "/usr/local/lib/python3.9/dist-packages/lptlib/api.py", line 61, in get_departures
return get_departures_addr(target, stops=stops, departures=departures)
File "/usr/local/lib/python3.9/dist-packages/lptlib/api.py", line 36, in get_departures_addr
return Stops(list(client.get_departures_addr(
File "/usr/local/lib/python3.9/dist-packages/lptlib/trias.py", line 141, in get_departures_addr
self.address_to_geo(address), stops=stops, departures=departures)
File "/usr/local/lib/python3.9/dist-packages/lptlib/trias.py", line 130, in address_to_geo
if (geocoordinates := self.client.geocoordinates(address)) is None:
File "/usr/local/lib/python3.9/dist-packages/trias/client.py", line 109, in geocoordinates
reply = self.location(address, language=language)
File "/usr/local/lib/python3.9/dist-packages/trias/client.py", line 102, in location
return self.query(self._trias(request_payload))
File "/usr/local/lib/python3.9/dist-packages/trias/client.py", line 87, in query
return self._load_dom(response.content)
File "/usr/local/lib/python3.9/dist-packages/trias/client.py", line 67, in _load_dom
return self.dom.CreateFromDocument(xml)
File "/usr/local/lib/python3.9/dist-packages/trias/v1_1/trias.py", line 75, in CreateFromDocument
saxer.parse(io.BytesIO(xmld))
File "/usr/lib/python3.9/xml/sax/expatreader.py", line 111, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib/python3.9/xml/sax/xmlreader.py", line 127, in parse
self.close()
File "/usr/lib/python3.9/xml/sax/expatreader.py", line 240, in close
self.feed(b"", isFinal=True)
File "/usr/lib/python3.9/xml/sax/expatreader.py", line 221, in feed
self._err_handler.fatalError(exc)
File "/usr/lib/python3.9/xml/sax/handler.py", line 38, in fatalError
raise exception
xml.sax._exceptions.SAXParseException: <unknown>:1:0: no element found
must be a recent change because at 20.12.21 12:50 it was working fine.
changing the account won't change anything
endpoint /lpt/current
is working fine
Im Mockup war noch eine Funktion zum Passwort vergessen erstellt, Email war das einzige Feld, was dafür ausgefüllt werden soll, Recaptcha Response als weiteres mitzusendendes Feld würde aber auch noch sinn machen. Diese Schnittstelle würde ich dann auch zum Passwort ändern verwenden (die meiner Meinung nach existieren sollte)
After calling "https://backend.homeinfo.de/comcat/registration/" for accepting registration it is not possible to get the new list of registrations
https://backend.homeinfo.de/comcat/user?customer=1000
500 internal server error
CCMessenger response to GET /messenger/message
:
created: "2022-01-13T14:04:44"
id: 25
text: "test image"
user: 68
Where do I see, that an image is attached to this message?
I know that an image is attached (should be image id: 9
, accoording to response), since I specifically added one.
new error found while testing endpoint POST /account/email
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/Authlib-1.0.0a2-py3.9.egg/authlib/integrations/flask_oauth2/resource_protector.py", line 114, in decorated
return f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev536+g8fc5a24-py3.9.egg/comcat/app/account.py", line 53, in _request_email_change
request_email_change(USER.id, request.json['email'])
File "/usr/local/lib/python3.9/dist-packages/comcatlib-0.1.dev433+g7dd7aae-py3.9.egg/comcatlib/email_change.py", line 59, in request_email_change
return MAILER.send([get_email(user, email, nonce.uuid.hex)])
File "/usr/local/lib/python3.9/dist-packages/comcatlib-0.1.dev433+g7dd7aae-py3.9.egg/comcatlib/email_change.py", line 52, in get_email
return EMail(SUBJECT, SENDER, email, html=tostring(get_html(user, nonce)))
File "/usr/local/lib/python3.9/dist-packages/comcatlib-0.1.dev433+g7dd7aae-py3.9.egg/comcatlib/email_change.py", line 30, in get_html
p.text = f'Sehr geehrte/r {user.name},'
AttributeError: 'int' object has no attribute 'name'
The user should DELETE his own messages.
PATCH Request
url: https://comcat.homeinfo.de/account/email
header: Authorization: Bearer ...
body: email: <string>
post request:
{ "email":"[email protected]", "response":"03AGdBq26f8Ipn5EjuX4mU5pEPUAe6NcmZFtg....", "customer":"ttt" }
returns error 500
cursor.execute(sql, params or ())
File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 170, in execute
result = self._query(query)
File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 328, in _query
conn.query(q)
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 517, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 732, in _read_query_result
result.read()
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 1075, in read
first_packet = self.connection._read_packet()
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 684, in _read_packet
packet.check_error()
File "/usr/lib/python3/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/lib/python3/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1146, "Table 'comcat.passwordresetnonce' doesn't exist")
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/recaptcha-1.0.2-py3.9.egg/recaptcha.py", line 85, in wrapper
return function(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev554+gd529484-py3.9.egg/comcat/app/pwreset.py", line 38, in request_pw_reset
nonce = PasswordResetNonce.generate(user)
File "/usr/local/lib/python3.9/dist-packages/comcatlib-0.1.dev454+g43f3ba8-py3.9.egg/comcatlib/orm/nonces.py", line 110, in generate
cls.get(cls.user == user)
File "/usr/lib/python3/dist-packages/peewee.py", line 6416, in get
return sq.get()
File "/usr/lib/python3/dist-packages/peewee.py", line 6861, in get
return clone.execute(database)[0]
File "/usr/lib/python3/dist-packages/peewee.py", line 1898, in inner
return method(self, database, *args, **kwargs)
File "/usr/lib/python3/dist-packages/peewee.py", line 1969, in execute
return self._execute(database)
File "/usr/lib/python3/dist-packages/peewee.py", line 2141, in _execute
cursor = database.execute(self)
File "/usr/lib/python3/dist-packages/peewee.py", line 3142, in execute
return self.execute_sql(sql, params, commit=commit)
File "/usr/local/lib/python3.9/dist-packages/peeweeplus-1.17.8.dev5+g4df9cb8-py3.9.egg/peeweeplus/database.py", line 24, in execute_sql
return super().execute_sql(*args, **kwargs)
File "/usr/lib/python3/dist-packages/peewee.py", line 3136, in execute_sql
self.commit()
File "/usr/lib/python3/dist-packages/peewee.py", line 2902, in __exit__
reraise(new_type, new_type(exc_value, *exc_args), traceback)
File "/usr/lib/python3/dist-packages/peewee.py", line 185, in reraise
raise value.with_traceback(tb)
File "/usr/lib/python3/dist-packages/peewee.py", line 3129, in execute_sql
cursor.execute(sql, params or ())
File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 170, in execute
result = self._query(query)
File "/usr/lib/python3/dist-packages/pymysql/cursors.py", line 328, in _query
conn.query(q)
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 517, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 732, in _read_query_result
result.read()
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 1075, in read
first_packet = self.connection._read_packet()
File "/usr/lib/python3/dist-packages/pymysql/connections.py", line 684, in _read_packet
packet.check_error()
File "/usr/lib/python3/dist-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/usr/lib/python3/dist-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
peewee.ProgrammingError: (1146, "Table 'comcat.passwordresetnonce' doesn't exist")
Endpoint tenantcalendar/customer-events
on GET
throws the following error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/Authlib-1.0.0a2-py3.9.egg/authlib/integrations/flask_oauth2/resource_protector.py", line 114, in decorated
return f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev568+g2b1cd5c-py3.9.egg/comcat/app/tenantcalendar.py", line 24, in _list_customer_events
return JSON([
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev568+g2b1cd5c-py3.9.egg/comcat/app/tenantcalendar.py", line 24, in <listcomp>
return JSON([
File "/usr/local/lib/python3.9/dist-packages/tenantcalendar-0.1.dev45+g5eb1602-py3.9.egg/tenantcalendar/functions.py", line 173, in get_events_for_user
yield from _get_events_for_groups(ggl_user(user), condition=condition)
File "/usr/local/lib/python3.9/dist-packages/tenantcalendar-0.1.dev45+g5eb1602-py3.9.egg/tenantcalendar/functions.py", line 121, in _get_events_for_groups
condition & (GroupCustomerEvent.group << set(groups))
File "/usr/local/lib/python3.9/dist-packages/cmslib-0.1.dev636+g5193824.d20220203132402-py3.9.egg/cmslib/functions/group.py", line 74, in get_groups_lineage
for member_group in groups.groups(get_group_ids(deployment)):
TypeError: 'dict' object is not callable
Endpoint tenantcalendar/customer-events
on GET
throws the following error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/Authlib-1.0.0a2-py3.9.egg/authlib/integrations/flask_oauth2/resource_protector.py", line 114, in decorated
return f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev568+g2b1cd5c-py3.9.egg/comcat/app/tenantcalendar.py", line 24, in _list_customer_events
return JSON([
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev568+g2b1cd5c-py3.9.egg/comcat/app/tenantcalendar.py", line 24, in <listcomp>
return JSON([
File "/usr/local/lib/python3.9/dist-packages/tenantcalendar-0.1.dev44+g835f656-py3.9.egg/tenantcalendar/functions.py", line 172, in get_events_for_user
yield from _get_events_for_user(user, condition=condition)
File "/usr/local/lib/python3.9/dist-packages/tenantcalendar-0.1.dev44+g835f656-py3.9.egg/tenantcalendar/functions.py", line 152, in _get_events_for_user
return CustomerEvent.select().join(UserCustomerEvent).where(
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 716, in inner
method(clone, *args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 7162, in join
on, attr, constructor = self._normalize_join(src, dest, on, attr)
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 7057, in _normalize_join
fk_field, is_backref = self._generate_on_clause(
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 7105, in _generate_on_clause
raise ValueError('Unable to find foreign key between %s and %s. '
ValueError: Unable to find foreign key between <Model: CustomerEvent> and <Model: UserCustomerEvent>. Please specify an explicit join condition.```
Das Kontaktformular braucht einen entsprechenden Endpoint:
Anforderungen:
Email <string>, optional
phone <phone>, optional
message <string>
es darf aber nicht email
und phone
gleichzeitig null
sein
POST https://backend.homeinfo.de/comcat/tenantcalendar/membership/user?customer=1000
data = {'user':68, 'id':36}
Giving Internal Server Error
Sending post request to /tenantcalendar with the following data
{"title":"Test","start":"2021-12-09T00:39:07.668-08:00","end":"2021-12-11T00:39:07.669-08:00","text":"test","email":"[email protected]","phone":"0123456789"}
gives the following error
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/Authlib-1.0.0a2-py3.9.egg/authlib/integrations/flask_oauth2/resource_protector.py", line 114, in decorated
return f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev545+g2f2593e-py3.9.egg/comcat/app/tenantcalendar.py", line 48, in add_user_event
user_event = UserEvent.from_json(
File "/usr/local/lib/python3.9/dist-packages/tenantcalendar-0.1.dev23+g66df7ed-py3.9.egg/tenantcalendar/orm.py", line 94, in from_json
event = super().from_json(json, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/peeweeplus-1.17.3-py3.9.egg/peeweeplus/json/deserialization.py", line 122, in deserialize
raise InvalidKeys(json.keys())
peeweeplus.exceptions.InvalidKeys: dict_keys(['email', 'phone'])``
DELETE on https://backend.homeinfo.de/comcat/tenantcalendar/membership/user/17?customer=1000
Error 400 with
message: "Event not member of group.".
But the Database entry exists.
GET on https://backend.homeinfo.de/comcat/messenger/sent_messages
retrieves policy error.
POST
to /report
with data {"offer":"3122","title":true,"text":true,"image":true}
does not matter if offer/response/userEvent/topic is chosen same error for all
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request rv = self.dispatch_request() File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/usr/local/lib/python3.9/dist-packages/authlib/integrations/flask_oauth2/resource_protector.py", line 113, in decorated return f(*args, **kwargs) File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev630+g6de1f62-py3.9.egg/comcat/app/reporting.py", line 28, in report report_offer( File "/usr/local/lib/python3.9/dist-packages/reportlib-0.1.dev9+g40e14ac-py3.9.egg/reportlib/functions.py", line 36, in report_offer (OfferReport.user == user) & (OfferReport.offer == offer) AttributeError: type object 'OfferReport' has no attribute 'user'
The customer should be able to delete his own messages and the messages for each user.
Requesting data from /account gives back the following data:
admin: false
created: "2021-10-28T11:26:48"
email: "[email protected]"
id: 68
locked: false
mobile: "1234567890"
name: "Raphael"
phone: "0123456789"
tenement: {
address: 1723
annotation: "Raphael passwd 12345678"
customer: 1000
id: 189
}
address :1723 does not correspond with the data available in the CMS (Teststraße 77, 123456 Teststadt)
Wenn eine Marketplace Angebot mit mehreren Bildern erstellt wird, gibt das Backend für jedes Bild einmal diese Anzeige zurück, unter Angebot der selben id und mir allen Bildern.
z.B. id 107, 3 Bilder, 3x vom Backend zurückgegeben
request: get /marketplace
request:
this.http.post('https://comcat.homeinfo.de/oauth/revoke',
//body
{
token_type_hint:'access-token',
token: TOKEN,
client_id: ID,
client_secret: SECRET
},
{
headers:
{
Authorization: 'Bearer ' + TOKEN
}
}
)
response:
status: 400
{
"error": "invalid_client"
}
I although tried sending different data to endpoint (less or more data in body or without body, different formats e.g. url form encoded, json), but didn't change the outcome.
GET
https://homeinfo.de/comcat.de/charts
Error message:
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/Authlib-1.0.0a2-py3.9.egg/authlib/integrations/flask_oauth2/resource_protector.py", line 114, in decorated
return f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev556+gc5516b2-py3.9.egg/comcat/app/charts.py", line 69, in list_
return JSON([jsonify_base_chart(bc) for bc in get_base_charts()])
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev556+gc5516b2-py3.9.egg/comcat/app/charts.py", line 35, in get_base_charts
condition |= GroupBaseChart.group << set(user_groups())
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev556+gc5516b2-py3.9.egg/comcat/app/charts.py", line 28, in user_groups
yield from Groups(groups).rtree(gmu.group)
AttributeError: 'Groups' object has no attribute 'rtree'
sending a post request to messenger/attachments/<id>
throws the following error
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/Authlib-1.0.0a2-py3.9.egg/authlib/integrations/flask_oauth2/resource_protector.py", line 114, in decorated
return f(*args, **kwargs)
TypeError: add_attachment() got an unexpected keyword argument 'ident'
attachment is send as Blob
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/comcatlib-0.1.dev468+g3af98dd-py3.9.egg/comcatlib/app.py", line 60, in authorize_client
return FRAMEWORK.authorization_server.create_authorization_response(
TypeError: create_authorization_response() missing 1 required positional argument: 'self'```
'''
Die Endpoints Account löschen und daten ändern für die API werden benötigt
löschen vorgeschrieben, dass es aus der App initiiert werden kann https://developer.apple.com/news/?id=mdkbobfo
Die Endpoints Account löschen und daten ändern für die API werden benötigt
löschen vorgeschrieben, dass es aus der App initiiert werden kann, theoretisch auch über eine externe Website umleiten, was aber meiner Meinung nach mehr Aufwand wäre.
Apple Developer guidelines
request /client
throws
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/comcatlib-0.1.dev470+gce1d769-py3.9.egg/comcatlib/app.py", line 94, in register_client
transaction.commit()
File "/usr/local/lib/python3.9/dist-packages/peeweeplus-1.19.dev2+g9d67262-py3.9.egg/peeweeplus/transaction.py", line 84, in commit
item.record.save()
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 6603, in save
pk = self.insert(**field_dict).execute()
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 1911, in inner
return method(self, database, *args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 1982, in execute
return self._execute(database)
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 2761, in _execute
return super(Insert, self)._execute(database)
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 2479, in _execute
cursor = database.execute(self)
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 3173, in execute
return self.execute_sql(sql, params, commit=commit)
File "/usr/local/lib/python3.9/dist-packages/peeweeplus-1.19.dev2+g9d67262-py3.9.egg/peeweeplus/database.py", line 24, in execute_sql
return super().execute_sql(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 2997, in __exit__
def __exit__(self, exc_type, exc_val, exc_tb): self.db.close()
File "/usr/local/lib/python3.9/dist-packages/peewee.py", line 3114, in close
raise OperationalError('Attempting to close database while '
peewee.OperationalError: Attempting to close database while transaction is open
Request /client
throws error
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/comcatlib-0.1.dev470+gce1d769-py3.9.egg/comcatlib/app.py", line 94, in register_client
transaction.commit()
File "/usr/local/lib/python3.9/dist-packages/peeweeplus-1.19.dev1+g80a9a51-py3.9.egg/peeweeplus/transaction.py", line 79, in commit
with LockedDatabases(self.databases):
File "/usr/local/lib/python3.9/dist-packages/peeweeplus-1.19.dev1+g80a9a51-py3.9.egg/peeweeplus/transaction.py", line 49, in __getattr__
return getattr(self.primary, attr)
AttributeError: 'Client' object has no attribute 'databases'
die zu änderbaren Felder sind: Vorname, nachname, Straße, plz/stadt, telefon, mobil, email
GET
request endpoint /charts
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/lib/python3/dist-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/usr/local/lib/python3.9/dist-packages/authlib/integrations/flask_oauth2/resource_protector.py", line 113, in decorated
return f(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev606+gcefc8ee-py3.9.egg/comcat/app/charts.py", line 70, in list_
return JSON([jsonify_base_chart(bc) for bc in get_base_charts()])
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev606+gcefc8ee-py3.9.egg/comcat/app/charts.py", line 70, in <listcomp>
return JSON([jsonify_base_chart(bc) for bc in get_base_charts()])
File "/usr/local/lib/python3.9/dist-packages/comcat-0.1.dev606+gcefc8ee-py3.9.egg/comcat/app/charts.py", line 54, in jsonify_base_chart
json = base_chart.chart.to_json(skip={'schedule'})
File "/usr/local/lib/python3.9/dist-packages/cmslib-0.1.dev780+g27a5e4e.d20220330112728-py3.9.egg/cmslib/orm/charts/api/base_chart.py", line 135, in chart
return (Chart := self.chart_class).select(cascade=True).where(
File "/usr/local/lib/python3.9/dist-packages/cmslib-0.1.dev780+g27a5e4e.d20220330112728-py3.9.egg/cmslib/orm/charts/api/base_chart.py", line 130, in chart_class
return CHARTS[self.type]
KeyError: ''
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.