kopia lustrzana https://github.com/OpenDroneMap/WebODM
Minor bug fixes
rodzic
e706bfd17d
commit
6b80ed7a2c
|
@ -78,6 +78,7 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
||||||
'owner': project.owner == user,
|
'owner': project.owner == user,
|
||||||
'permissions': normalized_perm_names(perms[user])})
|
'permissions': normalized_perm_names(perms[user])})
|
||||||
|
|
||||||
|
result.sort(key=lambda r: r['owner'], reverse=True)
|
||||||
return Response(result, status=status.HTTP_200_OK)
|
return Response(result, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
@detail_route(methods=['post'])
|
@detail_route(methods=['post'])
|
||||||
|
@ -117,6 +118,10 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
||||||
perm = p + "_project"
|
perm = p + "_project"
|
||||||
user = User.objects.get(username=username)
|
user = User.objects.get(username=username)
|
||||||
|
|
||||||
|
# Skip owners
|
||||||
|
if project.owner == user:
|
||||||
|
continue
|
||||||
|
|
||||||
# Has permission in database but not in form?
|
# Has permission in database but not in form?
|
||||||
if user.has_perm(perm, project) and not p in perms_map[username]:
|
if user.has_perm(perm, project) and not p in perms_map[username]:
|
||||||
remove_perm(perm, user, project)
|
remove_perm(perm, user, project)
|
||||||
|
|
|
@ -87,7 +87,8 @@ class EditPermissionsPanel extends React.Component {
|
||||||
});
|
});
|
||||||
|
|
||||||
this.state.permissions.forEach(p => delete(p.autocomplete));
|
this.state.permissions.forEach(p => delete(p.autocomplete));
|
||||||
perm.autocomplete = json;
|
|
||||||
|
if (this.textFocused) perm.autocomplete = json;
|
||||||
|
|
||||||
this.setState({validUsernames: this.state.validUsernames, permissions: this.state.permissions});
|
this.setState({validUsernames: this.state.validUsernames, permissions: this.state.permissions});
|
||||||
}).fail(() => {
|
}).fail(() => {
|
||||||
|
@ -192,12 +193,15 @@ class EditPermissionsPanel extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onFocus = e => {
|
||||||
|
this.textFocused = true;
|
||||||
|
}
|
||||||
|
|
||||||
onBlur = perm => {
|
onBlur = perm => {
|
||||||
return e => {
|
return e => {
|
||||||
setTimeout(() => {
|
|
||||||
delete(perm.autocomplete);
|
delete(perm.autocomplete);
|
||||||
this.setState({permissions: this.state.permissions});
|
this.setState({permissions: this.state.permissions});
|
||||||
}, 150);
|
this.textFocused = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,14 +215,15 @@ class EditPermissionsPanel extends React.Component {
|
||||||
onChange={this.handleChangePermissionUser(p)}
|
onChange={this.handleChangePermissionUser(p)}
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
|
onFocus={this.onFocus}
|
||||||
onBlur={this.onBlur(p)}
|
onBlur={this.onBlur(p)}
|
||||||
disabled={p.owner}
|
disabled={p.owner}
|
||||||
value={p.username}
|
value={p.username}
|
||||||
className="form-control username"
|
className="form-control username"
|
||||||
placeholder={_("Username")}
|
placeholder={_("Username")}
|
||||||
ref={(domNode) => this.lastTextbox = domNode} />
|
ref={(domNode) => this.lastTextbox = domNode} />
|
||||||
{p.autocomplete ? <div className="autocomplete" style={{borderColor: this.autocompleteBorderColor, backgroundColor: this.backgroundColor}}>
|
{p.autocomplete && p.autocomplete.length > 0 ? <div className="autocomplete" style={{borderColor: this.autocompleteBorderColor, backgroundColor: this.backgroundColor}}>
|
||||||
{p.autocomplete.map(ac => <div key={ac.username} onClick={this.acOnClick(p, ac)} className="ac-entry" onMouseEnter={this.acOnMouseEnter} onMouseLeave={this.acOnMouseLeave} style={{borderColor: this.autocompleteBorderColor}}>
|
{p.autocomplete.map(ac => <div key={ac.username} onMouseDown={this.acOnClick(p, ac)} className="ac-entry" onMouseEnter={this.acOnMouseEnter} onMouseLeave={this.acOnMouseLeave} style={{borderColor: this.autocompleteBorderColor}}>
|
||||||
<div className="ac-user">{ac.username}</div>
|
<div className="ac-user">{ac.username}</div>
|
||||||
<div className="ac-email">{ac.email}</div>
|
<div className="ac-email">{ac.email}</div>
|
||||||
</div>)}
|
</div>)}
|
||||||
|
|
Ładowanie…
Reference in New Issue