Exemplo n.º 1
0
class AcceptedMessage(JsonObject):

    message_id = IntegerProperty(required=True)
    from_field = ObjectProperty(User, name='from', required=True)
    date = IntegerProperty()
    chat = ObjectProperty(Chat, required=True)
    text = StringProperty(required=True)
Exemplo n.º 2
0
class Fields(JsonObject):
    """ Fields model for issue"""
    status = ObjectProperty(Status)
    components = ListProperty(Component, default=None)
    labels = ListProperty(StringProperty, default=None)
    summary = StringProperty(default='')
    assignee = ObjectProperty(User)
    closed_sprints = ListProperty(Sprint, default=None, name='closedSprints')
    reporter = ObjectProperty(User)
    issue_type = ObjectProperty(IssueType)
    parent_ = DefaultProperty(default=None, name='parent')
    subtasks_ = DefaultProperty(default=None, name='subtasks')

    @property
    def parent(self):
        """ Getter for parent issue """
        if self.parent_:
            return Issue(self.parent_)
        return None

    @property
    def subtasks(self):
        """ Getter for subtasks """
        if self.subtasks_:
            return list(map(Issue, self.subtasks_))
        return None
Exemplo n.º 3
0
class Customer(JsonObject):
    ownId = StringProperty(required=True)
    fullname = StringProperty(required=True)
    email = StringProperty(required=True)
    birthDate = StringProperty(required=True)
    taxDocument = ObjectProperty(TaxDocument, required=True)
    phone = ObjectProperty(Phone, required=True)
    shippingAddress = ObjectProperty(ShippingAddress, required=True)
Exemplo n.º 4
0
class ProtectedSaleOrder(JsonObject):
    ownId = StringProperty(required=True)
    amount = ObjectProperty(Amount, exclude_if_none=True)
    items = ListProperty(Item, required=True)
    customer = ObjectProperty(Customer, required=True)
    checkoutPreferences = ObjectProperty(CheckoutPreferences,
                                         exclude_if_none=True,
                                         default=None)
Exemplo n.º 5
0
class SSMMutationOutput(JsonObject):
    mutation = StringProperty(required=True)
    non_optimality = FloatProperty(required=True)
    parameters_in_range = BooleanProperty(required=True)
    # This is no longer used by the backend because we have second best.
    # The frontend however still requires it, which is why we're keeping it.
    result_found = BooleanProperty(required=True)

    forward_primer = ObjectProperty(PrimerOutput)
    reverse_primer = ObjectProperty(PrimerOutput)
    overlap = ObjectProperty(OverlapOutput)
Exemplo n.º 6
0
class SSMInput(JsonObject):
    sequences = ObjectProperty(SSMSequences, required=True)
    config = ObjectProperty(SSMConfig, required=True)
    mutations = ListProperty(str, required=True)
    degenerate_codon = StringProperty(required=True, default="NNS")

    def parse_mutations(self, goi_offset):
        return [
            parse_codon_mutation(mutation, goi_offset)
            for mutation in self.mutations
        ]
Exemplo n.º 7
0
class QCLMInput(JsonObject):
    sequences = ObjectProperty(QCLMSequences, required=True)
    config = ObjectProperty(QCLMConfig, required=True)
    mutations = ListProperty(str, required=True)

    def parse_mutations(self, goi_offset: int) -> List[MutationSite]:
        """
        Parses the user input in the format "E32W E32L E49K" and produces multi-amino
        mutations in the format of "E32WL E49K"
        """
        codon_muts = [parse_codon_mutation(mutation, goi_offset) for mutation in self.mutations]
        return create_multi_amino_mutations(codon_muts)
Exemplo n.º 8
0
class PASInput(JsonObject):
    # Sequences for the synthesized gene.
    # Expressed as ATGC or amino acid sequence.
    sequences = ObjectProperty(PASSequences, required=True)
    # Is the gene sequence a DNA (ATGC) sequence?
    is_dna_sequence = BooleanProperty(required=True)
    # Input parameters
    config = ObjectProperty(PASConfig, required=True)
    # List of mutations by position in the gene
    mutations = ListProperty(PASMutationFormattedInput, required=False)
    # Are mutations given as codons?
    is_mutations_as_codons = BooleanProperty(required=True)
Exemplo n.º 9
0
class _QuestionDiff(JsonObject):
    question = ObjectProperty(_Change)
    label = ObjectProperty(_Change)
    type = ObjectProperty(_Change)
    value = ObjectProperty(_Change)
    calculate = ObjectProperty(_Change)
    relevant = ObjectProperty(_Change)
    required = ObjectProperty(_Change)
    comment = ObjectProperty(_Change)
    setvalue = ObjectProperty(_Change)
    constraint = ObjectProperty(_Change)
    options = DictProperty()  # {option: _Change}
    load_properties = DictProperty()  # {case_type: {property: _Change}}
    save_properties = DictProperty()  # {case_type: {property: _Change}}
Exemplo n.º 10
0
class TaxJarTax(JsonObject):
    order_total_amount = TaxJarFloatProperty()
    shipping = TaxJarFloatProperty()
    taxable_amount = TaxJarFloatProperty()
    amount_to_collect = TaxJarFloatProperty()
    rate = TaxJarFloatProperty()

    has_nexus = BooleanProperty()
    freight_taxable = BooleanProperty()

    tax_source = StringProperty()

    jurisdictions = ObjectProperty(TaxJarJurisdictions)

    breakdown = ObjectProperty(TaxJarBreakdown)
Exemplo n.º 11
0
class Status(JsonObject):
    """ Status model for issue fields """
    description = StringProperty()
    iconUrl = StringProperty()
    name = StringProperty()
    id_ = StringProperty(name='id')
    statusCategory = ObjectProperty(StatusCategory)
Exemplo n.º 12
0
class ByTypeWithTotal(JsonObject):
    by_type = ListProperty(TypedIndicator)
    totals = ObjectProperty(BasicIndicator)
    all_types = BooleanProperty(default=False)

    @property
    def enabled(self):
        return self.totals.enabled or self.all_types or len(self.enabled_types) > 0

    @property
    def enabled_types(self):
        return [type_ for type_ in self.by_type if type_.enabled]

    def types_by_date_range(self):
        types_list = sorted([
            TypeRange(type_.type, date_range) for type_ in self.enabled_types
            for date_range in type_.date_ranges
        ], key=lambda x: x.range_slug)

        return {
            range_slug: {type_.type for type_ in group}
            for range_slug, group in itertools.groupby(types_list, lambda x: x.range_slug)
        }

    def get_or_add_for_type(self, type_):
        try:
            return [by_type for by_type in self.by_type if by_type.type == type_][0]
        except IndexError:
            indicator = TypedIndicator(enabled=True, type=type_)
            self.by_type.append(
                indicator
            )
            return indicator
Exemplo n.º 13
0
class Epic(JsonObject):
    """ Epic model """
    id_ = IntegerProperty(name='id')
    done = BooleanProperty()
    key = IntegerProperty()
    name = StringProperty()
    color = ObjectProperty(EpicColor)
Exemplo n.º 14
0
class TaxJarBreakdown(JsonObject):
    taxable_amount = TaxJarFloatProperty()
    tax_collectable = TaxJarFloatProperty()
    combined_tax_rate = TaxJarFloatProperty()
    state_taxable_amount = TaxJarFloatProperty()
    state_tax_rate = TaxJarFloatProperty()
    state_tax_collectable = TaxJarFloatProperty()
    county_taxable_amount = TaxJarFloatProperty()
    county_tax_rate = TaxJarFloatProperty()
    county_tax_collectable = TaxJarFloatProperty()
    city_taxable_amount = TaxJarFloatProperty()
    city_tax_rate = TaxJarFloatProperty()
    city_tax_collectable = TaxJarFloatProperty()
    special_district_taxable_amount = TaxJarFloatProperty()
    special_tax_rate = TaxJarFloatProperty()
    special_district_tax_collectable = TaxJarFloatProperty()
    country_taxable_amount = TaxJarFloatProperty()
    country_tax_rate = TaxJarFloatProperty()
    country_tax_collectable = TaxJarFloatProperty()
    gst_taxable_amount = TaxJarFloatProperty()
    gst_tax_rate = TaxJarFloatProperty()
    gst = TaxJarFloatProperty()
    pst_taxable_amount = TaxJarFloatProperty()
    pst_tax_rate = TaxJarFloatProperty()
    pst = TaxJarFloatProperty()
    qst_taxable_amount = TaxJarFloatProperty()
    qst_tax_rate = TaxJarFloatProperty()
    qst = TaxJarFloatProperty()

    shipping = ObjectProperty(TaxJarShipping)

    line_items = ListProperty(TaxJarBreakdownLineItem)
Exemplo n.º 15
0
class PullRequest(JsonObject):
    id_ = IntegerProperty(name='id')
    version = IntegerProperty()
    title = StringProperty()
    description = StringProperty()
    state = StringProperty()
    open_ = BooleanProperty(name="open")
    closed = BooleanProperty()
    createdDate = EpochProperty()
    updatedDate = EpochProperty()
    fromRef = ObjectProperty(Ref)
    toRef = ObjectProperty(Ref)
    locked = BooleanProperty()
    author = ObjectProperty(PullRequestUser)
    reviewers = ListProperty(PullRequestUser, default=[])
    participants = ListProperty(PullRequestUser, default=[])
    properties = ObjectProperty(PullRequestProperties)
Exemplo n.º 16
0
class _FormMetadata(JsonObject):
    unique_id = StringProperty()
    name = DictProperty()
    short_comment = StringProperty()
    action_type = StringProperty()
    form_filter = StringProperty()
    questions = ListProperty(_FormMetadataQuestion)
    error = DictProperty()
    changes = ObjectProperty(_FormDiff)
Exemplo n.º 17
0
class _ModuleMetadata(JsonObject):
    unique_id = StringProperty()
    name = DictProperty()
    short_comment = StringProperty()
    module_type = StringProperty()
    is_surveys = BooleanProperty()
    module_filter = StringProperty()
    forms = ListProperty(_FormMetadata)
    changes = ObjectProperty(_ModuleDiff)
Exemplo n.º 18
0
class MessageContainer(JsonObject):
    # retry section
    # Flow should be next
    # try to send message -> received response with retry_after -> put to queue back
    # and set retry_after and set create_time
    retry_after = IntegerProperty(exclude_if_none=True)
    create_time = IntegerProperty(exclude_if_none=True)
    retry_count = IntegerProperty(exclude_if_none=True)
    message_type = StringProperty(choices=['error', 'response'], required=True)
    message = ObjectProperty(Message, required=True)
Exemplo n.º 19
0
class QCLMConfig(JsonObject):
    min_primer_size = IntegerProperty(default=23)
    opt_primer_size = IntegerProperty(default=23)
    max_primer_size = IntegerProperty(default=60)

    min_gc_content = FloatProperty(default=40)
    opt_gc_content = FloatProperty(default=50)
    max_gc_content = FloatProperty(default=60)

    min_three_end_size = IntegerProperty(default=10)
    opt_three_end_size = IntegerProperty(default=10)
    max_three_end_size = IntegerProperty(default=40)

    min_five_end_size = IntegerProperty(default=10)
    opt_five_end_size = IntegerProperty(default=10)
    max_five_end_size = IntegerProperty(default=40)

    min_temperature = FloatProperty(default=75)
    max_temperature = FloatProperty(default=90)

    gc_clamp = IntegerProperty(default=1)
    use_degeneracy_codon = BooleanProperty(default=True)
    codon_usage_frequency_threshold = FloatProperty(default=0.1)

    # Search only for solutions with non-overlapping primers?
    non_overlapping_primers = BooleanProperty(default=False)

    # Should we use the primer3 to check generated primers?
    use_primer3 = BooleanProperty(default=True)

    # The allowed range for primer melting temperatures, in deg C
    temp_range_size = FloatProperty(default=5)

    # Temperature calculator configuration
    temperature_config = ObjectProperty(TemperatureConfig,
                                        default=create_default_qclm_temperature_config())

    # Weights used for non_optimality calculation.
    temp_weight = FloatProperty(default=16)         # for 1 deg C difference from the reaction temperature
    primer_size_weight = FloatProperty(default=4)   # for 1 base difference from the optimal primer size
    three_end_size_weight = FloatProperty(default=8)
    five_end_size_weight = FloatProperty(default=1)
    gc_content_weight = FloatProperty(default=0)
    mutation_coverage_weight = FloatProperty(default=160)  # multiplies (1- <total mutation coverage>)
    # For primers which break the hairpin/primer-dimer temperature constraints
    hairpin_temperature_weight = FloatProperty(default=32)         # for each deg C higher
    primer_dimer_temperature_weight = FloatProperty(default=32)    #   formation temperature

    # Step for iteration over possible melting temperature thresholds, in deg C
    temp_threshold_step = FloatProperty(default=1)

    organism=StringProperty(default="e-coli")
Exemplo n.º 20
0
class SSMOutput(JsonObject):
    input_data = ObjectProperty(SSMInput, required=True)
    results = ListProperty(SSMMutationOutput, required=True)
    full_sequence = StringProperty(required=True)
    goi_offset = IntegerProperty(required=True)
    new_sequence_start = IntegerProperty(required=True)

    forward_flanking_primer_temperature = FloatProperty(required=True)
    reverse_flanking_primer_temperature = FloatProperty(required=True)
    min_three_end_temperature = FloatProperty()
    max_three_end_temperature = FloatProperty()
    min_overlap_temperature = FloatProperty()
    max_overlap_temperature = FloatProperty()
Exemplo n.º 21
0
class PASConfig(JsonObject):

    min_oligo_size = IntegerProperty(default=40)
    max_oligo_size = IntegerProperty(default=90)
    opt_oligo_size = IntegerProperty(default=56)

    min_overlap_tm = FloatProperty(default=50)
    max_overlap_tm = FloatProperty(default=65)
    opt_overlap_tm = IntegerProperty(default=56)  # this optimal temperature is for NEB like temperature calculator

    min_overlap_length = IntegerProperty(default=15)
    max_overlap_length = IntegerProperty(default=25)
    opt_overlap_length = IntegerProperty(default=21)

    min_gc_content = FloatProperty(default=40)
    max_gc_content = FloatProperty(default=60)

    use_degeneracy_codon = BooleanProperty(default=False)

    organism = StringProperty(default="e-coli")
    avoided_motifs = ListProperty(str)
    codon_usage_frequency_threshold = FloatProperty(default=0.1)

    # The allowed range for melting temperatures of fragment overlaps, in deg C
    temp_range_size = FloatProperty(default=5)

    # Temperature calculator configuration
    temperature_config = ObjectProperty(TemperatureConfig,
                                        default=create_default_pas_temperature_config())

    # Weights used for non_optimality calculation.
    temp_weight = FloatProperty(default=1)
    gc_content_weight = FloatProperty(default=1)
    length_weight = FloatProperty(default=1)
    hairpin_homodimer_weight = FloatProperty(default=2)

    # "Safe" temperature difference between a hairpin or homodimer formation and the reaction temperature
    safe_temp_difference = FloatProperty(default=10)

    # Step for iteration over possible melting temperature thresholds, in deg C
    temp_threshold_step = FloatProperty(default=1)
Exemplo n.º 22
0
class StagingMeterData(JsonObject):
    usage_point = (
        IntegerProperty()
    )  # DEPRECATED : OID of usage point objects in green button staging.
    usage_point_id = StringProperty()  # Use this instead.
    duration = IntegerProperty()
    address = ObjectProperty(StagingAddress)
    account_number = StringProperty()
    service_id = StringProperty()
    utility = StringProperty()
    tariff = StringProperty()
    commodity = StringProperty()

    def is_complete(self):
        record = self.to_json()
        record.pop("usage_point")
        return all(x is not None for x in record.values())

    def __eq__(self, other):
        if not isinstance(other, StagingMeterData):
            return False

        return self.to_json() == other.to_json()
Exemplo n.º 23
0
class SSMSequences(JsonObject):
    forward_primer = StringProperty(required=True)
    reverse_primer = StringProperty(required=True)
    gene_of_interest = StringProperty(required=True)
    five_end_flanking_sequence = StringProperty(default=None)
    three_end_flanking_sequence = StringProperty(default=None)
    plasmid = ObjectProperty(Plasmid, default=None)

    def get_full_sequence_with_offset(self) -> Tuple[str, Tuple[int, int]]:
        if self.plasmid is None:

            # TODO finish implementation of this option and write tests

            if self.five_end_flanking_sequence is None or self.three_end_flanking_sequence is None:
                raise ValueError("""If plasmid is not specified - \
five end flanking sequence and three end flanking sequence must be specified"""
                                 )
            five_end = self.get_five_end(self.five_end_flanking_sequence,
                                         self.forward_primer)
            three_end = self.get_three_end(self.three_end_flanking_sequence,
                                           self.reverse_primer)
        else:
            if self.five_end_flanking_sequence is not None or \
                    self.three_end_flanking_sequence is not None:
                raise ValueError(
                    "If plasmid is specified - flanking sequences must be empty"
                )
            five_end = self.plasmid.get_five_end(self.gene_of_interest,
                                                 self.forward_primer)
            three_end = self.plasmid.get_three_end(self.gene_of_interest,
                                                   self.reverse_primer)

        full_sequence = five_end + self.gene_of_interest + three_end
        offset = len(five_end)

        return full_sequence, (offset, offset + len(self.gene_of_interest))
Exemplo n.º 24
0
class CallCenterIndicatorConfig(JsonObject):
    forms_submitted = ObjectProperty(BasicIndicator)
    cases_total = ObjectProperty(ByTypeWithTotal)
    cases_active = ObjectProperty(ByTypeWithTotal)
    cases_opened = ObjectProperty(ByTypeWithTotal)
    cases_closed = ObjectProperty(ByTypeWithTotal)

    legacy_forms_submitted = BooleanProperty(False)
    legacy_cases_total = BooleanProperty(False)
    legacy_cases_active = BooleanProperty(False)

    custom_form = ListProperty(TypedIndicator)

    def includes_legacy(self):
        return (self.legacy_forms_submitted or self.legacy_cases_total
                or self.legacy_cases_active)

    @classmethod
    def default_config(cls, domain_name=None, include_legacy=True):
        def default_basic():
            return BasicIndicator(enabled=True,
                                  date_ranges=set(const.DATE_RANGES))

        def default_typed():
            return ByTypeWithTotal(totals=default_basic(), all_types=True)

        config = cls(
            forms_submitted=default_basic(),
            cases_total=default_typed(),
            cases_active=default_typed(),
            cases_opened=default_typed(),
            cases_closed=default_typed(),
        )

        config.legacy_forms_submitted = include_legacy
        config.legacy_cases_total = include_legacy
        config.legacy_cases_active = include_legacy

        for slug in const.PER_DOMAIN_FORM_INDICATORS.get(domain_name, {}):
            for range in const.DATE_RANGES:
                config.custom_form.append(
                    TypedIndicator(type=slug, date_range=range))

        return config

    def set_indicator(self, parsed_indicator):
        if parsed_indicator.is_legacy:
            indicator = getattr(self, parsed_indicator.category)
            setattr(self, 'legacy_{}'.format(parsed_indicator.category), True)
            if parsed_indicator.date_range:
                date_range = parsed_indicator.date_range
                if isinstance(indicator, ByTypeWithTotal):
                    indicator.totals.date_ranges.add(date_range)
                else:
                    indicator.date_ranges.add(date_range)
        elif parsed_indicator.category == const.CUSTOM_FORM:
            self.custom_form.append(
                TypedIndicator(enabled=True,
                               date_range=parsed_indicator.date_range,
                               type=parsed_indicator.type))
        elif parsed_indicator.category == const.FORMS_SUBMITTED:
            self.forms_submitted.enabled = True
            if parsed_indicator.date_range:
                self.forms_submitted.date_ranges.add(
                    parsed_indicator.date_range)
        else:
            indicator = getattr(self, parsed_indicator.category)
            if parsed_indicator.type:
                indicator = indicator.get_or_add_for_type(
                    parsed_indicator.type)
            else:
                indicator = indicator.totals

            indicator.enabled = True
            if parsed_indicator.date_range:
                indicator.date_ranges.add(parsed_indicator.date_range)
Exemplo n.º 25
0
 class Foo(JsonObject):
     # default string conversions
     bar = ObjectProperty(Bar)
Exemplo n.º 26
0
        class Foo(JsonObject):
            bar = ObjectProperty(Bar)

            class Meta(object):
                string_conversions = ()
Exemplo n.º 27
0
class PASOutput(JsonObject):
    input_data = ObjectProperty(PASInput, required=True)
    results = ListProperty(PASResult, required=False)
    message = StringProperty()
Exemplo n.º 28
0
class _FormMetadataQuestion(FormQuestionResponse):
    form_id = StringProperty()
    load_properties = ListProperty(LoadSaveProperty)
    save_properties = ListProperty(LoadSaveProperty)
    changes = ObjectProperty(_QuestionDiff)
Exemplo n.º 29
0
class InvalidCredentialsResponse(JsonObject):
    success = BooleanProperty(required=True)
    errors = ObjectProperty(_InvalidCredentialsErrors)

    def __eq__(self, other):
        return self.success == other.success and self.errors == other.errors
Exemplo n.º 30
0
class TelegramResponse(JsonObject):

    success = BooleanProperty(name='ok')
    result = ObjectProperty(SentMessage)
    description = StringProperty()
    parameters = ObjectProperty(ResponseParameters)