forked from qt-creator/qt-creator
Gerrit: Store full user details in server
This is needed for REST, which never returns user name (only account id, full name and email) Change-Id: Ia4e3cca15a80a26b26f5f69edfc83a18e4c1fa1b Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
committed by
Orgad Shaneh
parent
bae0f1406e
commit
0995cf22ab
@@ -240,7 +240,7 @@ void GerritDialog::updateRemotes()
|
|||||||
while (mapIt.hasNext()) {
|
while (mapIt.hasNext()) {
|
||||||
mapIt.next();
|
mapIt.next();
|
||||||
GerritServer server;
|
GerritServer server;
|
||||||
if (!server.fillFromRemote(mapIt.value(), m_parameters->server.user))
|
if (!server.fillFromRemote(mapIt.value(), m_parameters->server.user.userName))
|
||||||
continue;
|
continue;
|
||||||
// Only Ssh is currently supported. In order to extend support for http[s],
|
// Only Ssh is currently supported. In order to extend support for http[s],
|
||||||
// we need to move this logic to the model, and attempt connection to each
|
// we need to move this logic to the model, and attempt connection to each
|
||||||
|
|||||||
@@ -169,10 +169,10 @@ QString GerritPatchSet::approvalsColumn() const
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GerritPatchSet::hasApproval(const QString &userName) const
|
bool GerritPatchSet::hasApproval(const GerritUser &user) const
|
||||||
{
|
{
|
||||||
return Utils::contains(approvals, [&userName](const GerritApproval &a) {
|
return Utils::contains(approvals, [&user](const GerritApproval &a) {
|
||||||
return a.reviewer.userName == userName;
|
return a.reviewer.isSameAs(user);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -501,7 +501,7 @@ void GerritModel::refresh(const QSharedPointer<GerritServer> &server, const QStr
|
|||||||
QString realQuery = query.trimmed();
|
QString realQuery = query.trimmed();
|
||||||
if (realQuery.isEmpty()) {
|
if (realQuery.isEmpty()) {
|
||||||
realQuery = "status:open";
|
realQuery = "status:open";
|
||||||
const QString user = m_server->user;
|
const QString user = m_server->user.userName;
|
||||||
if (!user.isEmpty())
|
if (!user.isEmpty())
|
||||||
realQuery += QString(" (owner:%1 OR reviewer:%1)").arg(user);
|
realQuery += QString(" (owner:%1 OR reviewer:%1)").arg(user);
|
||||||
}
|
}
|
||||||
@@ -693,11 +693,11 @@ QList<QStandardItem *> GerritModel::changeToRow(const GerritChangePtr &c) const
|
|||||||
row[ApprovalsColumn]->setText(c->currentPatchSet.approvalsColumn());
|
row[ApprovalsColumn]->setText(c->currentPatchSet.approvalsColumn());
|
||||||
// Mark changes awaiting action using a bold font.
|
// Mark changes awaiting action using a bold font.
|
||||||
bool bold = false;
|
bool bold = false;
|
||||||
if (c->owner.userName == m_server->user) { // Owned changes: Review != 0,1. Submit or amend.
|
if (c->owner.isSameAs(m_server->user)) { // Owned changes: Review != 0,1. Submit or amend.
|
||||||
const int level = c->currentPatchSet.approvalLevel();
|
const int level = c->currentPatchSet.approvalLevel();
|
||||||
bold = level != 0 && level != 1;
|
bold = level != 0 && level != 1;
|
||||||
} else { // Changes pending for review: No review yet.
|
} else { // Changes pending for review: No review yet.
|
||||||
bold = !m_server->user.isEmpty() && !c->currentPatchSet.hasApproval(m_server->user);
|
bold = !c->currentPatchSet.hasApproval(m_server->user);
|
||||||
}
|
}
|
||||||
if (bold) {
|
if (bold) {
|
||||||
QFont font = row.first()->font();
|
QFont font = row.first()->font();
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ public:
|
|||||||
GerritPatchSet() : patchSetNumber(1) {}
|
GerritPatchSet() : patchSetNumber(1) {}
|
||||||
QString approvalsToHtml() const;
|
QString approvalsToHtml() const;
|
||||||
QString approvalsColumn() const;
|
QString approvalsColumn() const;
|
||||||
bool hasApproval(const QString &userName) const;
|
bool hasApproval(const GerritUser &user) const;
|
||||||
int approvalLevel() const;
|
int approvalLevel() const;
|
||||||
|
|
||||||
QString ref;
|
QString ref;
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ GerritParameters GerritOptionsWidget::parameters() const
|
|||||||
void GerritOptionsWidget::setParameters(const GerritParameters &p)
|
void GerritOptionsWidget::setParameters(const GerritParameters &p)
|
||||||
{
|
{
|
||||||
m_hostLineEdit->setText(p.server.host);
|
m_hostLineEdit->setText(p.server.host);
|
||||||
m_userLineEdit->setText(p.server.user);
|
m_userLineEdit->setText(p.server.user.userName);
|
||||||
m_sshChooser->setPath(p.ssh);
|
m_sshChooser->setPath(p.ssh);
|
||||||
m_curlChooser->setPath(p.curl);
|
m_curlChooser->setPath(p.curl);
|
||||||
m_portSpinBox->setValue(p.server.port);
|
m_portSpinBox->setValue(p.server.port);
|
||||||
|
|||||||
@@ -77,6 +77,15 @@ static inline QString detectSsh()
|
|||||||
return detectApp("ssh");
|
return detectApp("ssh");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GerritUser::isSameAs(const GerritUser &other) const
|
||||||
|
{
|
||||||
|
if (!userName.isEmpty() && !other.userName.isEmpty())
|
||||||
|
return userName == other.userName;
|
||||||
|
if (!fullName.isEmpty() && !other.fullName.isEmpty())
|
||||||
|
return fullName == other.fullName;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
GerritServer::GerritServer()
|
GerritServer::GerritServer()
|
||||||
: host(defaultHostC)
|
: host(defaultHostC)
|
||||||
, port(defaultPort)
|
, port(defaultPort)
|
||||||
@@ -84,18 +93,19 @@ GerritServer::GerritServer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
GerritServer::GerritServer(const QString &host, unsigned short port,
|
GerritServer::GerritServer(const QString &host, unsigned short port,
|
||||||
const QString &user, HostType type)
|
const QString &userName, HostType type)
|
||||||
: host(host)
|
: host(host)
|
||||||
, user(user)
|
|
||||||
, port(port)
|
, port(port)
|
||||||
, type(type)
|
, type(type)
|
||||||
{}
|
{
|
||||||
|
user.userName = userName;
|
||||||
|
}
|
||||||
|
|
||||||
bool GerritServer::operator==(const GerritServer &other) const
|
bool GerritServer::operator==(const GerritServer &other) const
|
||||||
{
|
{
|
||||||
if (port && other.port && port != other.port)
|
if (port && other.port && port != other.port)
|
||||||
return false;
|
return false;
|
||||||
return host == other.host && user == other.user && type == other.type;
|
return host == other.host && user.isSameAs(other.user) && type == other.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GerritParameters::setPortFlagBySshType()
|
void GerritParameters::setPortFlagBySshType()
|
||||||
@@ -116,7 +126,7 @@ GerritParameters::GerritParameters()
|
|||||||
|
|
||||||
QString GerritServer::sshHostArgument() const
|
QString GerritServer::sshHostArgument() const
|
||||||
{
|
{
|
||||||
return user.isEmpty() ? host : (user + '@' + host);
|
return user.userName.isEmpty() ? host : (user.userName + '@' + host);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GerritServer::url() const
|
QString GerritServer::url() const
|
||||||
@@ -151,7 +161,7 @@ bool GerritServer::fillFromRemote(const QString &remote, const QString &defaultU
|
|||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
const QString userName = match.captured("user");
|
const QString userName = match.captured("user");
|
||||||
user = userName.isEmpty() ? defaultUser : userName;
|
user.userName = userName.isEmpty() ? defaultUser : userName;
|
||||||
host = match.captured("host");
|
host = match.captured("host");
|
||||||
port = match.captured("port").toUShort();
|
port = match.captured("port").toUShort();
|
||||||
if (host.contains("github.com")) // Clearly not gerrit
|
if (host.contains("github.com")) // Clearly not gerrit
|
||||||
@@ -168,7 +178,7 @@ void GerritParameters::toSettings(QSettings *s) const
|
|||||||
{
|
{
|
||||||
s->beginGroup(settingsGroupC);
|
s->beginGroup(settingsGroupC);
|
||||||
s->setValue(hostKeyC, server.host);
|
s->setValue(hostKeyC, server.host);
|
||||||
s->setValue(userKeyC, server.user);
|
s->setValue(userKeyC, server.user.userName);
|
||||||
s->setValue(portKeyC, server.port);
|
s->setValue(portKeyC, server.port);
|
||||||
s->setValue(portFlagKeyC, portFlag);
|
s->setValue(portFlagKeyC, portFlag);
|
||||||
s->setValue(sshKeyC, ssh);
|
s->setValue(sshKeyC, ssh);
|
||||||
@@ -188,7 +198,7 @@ void GerritParameters::fromSettings(const QSettings *s)
|
|||||||
{
|
{
|
||||||
const QString rootKey = QLatin1String(settingsGroupC) + '/';
|
const QString rootKey = QLatin1String(settingsGroupC) + '/';
|
||||||
server.host = s->value(rootKey + hostKeyC, defaultHostC).toString();
|
server.host = s->value(rootKey + hostKeyC, defaultHostC).toString();
|
||||||
server.user = s->value(rootKey + userKeyC, QString()).toString();
|
server.user.userName = s->value(rootKey + userKeyC, QString()).toString();
|
||||||
ssh = s->value(rootKey + sshKeyC, QString()).toString();
|
ssh = s->value(rootKey + sshKeyC, QString()).toString();
|
||||||
curl = s->value(rootKey + curlKeyC).toString();
|
curl = s->value(rootKey + curlKeyC).toString();
|
||||||
server.port = s->value(rootKey + portKeyC, QVariant(int(defaultPort))).toInt();
|
server.port = s->value(rootKey + portKeyC, QVariant(int(defaultPort))).toInt();
|
||||||
@@ -204,7 +214,7 @@ void GerritParameters::fromSettings(const QSettings *s)
|
|||||||
|
|
||||||
bool GerritParameters::isValid() const
|
bool GerritParameters::isValid() const
|
||||||
{
|
{
|
||||||
return !server.host.isEmpty() && !server.user.isEmpty() && !ssh.isEmpty();
|
return !server.host.isEmpty() && !server.user.userName.isEmpty() && !ssh.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ namespace Internal {
|
|||||||
class GerritUser
|
class GerritUser
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
bool isSameAs(const GerritUser &other) const;
|
||||||
|
|
||||||
QString userName;
|
QString userName;
|
||||||
QString fullName;
|
QString fullName;
|
||||||
QString email;
|
QString email;
|
||||||
@@ -51,14 +53,14 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
GerritServer();
|
GerritServer();
|
||||||
GerritServer(const QString &host, unsigned short port, const QString &user, HostType type);
|
GerritServer(const QString &host, unsigned short port, const QString &userName, HostType type);
|
||||||
bool operator==(const GerritServer &other) const;
|
bool operator==(const GerritServer &other) const;
|
||||||
QString sshHostArgument() const;
|
QString sshHostArgument() const;
|
||||||
QString url() const;
|
QString url() const;
|
||||||
bool fillFromRemote(const QString &remote, const QString &defaultUser);
|
bool fillFromRemote(const QString &remote, const QString &defaultUser);
|
||||||
|
|
||||||
QString host;
|
QString host;
|
||||||
QString user;
|
GerritUser user;
|
||||||
unsigned short port = 0;
|
unsigned short port = 0;
|
||||||
HostType type = Ssh;
|
HostType type = Ssh;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user