Region.__str__()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 2
rs 10
cc 1
1
"""
2
Region model
3
"""
4
from flask import url_for
5
6
from app.database import db
7
8
9
class Region(db.Model):
10
    """
11
    Regions where Rivers, Sections, and Gages exist
12
13
    Arguments:
14
        id (int): Primary Region Key
15
        name (str): Nice name
16
        slug (str): slug for url formatting
17
        description (text): Long description that can contain HTML or Markdown within reason.
18
        short_description (text): Short description, for showing on other pages.
19
        header_image (str): Header image to override default.
20
        rivers: List of ``River`` objects for Region.
21
        sections: List of ``Section`` objects for Region.
22
        gages: List of ``Gage`` objects for Region.
23
    """
24
    __tablename__ = 'regions'
25
26
    id = db.Column(db.Integer, primary_key=True)
27
    name = db.Column(db.String(80))
28
    slug = db.Column(db.String(80), index=True)
29
    description = db.Column(db.Text)
30
    short_description = db.Column(db.Text)
31
    header_image = db.Column(db.String(80))
32
33
    def to_json(self):
34
        """
35
        Create a JSON object from region. Used where multiple regions may be
36
        displayed simultaneously.
37
        """
38
        json_region = {
39
            'id': self.id,
40
            'name': self.name,
41
            'url': url_for('api.get_region', rid=self.id, _external=True),
42
            'html': url_for('main.regionpage', slug=self.slug, _external=True),
43
        }
44
        return json_region
45
46
    def to_long_json(self):
47
        """
48
        Create a JSON object from region. Used when only one region is to be
49
        displayed.
50
        """
51
        json_region = {
52
            'id': self.id,
53
            'name': self.name,
54
            'description': self.description,
55
            'sections': [section.to_json() for section in self.sections],
56
            'gages': [gage.to_json() for gage in self.gages],
57
            'rivers': [river.to_json for river in self.rivers],
58
            'url': url_for('api.get_region', rid=self.id, _external=True),
59
            'html': url_for('main.regionpage', slug=self.slug, _external=True)
60
        }
61
        return json_region
62
63
    def __repr__(self):
64
        return '<Region %r>' % self.name
65
    
66
    def __str__(self):
67
        return self.name