resolve conflict
This commit is contained in:
commit
7cee2693ff
|
@ -12,6 +12,7 @@ ml).
|
||||||
[1.0.7-beta]
|
[1.0.7-beta]
|
||||||
|
|
||||||
## [1.0.7-beta]
|
## [1.0.7-beta]
|
||||||
|
- [addend] #135 adding trade system
|
||||||
- [addend] #140 adding endpoint for download the settings for usb workbench
|
- [addend] #140 adding endpoint for download the settings for usb workbench
|
||||||
|
|
||||||
## [1.0.6-beta]
|
## [1.0.6-beta]
|
||||||
|
|
|
@ -46,6 +46,8 @@ class DevicehubConfig(Config):
|
||||||
host=DB_HOST,
|
host=DB_HOST,
|
||||||
db=DB_DATABASE,
|
db=DB_DATABASE,
|
||||||
) # type: str
|
) # type: str
|
||||||
|
SCHEMA = config('SCHEMA', 'dbtest')
|
||||||
|
HOST = config('HOST', 'localhost')
|
||||||
MIN_WORKBENCH = StrictVersion('11.0a1') # type: StrictVersion
|
MIN_WORKBENCH = StrictVersion('11.0a1') # type: StrictVersion
|
||||||
"""The minimum version of ereuse.org workbench that this devicehub
|
"""The minimum version of ereuse.org workbench that this devicehub
|
||||||
accepts. we recommend not changing this value.
|
accepts. we recommend not changing this value.
|
||||||
|
|
|
@ -44,8 +44,10 @@ class DeviceRow(OrderedDict):
|
||||||
# General information about device
|
# General information about device
|
||||||
self['DevicehubID'] = device.devicehub_id
|
self['DevicehubID'] = device.devicehub_id
|
||||||
self['DocumentID'] = self.document_id
|
self['DocumentID'] = self.document_id
|
||||||
self['Public Link'] = '{url}{id}'.format(url=url_for('Device.main', _external=True),
|
self['Public Link'] = '{url}{id}'.format(
|
||||||
id=device.devicehub_id)
|
url=url_for('Device.main', _external=True),
|
||||||
|
id=device.devicehub_id)
|
||||||
|
self['Lots'] = ', '.join([x.name for x in self.device.lots])
|
||||||
self['Tag 1 Type'] = self['Tag 1 ID'] = self['Tag 1 Organization'] = ''
|
self['Tag 1 Type'] = self['Tag 1 ID'] = self['Tag 1 Organization'] = ''
|
||||||
self['Tag 2 Type'] = self['Tag 2 ID'] = self['Tag 2 Organization'] = ''
|
self['Tag 2 Type'] = self['Tag 2 ID'] = self['Tag 2 Organization'] = ''
|
||||||
self['Tag 3 Type'] = self['Tag 3 ID'] = self['Tag 3 Organization'] = ''
|
self['Tag 3 Type'] = self['Tag 3 ID'] = self['Tag 3 Organization'] = ''
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import csv
|
import csv
|
||||||
import enum
|
import enum
|
||||||
import uuid
|
import uuid
|
||||||
|
import time
|
||||||
import datetime
|
import datetime
|
||||||
import pathlib
|
import pathlib
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
@ -22,6 +23,7 @@ from teal.resource import Resource, View
|
||||||
from ereuse_devicehub import auth
|
from ereuse_devicehub import auth
|
||||||
from ereuse_devicehub.db import db
|
from ereuse_devicehub.db import db
|
||||||
from ereuse_devicehub.resources.enums import SessionType
|
from ereuse_devicehub.resources.enums import SessionType
|
||||||
|
from ereuse_devicehub.resources.user.models import Session
|
||||||
from ereuse_devicehub.resources.action import models as evs
|
from ereuse_devicehub.resources.action import models as evs
|
||||||
from ereuse_devicehub.resources.device import models as devs
|
from ereuse_devicehub.resources.device import models as devs
|
||||||
from ereuse_devicehub.resources.deliverynote.models import Deliverynote
|
from ereuse_devicehub.resources.deliverynote.models import Deliverynote
|
||||||
|
@ -323,8 +325,8 @@ class WbConfDocumentView(DeviceView):
|
||||||
return jsonify('')
|
return jsonify('')
|
||||||
|
|
||||||
data = {'token': self.get_token(),
|
data = {'token': self.get_token(),
|
||||||
'host': app.config['DB_HOST'],
|
'host': app.config['HOST'],
|
||||||
'inventory': app.config['DB_SCHEMA']
|
'inventory': app.config['SCHEMA']
|
||||||
}
|
}
|
||||||
data['erase'] = False
|
data['erase'] = False
|
||||||
# data['erase'] = True if wbtype == 'usodywipe' else False
|
# data['erase'] = True if wbtype == 'usodywipe' else False
|
||||||
|
@ -336,7 +338,20 @@ class WbConfDocumentView(DeviceView):
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def get_token(self):
|
def get_token(self):
|
||||||
tk = [s.token for s in g.user.sessions if s.type == SessionType.Internal][0]
|
if not g.user.sessions:
|
||||||
|
ses = Session(user=g.user)
|
||||||
|
db.session.add(ses)
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
tk = ''
|
||||||
|
now = time.time()
|
||||||
|
for s in g.user.sessions:
|
||||||
|
if s.type == SessionType.Internal and (s.expired == 0 or s.expired > now):
|
||||||
|
tk = s.token
|
||||||
|
break
|
||||||
|
|
||||||
|
assert tk != ''
|
||||||
|
|
||||||
token = auth.Auth.encode(tk)
|
token = auth.Auth.encode(tk)
|
||||||
return token
|
return token
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,19 @@
|
||||||
[settings]
|
[settings]
|
||||||
|
|
||||||
DH_TOKEN="{{token}}"
|
DH_TOKEN = {{token}}
|
||||||
|
|
||||||
DH_HOST="{{host}}"
|
DH_HOST = {{host}}
|
||||||
DH_DATABASE="{{inventory}}"
|
DH_DATABASE = {{inventory}}
|
||||||
DEVICEHUB_URL=https://${DB_HOST}/${DB_DATABASE}/
|
DEVICEHUB_URL = https://${DB_HOST}/${DB_DATABASE}/
|
||||||
|
|
||||||
WB_BENCHMARK = False
|
|
||||||
WB_STRESS_TEST = 0
|
|
||||||
WB_SMART_TEST = ""
|
|
||||||
|
|
||||||
WB_ERASE = {{erase}}
|
WB_BENCHMARK = True
|
||||||
|
WB_STRESS_TEST = 1
|
||||||
|
WB_SMART_TEST = short
|
||||||
|
|
||||||
|
WB_ERASE =
|
||||||
WB_ERASE_STEPS = 1
|
WB_ERASE_STEPS = 1
|
||||||
WB_ERASE_LEADING_ZEROS = False
|
WB_ERASE_LEADING_ZEROS = False
|
||||||
|
|
||||||
WB_DEBUG = True
|
WB_DEBUG = False
|
||||||
|
|
||||||
|
|
|
@ -224,20 +224,14 @@ class LotDeviceView(LotBaseChildrenView):
|
||||||
id = ma.fields.List(ma.fields.Integer())
|
id = ma.fields.List(ma.fields.Integer())
|
||||||
|
|
||||||
def _post(self, lot: Lot, ids: Set[int]):
|
def _post(self, lot: Lot, ids: Set[int]):
|
||||||
|
# import pdb; pdb.set_trace()
|
||||||
# get only new devices
|
# get only new devices
|
||||||
ids -= {x.id for x in lot.devices}
|
ids -= {x.id for x in lot.devices}
|
||||||
if not ids:
|
if not ids:
|
||||||
return
|
return
|
||||||
|
|
||||||
users = [g.user.id]
|
|
||||||
if lot.trade:
|
|
||||||
# all users involved in the trade action can modify the lot
|
|
||||||
trade_users = [lot.trade.user_from.id, lot.trade.user_to.id]
|
|
||||||
if g.user in trade_users:
|
|
||||||
users = trade_users
|
|
||||||
|
|
||||||
devices = set(Device.query.filter(Device.id.in_(ids)).filter(
|
devices = set(Device.query.filter(Device.id.in_(ids)).filter(
|
||||||
Device.owner_id.in_(users)))
|
Device.owner==g.user))
|
||||||
|
|
||||||
lot.devices.update(devices)
|
lot.devices.update(devices)
|
||||||
|
|
||||||
|
@ -255,11 +249,13 @@ class LotDeviceView(LotBaseChildrenView):
|
||||||
if lot.trade:
|
if lot.trade:
|
||||||
return delete_from_trade(lot, ids)
|
return delete_from_trade(lot, ids)
|
||||||
|
|
||||||
if not g.user in lot.owner:
|
# import pdb; pdb.set_trace()
|
||||||
txt = 'This is not your trade'
|
if not g.user == lot.owner:
|
||||||
|
txt = 'This is not your lot'
|
||||||
raise ma.ValidationError(txt)
|
raise ma.ValidationError(txt)
|
||||||
|
|
||||||
devices = set(Device.query.filter(Device.id.in_(ids)).filter(
|
devices = set(Device.query.filter(Device.id.in_(ids)).filter(
|
||||||
Device.owner_id.in_(g.user.id)))
|
Device.owner_id == g.user.id))
|
||||||
|
|
||||||
lot.devices.difference_update(devices)
|
lot.devices.difference_update(devices)
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1034
tests/test_action.py
1034
tests/test_action.py
File diff suppressed because it is too large
Load diff
|
@ -220,13 +220,13 @@ def test_export_basic_snapshot(user: UserClient):
|
||||||
obj_csv = csv.reader(csv_file, delimiter=';', quotechar='"')
|
obj_csv = csv.reader(csv_file, delimiter=';', quotechar='"')
|
||||||
fixture_csv = list(obj_csv)
|
fixture_csv = list(obj_csv)
|
||||||
|
|
||||||
assert isinstance(datetime.strptime(export_csv[1][18], '%c'), datetime), \
|
assert isinstance(datetime.strptime(export_csv[1][19], '%c'), datetime), \
|
||||||
'Register in field is not a datetime'
|
'Register in field is not a datetime'
|
||||||
|
|
||||||
assert fixture_csv[0] == export_csv[0], 'Headers are not equal'
|
assert fixture_csv[0] == export_csv[0], 'Headers are not equal'
|
||||||
assert fixture_csv[1][:18] == export_csv[1][:18], 'Computer information are not equal'
|
assert fixture_csv[1][:19] == export_csv[1][:19], 'Computer information are not equal'
|
||||||
assert fixture_csv[1][19] == export_csv[1][19], 'Computer information are not equal'
|
assert fixture_csv[1][20] == export_csv[1][20], 'Computer information are not equal'
|
||||||
assert fixture_csv[1][21:] == export_csv[1][21:], 'Computer information are not equal'
|
assert fixture_csv[1][22:] == export_csv[1][22:], 'Computer information are not equal'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.mvp
|
@pytest.mark.mvp
|
||||||
|
@ -275,30 +275,33 @@ def test_export_extended(app: Devicehub, user: UserClient):
|
||||||
obj_csv = csv.reader(f, f, delimiter=';', quotechar='"')
|
obj_csv = csv.reader(f, f, delimiter=';', quotechar='"')
|
||||||
export_csv = list(obj_csv)
|
export_csv = list(obj_csv)
|
||||||
|
|
||||||
|
ff= open('ba.csv', 'w')
|
||||||
|
ff.write(csv_str)
|
||||||
|
ff.close()
|
||||||
# Open fixture csv and transform to list
|
# Open fixture csv and transform to list
|
||||||
with Path(__file__).parent.joinpath('files').joinpath(
|
with Path(__file__).parent.joinpath('files').joinpath(
|
||||||
'proposal_extended_csv_report.csv').open() as csv_file:
|
'proposal_extended_csv_report.csv').open() as csv_file:
|
||||||
obj_csv = csv.reader(csv_file, delimiter=';', quotechar='"')
|
obj_csv = csv.reader(csv_file, delimiter=';', quotechar='"')
|
||||||
fixture_csv = list(obj_csv)
|
fixture_csv = list(obj_csv)
|
||||||
|
|
||||||
assert isinstance(datetime.strptime(export_csv[1][18], '%c'), datetime), \
|
assert isinstance(datetime.strptime(export_csv[1][19], '%c'), datetime), \
|
||||||
'Register in field is not a datetime'
|
'Register in field is not a datetime'
|
||||||
|
|
||||||
assert fixture_csv[0] == export_csv[0], 'Headers are not equal'
|
assert fixture_csv[0] == export_csv[0], 'Headers are not equal'
|
||||||
assert fixture_csv[1][:18] == export_csv[1][:18], 'Computer information are not equal'
|
assert fixture_csv[1][:19] == export_csv[1][:19], 'Computer information are not equal'
|
||||||
assert fixture_csv[1][19] == export_csv[1][19], 'Computer information are not equal'
|
assert fixture_csv[1][20] == export_csv[1][20], 'Computer information are not equal'
|
||||||
assert fixture_csv[1][21:80] == export_csv[1][21:80], 'Computer information are not equal'
|
assert fixture_csv[1][22:81] == export_csv[1][22:81], 'Computer information are not equal'
|
||||||
assert fixture_csv[1][81] == export_csv[1][81], 'Computer information are not equal'
|
assert fixture_csv[1][82] == export_csv[1][82], 'Computer information are not equal'
|
||||||
assert fixture_csv[1][84:] == export_csv[1][84:], 'Computer information are not equal'
|
assert fixture_csv[1][85:] == export_csv[1][85:], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][:18] == export_csv[2][:18], 'Computer information are not equal'
|
assert fixture_csv[2][:19] == export_csv[2][:19], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][19] == export_csv[2][19], 'Computer information are not equal'
|
assert fixture_csv[2][20] == export_csv[2][20], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][21:80] == export_csv[2][21:80], 'Computer information are not equal'
|
assert fixture_csv[2][22:81] == export_csv[2][22:81], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][81] == export_csv[2][81], 'Computer information are not equal'
|
assert fixture_csv[2][82] == export_csv[2][82], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][84:104] == export_csv[2][84:104], 'Computer information are not equal'
|
assert fixture_csv[2][85:105] == export_csv[2][85:105], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][105] == export_csv[2][105], 'Computer information are not equal'
|
assert fixture_csv[2][106] == export_csv[2][106], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][108:128] == export_csv[2][108:128], 'Computer information are not equal'
|
assert fixture_csv[2][109:129] == export_csv[2][109:129], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][129] == export_csv[2][129], 'Computer information are not equal'
|
assert fixture_csv[2][130] == export_csv[2][130], 'Computer information are not equal'
|
||||||
assert fixture_csv[2][132:] == export_csv[2][132:], 'Computer information are not equal'
|
assert fixture_csv[2][133:] == export_csv[2][133:], 'Computer information are not equal'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.mvp
|
@pytest.mark.mvp
|
||||||
|
@ -656,10 +659,10 @@ def test_get_wbconf(user: UserClient):
|
||||||
"""Tests for get env file for usb wb."""
|
"""Tests for get env file for usb wb."""
|
||||||
|
|
||||||
env, _ = user.get(res=documents.DocumentDef.t, item='wbconf/usodyrate', accept=ANY)
|
env, _ = user.get(res=documents.DocumentDef.t, item='wbconf/usodyrate', accept=ANY)
|
||||||
assert 'WB_ERASE = False' in env
|
assert 'WB_ERASE =' in env
|
||||||
|
|
||||||
env, _ = user.get(res=documents.DocumentDef.t, item='wbconf/usodywipe', accept=ANY)
|
env, _ = user.get(res=documents.DocumentDef.t, item='wbconf/usodywipe', accept=ANY)
|
||||||
assert 'WB_ERASE = False' in env
|
assert 'WB_ERASE =' in env
|
||||||
# assert 'WB_ERASE = True' in env
|
# assert 'WB_ERASE = True' in env
|
||||||
|
|
||||||
session = Session.query.filter_by(user_id=user.user['id'],
|
session = Session.query.filter_by(user_id=user.user['id'],
|
||||||
|
|
Reference in a new issue