Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
default_lot_role = (blacklist('numberOfBids') + schematics_default_role)
embedded_lot_role = (blacklist('numberOfBids') + schematics_embedded_role)
class Lot(Model):
class Options:
roles = {
'create': whitelist('id', 'title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'minimalStep'),
'edit': whitelist('title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'minimalStep'),
'embedded': embedded_lot_role,
'view': default_lot_role,
'default': default_lot_role,
'auction_view': default_lot_role,
'auction_patch': whitelist('id', 'auctionUrl'),
'chronograph': whitelist('id', 'auctionPeriod'),
'chronograph_view': whitelist('id', 'auctionPeriod', 'numberOfBids', 'status'),
}
id = MD5Type(required=True, default=lambda: uuid4().hex)
title = StringType(required=True, min_length=1)
title_en = StringType()
title_ru = StringType()
description = StringType()
description_en = StringType()
description_ru = StringType()
value = ModelType(Value, required=True)
minimalStep = ModelType(Value, required=True)
auctionPeriod = ModelType(Period)
auctionUrl = URLType()
status = StringType(choices=['active', 'cancelled', 'unsuccessful', 'complete'], default='active')
@serializable
related_process_roles = {
'view': (schematics_default_role + blacklist()),
'create': whitelist(
'type',
'relatedProcessID',
'parentID',
'identifier',
),
'edit': whitelist(
'type',
'relatedProcessID',
'parentID',
'identifier',
),
'concierge': whitelist(
'type',
'relatedProcessID',
'parentID',
'identifier',
)
name = StringType(required=True)
type = StringType(choices=("category", "number", "date"), required=True)
class SignalID(Model):
id = StringType(required=True)
class Signal(Model):
class Options:
serialize_when_none = True
roles = {
"create": whitelist("name", "country", "dimensions"),
"update": blacklist("created_at", "updated_at")
}
id = StringType()
name = StringType(required=True)
country = StringType(max_length=2, min_length=2, required=True)
dimensions = ListType(ModelType(Dimension), default=[])
created_at = DateTimeType()
updated_at = DateTimeType()
def add_dimension(self, dimension_name, dimension_type):
self.dimensions.append(Dimension({"name": dimension_name, "type": dimension_type}))
def remove_dimension(self, dimension_name):
self.dimensions = [dimension for dimension in self.dimensions if dimension.name != dimension_name]
default_lot_role = (blacklist('numberOfBids') + schematics_default_role)
embedded_lot_role = (blacklist('numberOfBids') + schematics_embedded_role)
class Lot(Model):
class Options:
roles = {
'create': whitelist('id', 'title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'minimalStep'),
'edit': whitelist('title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'minimalStep'),
'embedded': embedded_lot_role,
'view': default_lot_role,
'default': default_lot_role,
'auction_view': default_lot_role,
'auction_patch': whitelist('id', 'auctionUrl'),
'chronograph': whitelist('id', 'auctionPeriod'),
'chronograph_view': whitelist('id', 'auctionPeriod', 'numberOfBids', 'status'),
}
id = MD5Type(required=True, default=lambda: uuid4().hex)
title = StringType(required=True, min_length=1)
title_en = StringType()
title_ru = StringType()
description = StringType()
description_en = StringType()
description_ru = StringType()
value = ModelType(Value, required=True)
minimalStep = ModelType(Value, required=True)
auctionPeriod = ModelType(Period)
auctionUrl = URLType()
status = StringType(choices=['active', 'cancelled', 'unsuccessful', 'complete'], default='active')
def validate_parameters_uniq(parameters, *args):
if parameters:
codes = [i.code for i in parameters]
if [i for i in set(codes) if codes.count(i) > 1]:
raise ValidationError(u"Parameter code should be uniq for all parameters")
class LotValue(Model):
class Options:
roles = {
'embedded': schematics_embedded_role,
'view': schematics_default_role,
'create': whitelist('value', 'relatedLot'),
'edit': whitelist('value', 'relatedLot'),
'auction_view': whitelist('value', 'date', 'relatedLot', 'participationUrl'),
'auction_post': whitelist('value', 'date', 'relatedLot'),
'auction_patch': whitelist('participationUrl', 'relatedLot'),
}
value = ModelType(Value, required=True)
relatedLot = MD5Type(required=True)
participationUrl = URLType()
date = IsoDateTimeType(default=get_now)
def validate_value(self, data, value):
if value and isinstance(data['__parent__'], Model) and data['relatedLot']:
lots = [i for i in get_tender(data['__parent__']).lots if i.id == data['relatedLot']]
if not lots:
return
lot = lots[0]
if lot.value.amount < value.amount:
raise ValidationError(u"value of bid should be less than value of lot")
raise ValidationError(u"value should be one of feature value.")
def validate_parameters_uniq(parameters, *args):
if parameters:
codes = [i.code for i in parameters]
if [i for i in set(codes) if codes.count(i) > 1]:
raise ValidationError(u"Parameter code should be uniq for all parameters")
class LotValue(Model):
class Options:
roles = {
'embedded': schematics_embedded_role,
'view': schematics_default_role,
'create': whitelist('value', 'relatedLot'),
'edit': whitelist('value', 'relatedLot'),
'auction_view': whitelist('value', 'date', 'relatedLot', 'participationUrl'),
'auction_post': whitelist('value', 'date', 'relatedLot'),
'auction_patch': whitelist('participationUrl', 'relatedLot'),
}
value = ModelType(Value, required=True)
relatedLot = MD5Type(required=True)
participationUrl = URLType()
date = IsoDateTimeType(default=get_now)
def validate_value(self, data, value):
if value and isinstance(data['__parent__'], Model) and data['relatedLot']:
lots = [i for i in get_tender(data['__parent__']).lots if i.id == data['relatedLot']]
if not lots:
return
default_lot_role = (blacklist('numberOfBids') + schematics_default_role)
embedded_lot_role = (blacklist('numberOfBids') + schematics_embedded_role)
class Lot(Model):
class Options:
roles = {
'create': whitelist('id', 'title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'minimalStep'),
'edit': whitelist('title', 'title_en', 'title_ru', 'description', 'description_en', 'description_ru', 'value', 'minimalStep'),
'embedded': embedded_lot_role,
'view': default_lot_role,
'default': default_lot_role,
'auction_view': default_lot_role,
'auction_patch': whitelist('id', 'auctionUrl'),
'chronograph': whitelist('id', 'auctionPeriod'),
'chronograph_view': whitelist('id', 'auctionPeriod', 'numberOfBids', 'status'),
}
id = MD5Type(required=True, default=lambda: uuid4().hex)
title = StringType(required=True, min_length=1)
title_en = StringType()
title_ru = StringType()
description = StringType()
description_en = StringType()
description_ru = StringType()
value = ModelType(Value, required=True)
minimalStep = ModelType(Value, required=True)
auctionPeriod = ModelType(Period)
auctionUrl = URLType()
status = StringType(choices=['active', 'cancelled', 'unsuccessful', 'complete'], default='active')
plain_role = (blacklist('_attachments', 'revisions', 'dateModified') + schematics_embedded_role)
create_role = (blacklist('owner_token', 'owner', '_attachments', 'revisions', 'dateModified', 'doc_id', 'tenderID', 'bids', 'documents', 'awards', 'questions', 'complaints', 'auctionUrl', 'status', 'auctionPeriod', 'awardPeriod', 'procurementMethod', 'awardCriteria', 'submissionMethod') + schematics_embedded_role)
edit_role = (blacklist('lots', 'owner_token', 'owner', '_attachments', 'revisions', 'dateModified', 'doc_id', 'tenderID', 'bids', 'documents', 'awards', 'questions', 'complaints', 'auctionUrl', 'auctionPeriod', 'awardPeriod', 'procurementMethod', 'awardCriteria', 'submissionMethod', 'mode') + schematics_embedded_role)
cancel_role = whitelist('status')
view_role = (blacklist('owner_token', '_attachments', 'revisions') + schematics_embedded_role)
listing_role = whitelist('dateModified', 'doc_id')
auction_view_role = whitelist('tenderID', 'dateModified', 'bids', 'auctionPeriod', 'minimalStep', 'auctionUrl', 'features', 'lots')
auction_post_role = whitelist('bids')
auction_patch_role = whitelist('auctionUrl', 'bids', 'lots')
enquiries_role = (blacklist('owner_token', '_attachments', 'revisions', 'bids', 'numberOfBids') + schematics_embedded_role)
auction_role = (blacklist('owner_token', '_attachments', 'revisions', 'bids') + schematics_embedded_role)
chronograph_role = whitelist('status', 'enquiryPeriod', 'tenderPeriod', 'auctionPeriod', 'awardPeriod', 'lots')
chronograph_view_role = whitelist('status', 'enquiryPeriod', 'tenderPeriod', 'auctionPeriod', 'awardPeriod', 'awards', 'lots', 'doc_id', 'submissionMethodDetails', 'mode', 'numberOfBids', 'complaints')
Administrator_role = whitelist('status', 'mode', 'procuringEntity')
class Tender(SchematicsDocument, Model):
"""Data regarding tender process - publicly inviting prospective contractors to submit bids for evaluation and selecting a winner or winners."""
class Options:
roles = {
'plain': plain_role,
'create': create_role,
'edit': edit_role,
'edit_active.enquiries': edit_role,
'edit_active.tendering': cancel_role,
'edit_active.auction': cancel_role,
'edit_active.qualification': cancel_role,
'edit_active.awarded': cancel_role,
'edit_complete': whitelist(),
'edit_unsuccessful': whitelist(),
if award.complaintPeriod.endDate >= value:
raise ValidationError(
u"Contract signature date should be after award complaint period end date ({})".format(
award.complaintPeriod.endDate.isoformat()))
if value > get_now():
raise ValidationError(
u"Contract signature date can't be in the future")
ContractAuctions.__name__ = 'Contract'
class Cancellation(Model):
class Options:
roles = {
'create': whitelist('reason', 'status', 'cancellationOf', 'relatedLot'),
'edit': whitelist('status'),
'embedded': schematics_embedded_role,
'view': schematics_default_role,
}
id = MD5Type(required=True, default=lambda: uuid4().hex)
reason = StringType(required=True)
reason_en = StringType()
reason_ru = StringType()
date = IsoDateTimeType(default=get_now)
status = StringType(choices=['pending', 'active'], default='pending')
documents = ListType(ModelType(Document), default=list())
cancellationOf = StringType(required=True, choices=['tender', 'lot'], default='tender')
relatedLot = MD5Type()
def validate_relatedLot(self, data, relatedLot):
organization_roles = {
'embedded': schematics_embedded_role,
'view': schematics_default_role,
}
english_auctionParameters_edit_role = blacklist('type', 'dutchSteps')
insider_auctionParameters_edit_role = blacklist('type')
auctionParameters_roles = {
'create': blacklist('type', 'dutchSteps'),
'edit_1.sellout.english': english_auctionParameters_edit_role,
'edit_2.sellout.english': english_auctionParameters_edit_role,
'edit_3.sellout.insider': insider_auctionParameters_edit_role
}
Administrator_role = whitelist(
'auctionPeriod',
'lots',
'mode',
'procuringEntity',
'status',
'suspended',
)
related_process_roles = {
'view': (schematics_default_role + blacklist()),
'create': whitelist(
'type',
'relatedProcessID',
'parentID',
'identifier',
),